main.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. channelsTree *ChannelsTree
  16. messagesText *MessagesText
  17. messageInput *MessageInput
  18. )
  19. func init() {
  20. flag.StringVar(&token, "token", "", "The authentication token.")
  21. }
  22. func main() {
  23. flag.Parse()
  24. var err error
  25. cfg, err = newConfig()
  26. if err != nil {
  27. log.Fatal(err)
  28. }
  29. // Initialize UI
  30. app = tview.NewApplication()
  31. guildsTree = newGuildsTree()
  32. channelsTree = newChannelsTree()
  33. messagesText = newMessagesText()
  34. messageInput = newMessageInput()
  35. discordState = newState(token)
  36. if err = discordState.Open(context.Background()); err != nil {
  37. log.Fatal(err)
  38. }
  39. left := tview.NewFlex()
  40. left.SetDirection(tview.FlexRow)
  41. left.AddItem(guildsTree, 0, 1, true)
  42. left.AddItem(channelsTree, 0, 1, false)
  43. right := tview.NewFlex()
  44. right.SetDirection(tview.FlexRow)
  45. right.AddItem(messagesText, 0, 1, false)
  46. right.AddItem(messageInput, 3, 1, false)
  47. flex = tview.NewFlex()
  48. flex.AddItem(left, 0, 1, false)
  49. flex.AddItem(right, 0, 4, false)
  50. app.EnableMouse(cfg.Mouse)
  51. app.SetRoot(flex, true)
  52. if err = app.Run(); err != nil {
  53. log.Fatal(err)
  54. }
  55. }