aboutsummaryrefslogtreecommitdiff
path: root/go-src/windows.go
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-07-09 09:17:26 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-07-09 09:17:26 +0300
commit84b81badbb4fab7a735b82e28d5cd47ecfbecb64 (patch)
treec01e5da24736d05600be9adb3758589dcb105b75 /go-src/windows.go
parentca0222aba7c5f8dd4761736d2ca79829cb13ff92 (diff)
downloadctfc-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.go49
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