run.go 939 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package cmd
  2. import (
  3. "log"
  4. "github.com/ayn2op/discordo/internal/config"
  5. "github.com/ayn2op/discordo/internal/logger"
  6. "github.com/rivo/tview"
  7. )
  8. var (
  9. discordState *State
  10. cfg *config.Config
  11. app = tview.NewApplication()
  12. mainFlex *MainFlex
  13. )
  14. func Run(token string) error {
  15. if err := logger.Load(); err != nil {
  16. return err
  17. }
  18. var err error
  19. cfg, err = config.Load()
  20. if err != nil {
  21. return err
  22. }
  23. // mainFlex must be initialized before opening a new state.
  24. mainFlex = newMainFlex()
  25. if token == "" {
  26. lf := NewLoginForm(func(token string, err error) {
  27. if err != nil {
  28. app.Stop()
  29. log.Fatal(err)
  30. }
  31. if err := openState(token); err != nil {
  32. app.Stop()
  33. log.Fatal(err)
  34. }
  35. app.SetRoot(mainFlex, true)
  36. })
  37. app.SetRoot(lf, true)
  38. } else {
  39. if err := openState(token); err != nil {
  40. return err
  41. }
  42. app.SetRoot(mainFlex, true)
  43. }
  44. app.EnableMouse(cfg.Mouse)
  45. return app.Run()
  46. }