run.go 995 B

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