discordo/internal/ui/root/events.go
2026-04-03 00:18:50 -04:00

64 lines
1.3 KiB
Go

package root
import (
"log/slog"
"github.com/ayn2op/discordo/internal/clipboard"
"github.com/ayn2op/discordo/internal/keyring"
"github.com/ayn2op/tview"
"github.com/gdamore/tcell/v3"
)
type tokenEvent struct {
tcell.EventTime
token string
}
func tokenCommand(token string) tview.Cmd {
return func() tview.Event {
return &tokenEvent{token: token}
}
}
type loginEvent struct{ tcell.EventTime }
func getToken() tview.Cmd {
return func() tview.Event {
token, err := keyring.GetToken()
if err != nil {
slog.Info("failed to retrieve token from keyring", "err", err)
return &loginEvent{}
}
return &tokenEvent{token: token}
}
}
func setToken(token string) tview.Cmd {
return func() tview.Event {
if err := keyring.SetToken(token); err != nil {
slog.Error("failed to set token to keyring", "err", err)
return tcell.NewEventError(err)
}
return nil
}
}
func deleteToken() tview.Cmd {
return func() tview.Event {
if err := keyring.DeleteToken(); err != nil {
slog.Error("failed to delete token from keyring", "err", err)
return tcell.NewEventError(err)
}
return nil
}
}
func initClipboard() tview.Cmd {
return func() tview.Event {
if err := clipboard.Init(); err != nil {
slog.Error("failed to init clipboard", "err", err)
return tcell.NewEventError(err)
}
return nil
}
}