refactor(keyring): new package

This commit is contained in:
ayn2op 2025-11-06 21:10:22 -05:00
parent a5b847afe9
commit 45003fca41
4 changed files with 31 additions and 10 deletions

View file

@ -4,12 +4,11 @@ import (
"log/slog" "log/slog"
"github.com/ayn2op/discordo/internal/config" "github.com/ayn2op/discordo/internal/config"
"github.com/ayn2op/discordo/internal/consts" "github.com/ayn2op/discordo/internal/keyring"
"github.com/ayn2op/discordo/internal/login" "github.com/ayn2op/discordo/internal/login"
"github.com/ayn2op/discordo/internal/ui" "github.com/ayn2op/discordo/internal/ui"
"github.com/ayn2op/tview" "github.com/ayn2op/tview"
"github.com/gdamore/tcell/v2" "github.com/gdamore/tcell/v2"
"github.com/zalando/go-keyring"
) )
const ( const (
@ -130,7 +129,7 @@ func (a *application) onPagesInputCapture(event *tcell.EventKey) *tcell.EventKey
case a.cfg.Keys.Logout: case a.cfg.Keys.Logout:
a.quit() a.quit()
if err := keyring.Delete(consts.Name, "token"); err != nil { if err := keyring.DeleteToken(); err != nil {
slog.Error("failed to delete token from keyring", "err", err) slog.Error("failed to delete token from keyring", "err", err)
return nil return nil
} }

View file

@ -8,12 +8,11 @@ import (
"os" "os"
"github.com/ayn2op/discordo/internal/config" "github.com/ayn2op/discordo/internal/config"
"github.com/ayn2op/discordo/internal/consts" "github.com/ayn2op/discordo/internal/keyring"
"github.com/ayn2op/discordo/internal/logger" "github.com/ayn2op/discordo/internal/logger"
"github.com/ayn2op/tview" "github.com/ayn2op/tview"
"github.com/diamondburned/arikawa/v3/utils/ws" "github.com/diamondburned/arikawa/v3/utils/ws"
"github.com/diamondburned/ningen/v3" "github.com/diamondburned/ningen/v3"
"github.com/zalando/go-keyring"
) )
var ( var (
@ -54,7 +53,7 @@ func Run() error {
token := *tokenFlag token := *tokenFlag
if token == "" { if token == "" {
token, err = keyring.Get(consts.Name, "token") token, err = keyring.GetToken()
if err != nil { if err != nil {
slog.Info("failed to retrieve token from keyring", "err", err) slog.Info("failed to retrieve token from keyring", "err", err)
} }

View file

@ -0,0 +1,23 @@
package keyring
import (
"github.com/ayn2op/discordo/internal/consts"
"github.com/zalando/go-keyring"
)
const (
keyringService = consts.Name
keyringUser = "token"
)
func GetToken() (string, error) {
return keyring.Get(keyringService, keyringUser)
}
func SetToken(s string) error {
return keyring.Set(keyringService, keyringUser, s)
}
func DeleteToken() error {
return keyring.Delete(keyringService, keyringUser)
}

View file

@ -5,12 +5,11 @@ import (
"log/slog" "log/slog"
"github.com/ayn2op/discordo/internal/config" "github.com/ayn2op/discordo/internal/config"
"github.com/ayn2op/discordo/internal/consts"
"github.com/ayn2op/discordo/internal/http" "github.com/ayn2op/discordo/internal/http"
"github.com/ayn2op/discordo/internal/keyring"
"github.com/ayn2op/discordo/internal/ui" "github.com/ayn2op/discordo/internal/ui"
"github.com/ayn2op/tview" "github.com/ayn2op/tview"
"github.com/diamondburned/arikawa/v3/api" "github.com/diamondburned/arikawa/v3/api"
"github.com/zalando/go-keyring"
"golang.design/x/clipboard" "golang.design/x/clipboard"
) )
@ -91,7 +90,7 @@ func (f *Form) login() {
return return
} }
go keyring.Set(consts.Name, "token", resp.Token) go keyring.SetToken(resp.Token)
if f.done != nil { if f.done != nil {
f.done(resp.Token) f.done(resp.Token)
@ -131,7 +130,8 @@ func (f *Form) loginWithQR() {
return return
} }
go keyring.Set(consts.Name, "token", token) go keyring.SetToken(token)
f.RemovePage(qrPageName) f.RemovePage(qrPageName)
if f.done != nil { if f.done != nil {
f.done(token) f.done(token)