diff --git a/backend/servermanager.go b/backend/servermanager.go index f71f7e0..4abebf9 100644 --- a/backend/servermanager.go +++ b/backend/servermanager.go @@ -5,6 +5,7 @@ import ( "github.com/dweymouth/go-subsonic/subsonic" "github.com/google/uuid" + "github.com/zalando/go-keyring" ) type ServerManager struct { @@ -39,3 +40,11 @@ func (s *ServerManager) ConnectToServer(conf *ServerConfig, password string) err func (s *ServerManager) OnServerConnected(cb func()) { s.onServerConnected = append(s.onServerConnected, cb) } + +func (s *ServerManager) GetServerPassword(server *ServerConfig) (string, error) { + return keyring.Get(AppName, server.ID.String()) +} + +func (s *ServerManager) SetServerPassword(server *ServerConfig, password string) error { + return keyring.Set(AppName, server.ID.String(), password) +} diff --git a/main.go b/main.go index 5ec929c..3ea468a 100644 --- a/main.go +++ b/main.go @@ -10,7 +10,6 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "github.com/20after4/configdir" - "github.com/zalando/go-keyring" ) const ( @@ -51,8 +50,7 @@ func main() { if defaultServer == nil { mainWindow.PromptForFirstServer(func(nick, host, user, pass string) { server := myApp.Config.AddServer(nick, host, user) - err := keyring.Set(appname, server.ID.String(), pass) - if err != nil { + if err := myApp.ServerManager.SetServerPassword(server, pass); err != nil { log.Printf("error setting keyring credentials: %v", err) // TODO: handle? } @@ -70,13 +68,14 @@ func main() { mainWindow.Window.Close() }) fyneApp.Run() + + // shutdown tasks myApp.Config.WriteConfigFile(configPath()) myApp.Shutdown() - } func setupServer(app *backend.App, server *backend.ServerConfig) { - pass, err := keyring.Get(appname, server.ID.String()) + pass, err := app.ServerManager.GetServerPassword(server) if err != nil { log.Printf("error getting password from keyring: %v", err) }