main.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "log"
  6. "github.com/rivo/tview"
  7. )
  8. var (
  9. token string
  10. config *Config
  11. discordState *State
  12. app = tview.NewApplication()
  13. flex = tview.NewFlex()
  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. config, err = newConfig()
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. // Initialize UI
  29. guildsTree = newGuildsTree()
  30. messagesText = newMessagesText()
  31. messageInput = newMessageInput()
  32. discordState = newState(token)
  33. err = discordState.Open(context.Background())
  34. if 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. // The guilds tree is always focused first at start-up.
  42. flex.AddItem(guildsTree, 0, 1, true)
  43. flex.AddItem(right, 0, 4, false)
  44. app.EnableMouse(config.Mouse)
  45. app.SetRoot(flex, true)
  46. err = app.Run()
  47. if err != nil {
  48. log.Fatal(err)
  49. }
  50. }