diff --git a/login_form.go b/login_form.go index cf3adc0..5d1649e 100644 --- a/login_form.go +++ b/login_form.go @@ -69,6 +69,21 @@ func (lf *LoginForm) onLoginButtonSelected() { log.Fatal(err) } - mainFlex = newMainFlex() + discordState = newState(token) + err = discordState.Open(context.Background()) + if err != nil { + log.Fatal(err) + } + + right := tview.NewFlex() + right.SetDirection(tview.FlexRow) + right.AddItem(messagesText, 0, 1, false) + right.AddItem(messageInput, 3, 1, false) + + // The guilds tree is always focused first at start-up. + mainFlex.AddItem(guildsTree, 0, 1, true) + mainFlex.AddItem(right, 0, 4, false) + + mainFlex.SetInputCapture(onInputCapture) app.SetRoot(mainFlex, true) } diff --git a/main.go b/main.go index 1fdb873..2196a1d 100644 --- a/main.go +++ b/main.go @@ -19,7 +19,7 @@ var ( discordState *State app = tview.NewApplication() - mainFlex *MainFlex + mainFlex = tview.NewFlex() guildsTree *GuildsTree messagesText *MessagesText messageInput *MessageInput @@ -69,6 +69,11 @@ func main() { log.Fatal(err) } + // Initialize UI widgets + guildsTree = newGuildsTree() + messagesText = newMessagesText() + messageInput = newMessageInput() + // mission failed, we'll get 'em next time if token == "" { app.SetRoot(newLoginForm(), true) @@ -79,7 +84,16 @@ func main() { log.Fatal(err) } - mainFlex = newMainFlex() + right := tview.NewFlex() + right.SetDirection(tview.FlexRow) + right.AddItem(messagesText, 0, 1, false) + right.AddItem(messageInput, 3, 1, false) + + // The guilds tree is always focused first at start-up. + mainFlex.AddItem(guildsTree, 0, 1, true) + mainFlex.AddItem(right, 0, 4, false) + + mainFlex.SetInputCapture(onInputCapture) app.SetRoot(mainFlex, true) } diff --git a/main_flex.go b/main_flex.go index e2895ff..711d68d 100644 --- a/main_flex.go +++ b/main_flex.go @@ -4,38 +4,9 @@ import ( "log" "github.com/gdamore/tcell/v2" - "github.com/rivo/tview" ) -type MainFlex struct { - *tview.Flex -} - -func newMainFlex() *MainFlex { - mf := &MainFlex{ - Flex: tview.NewFlex(), - } - - // Initialize UI widgets - guildsTree = newGuildsTree() - messagesText = newMessagesText() - messageInput = newMessageInput() - - right := tview.NewFlex() - right.SetDirection(tview.FlexRow) - right.AddItem(messagesText, 0, 1, false) - right.AddItem(messageInput, 3, 1, false) - - // The guilds tree is always focused first at start-up. - mf.AddItem(guildsTree, 0, 1, true) - mf.AddItem(right, 0, 4, false) - - mf.SetInputCapture(mainFlex.onInputCapture) - - return mf -} - -func (mf *MainFlex) onInputCapture(event *tcell.EventKey) *tcell.EventKey { +func onInputCapture(event *tcell.EventKey) *tcell.EventKey { log.Println(event.Name()) switch event.Name() { case cfg.Keys.GuildsTree.Focus: