From 8eeb2aa53a836b2efce5bfcc45a3108061c82f8d Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Tue, 16 Apr 2024 17:26:11 -0700 Subject: [PATCH] add config setting for save queue to server --- backend/app.go | 12 ++++++++++-- backend/config.go | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/backend/app.go b/backend/app.go index b3dbc5b..24ec723 100644 --- a/backend/app.go +++ b/backend/app.go @@ -11,6 +11,7 @@ import ( "slices" "time" + "github.com/dweymouth/supersonic/backend/mediaprovider" "github.com/dweymouth/supersonic/backend/player" "github.com/dweymouth/supersonic/backend/player/mpv" "github.com/dweymouth/supersonic/backend/util" @@ -305,7 +306,13 @@ func (a *App) Shutdown() { a.MPRISHandler.Shutdown() a.PlaybackManager.DisableCallbacks() if a.Config.Application.SavePlayQueue { - SavePlayQueue(a.ServerManager.ServerID.String(), a.PlaybackManager, configdir.LocalConfig(a.appName, savedQueueFile), nil) + var queueServer mediaprovider.CanSavePlayQueue = nil + if a.Config.Application.SaveQueueToServer { + if qs, ok := a.ServerManager.Server.(mediaprovider.CanSavePlayQueue); ok { + queueServer = qs + } + } + SavePlayQueue(a.ServerManager.ServerID.String(), a.PlaybackManager, configdir.LocalConfig(a.appName, savedQueueFile), queueServer) } a.PlaybackManager.Stop() // will trigger scrobble check a.Config.LocalPlayback.Volume = a.LocalPlayer.GetVolume() @@ -316,7 +323,8 @@ func (a *App) Shutdown() { } func (a *App) LoadSavedPlayQueue() error { - queue, err := LoadPlayQueue(configdir.LocalConfig(a.appName, savedQueueFile), a.ServerManager, false) + queueFilePath := configdir.LocalConfig(a.appName, savedQueueFile) + queue, err := LoadPlayQueue(queueFilePath, a.ServerManager, a.Config.Application.SaveQueueToServer) if err != nil { return err } diff --git a/backend/config.go b/backend/config.go index dcb8402..1c980f5 100644 --- a/backend/config.go +++ b/backend/config.go @@ -42,6 +42,7 @@ type AppConfig struct { AllowMultiInstance bool MaxImageCacheSizeMB int SavePlayQueue bool + SaveQueueToServer bool DefaultPlaylistID string ShowTrackChangeNotification bool @@ -155,7 +156,8 @@ func DefaultConfig(appVersionTag string) *Config { AllowMultiInstance: false, MaxImageCacheSizeMB: 50, UIScaleSize: "Normal", - SavePlayQueue: false, + SavePlayQueue: true, + SaveQueueToServer: false, ShowTrackChangeNotification: false, }, AlbumPage: AlbumPageConfig{