main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "log"
  6. "github.com/rivo/tview"
  7. )
  8. var (
  9. token string
  10. cfg *Config
  11. discordState *State
  12. app *tview.Application
  13. flex *tview.Flex
  14. guildsTree *GuildsTree
  15. messagesText *MessagesText
  16. messageInput *MessageInput
  17. )
  18. func init() {
  19. flag.StringVar(&token, "token", "", "The authentication token.")
  20. }
  21. func main() {
  22. flag.Parse()
  23. var err error
  24. cfg, err = newConfig()
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. // Initialize UI
  29. app = tview.NewApplication()
  30. guildsTree = newGuildsTree()
  31. messagesText = newMessagesText()
  32. messageInput = newMessageInput()
  33. discordState = newState(token)
  34. if err = discordState.Open(context.Background()); err != nil {
  35. log.Fatal(err)
  36. }
  37. right := tview.NewFlex()
  38. right.SetDirection(tview.FlexRow)
  39. right.AddItem(messagesText, 0, 1, false)
  40. right.AddItem(messageInput, 3, 1, false)
  41. flex = tview.NewFlex()
  42. flex.AddItem(guildsTree, 0, 1, false)
  43. flex.AddItem(right, 0, 4, false)
  44. app.EnableMouse(cfg.Mouse)
  45. app.SetRoot(flex, true)
  46. if err = app.Run(); err != nil {
  47. log.Fatal(err)
  48. }
  49. }