diff options
Diffstat (limited to 'go-src/windows.go')
| -rw-r--r-- | go-src/windows.go | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/go-src/windows.go b/go-src/windows.go index 983d450..a92d239 100644 --- a/go-src/windows.go +++ b/go-src/windows.go @@ -89,9 +89,52 @@ func registerWindow(values ...string) { } } -func chatsWindow(...string) { - fmt.Println("Works!") - fmt.Println(loggedInUser) +func chatsWindow(values ...string) { + clearScreen() + + fmt.Println(ui.NormalBox(true, "Direct Messages", "Account", "Logout")) + fmt.Println(ui.PageField(0, 0)) + fmt.Println(ui.EmptyLine()) + + if len(values) > 0 { + if values[len(values)-1] == "ShowHelp" { + fmt.Println(ui.TextField("Chats page options: [(D)irect messages/(A)ccount/(L)ogout/(<) for previous page/(>) for next page/(C) for create chat/(name) for go to chat room by name/(number) for go to chat room by number/(H)elp]")) + } + } + fmt.Print(ui.InputField("[D/A/L/</>/C/E/name/number/H]")) + + val := ui.GetInput() + + handled := handleInputActions(val, true, + inputAction{"H", chatsWindow, []string{"ShowHelp"}}, + ) + if !handled { + defer showError(invalidCommand, chatsWindow) + } +} + +type inputAction struct { + value string + execute func(...string) + args []string +} + +func handleInputActions(input string, handleNav bool, ia ...inputAction) bool { + if handleNav { + ia = append(ia, + inputAction{"C", chatsWindow, nil}, + inputAction{"D", chatsWindow, nil}, + inputAction{"A", chatsWindow, nil}, + inputAction{"L", chatsWindow, nil}, + ) + } + for _, v := range ia { + if input == v.value { + defer v.execute(v.args...) + return true + } + } + return false } var clearNext = true |
