events.go 983 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package root
  2. import (
  3. "log/slog"
  4. "os"
  5. "github.com/ayn2op/discordo/internal/clipboard"
  6. "github.com/ayn2op/discordo/internal/keyring"
  7. "github.com/gdamore/tcell/v3"
  8. )
  9. type tokenEvent struct {
  10. tcell.EventTime
  11. token string
  12. }
  13. func newTokenEvent(token string) *tokenEvent {
  14. event := &tokenEvent{token: token}
  15. event.SetEventNow()
  16. return event
  17. }
  18. func getToken() tcell.Event {
  19. token := os.Getenv(tokenEnvVarKey)
  20. if token == "" {
  21. tok, err := keyring.GetToken()
  22. if err != nil {
  23. slog.Info("failed to retrieve token from keyring", "err", err)
  24. }
  25. token = tok
  26. }
  27. return newTokenEvent(token)
  28. }
  29. func deleteToken() tcell.Event {
  30. if err := keyring.DeleteToken(); err != nil {
  31. slog.Error("failed to delete token from keyring", "err", err)
  32. return tcell.NewEventError(err)
  33. }
  34. return nil
  35. }
  36. func initClipboard() tcell.Event {
  37. if err := clipboard.Init(); err != nil {
  38. slog.Error("failed to init clipboard", "err", err)
  39. return tcell.NewEventError(err)
  40. }
  41. return nil
  42. }