diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 09:17:26 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 09:17:26 +0300 |
| commit | 84b81badbb4fab7a735b82e28d5cd47ecfbecb64 (patch) | |
| tree | c01e5da24736d05600be9adb3758589dcb105b75 /go-src/windows.go | |
| parent | ca0222aba7c5f8dd4761736d2ca79829cb13ff92 (diff) | |
| download | ctfc-84b81badbb4fab7a735b82e28d5cd47ecfbecb64.tar ctfc-84b81badbb4fab7a735b82e28d5cd47ecfbecb64.tar.gz ctfc-84b81badbb4fab7a735b82e28d5cd47ecfbecb64.zip | |
Implemented a very basic chats window
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 |
