diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 13:58:13 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-09 13:58:13 +0300 |
| commit | 366a50ac99594311268512e6fe3e158a63793683 (patch) | |
| tree | cffc5fa3525715e3e8b0f353df60515fb0042f68 /go-src/windows.go | |
| parent | f0c2a9ea2f7bd7cf8cee14c6184a7998c8aad89b (diff) | |
| download | ctfc-366a50ac99594311268512e6fe3e158a63793683.tar ctfc-366a50ac99594311268512e6fe3e158a63793683.tar.gz ctfc-366a50ac99594311268512e6fe3e158a63793683.zip | |
Implemented going back in pages that use forms and implemented basic creation and getting of chats
Diffstat (limited to 'go-src/windows.go')
| -rw-r--r-- | go-src/windows.go | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/go-src/windows.go b/go-src/windows.go index d442287..183849e 100644 --- a/go-src/windows.go +++ b/go-src/windows.go @@ -10,6 +10,8 @@ import ( "gitlab.com/Syndamia/ctfc/go-src/ui" ) +type window func(...string) + func StartupWindow(...string) { clearScreen() @@ -26,11 +28,14 @@ func StartupWindow(...string) { } func loginWindow(values ...string) { - inputs := formWindow("Login", []formInput{ - {"Username", "", nil}, + inputs := formWindow("Login", StartupWindow, []formInput{ + {"Username", " or [B for Back to start page]", nil}, {"Password", "", nil}, }, values..., ) + if len(inputs) == 0 { + return + } if logInUser(inputs[0], inputs[1]) { defer chatsWindow() @@ -40,12 +45,15 @@ func loginWindow(values ...string) { } func registerWindow(values ...string) { - inputs := formWindow("Register", []formInput{ - {"Username", " [A-z, 0-9, *, ., _, -; at least 1 letter]", stringValidUsername}, + inputs := formWindow("Register", StartupWindow, []formInput{ + {"Username", " [A-z, 0-9, *, ., _, -; at least 1 letter] or [B for Back to start page]", stringValidUsername}, {"Password", " [5-40 characters; at least 1 number]", stringValidPassword}, {"Name", " [2-60 characters]", stringValidName}, }, values..., ) + if len(inputs) == 0 { + return + } createUser(inputs) logInUser(inputs[0], inputs[1]) @@ -67,6 +75,7 @@ func chatsWindow(values ...string) { input := ui.InputField("[D/A/L/</>/C/E/name/number/H]") handled := handleInputActions(input, true, + inputAction{"C", createChatWindow, nil}, inputAction{"H", chatsWindow, []string{"ShowHelp"}}, ) if !handled { @@ -74,6 +83,25 @@ func chatsWindow(values ...string) { } } +func createChatWindow(values ...string) { + inputs := formWindow("Creating a new chat", chatsWindow, []formInput{ + {"Name", " [2-20 characters; A-z, 0-9, spaces, _, -] or [B for Back to chats page]", stringValidChatName}, + {"Description", " [0-30 characters]", stringValidChatDesc}, + }, values..., + ) + if len(inputs) == 0 { + return + } + + createChat(inputs[0], inputs[1], loggedInUser.Username) + defer chatWindow(inputs[0]) +} + +func chatWindow(values ...string) { + currChat := getChat(values[0]) + fmt.Println(currChat) +} + func logoutWindow(...string) { clearScreen() @@ -98,9 +126,9 @@ type formInput struct { validationFunc func(string) bool } -func formWindow(boxTitle string, formInputs []formInput, currentValues ...string) (userInputs []string) { +func formWindow(boxTitle string, backWindow window, formInputs []formInput, currentValues ...string) (userInputs []string) { userInputs = currentValues - for _, v := range formInputs[len(currentValues):] { + for i, v := range formInputs[len(currentValues):] { clearScreen() ui.NormalBox(true, boxTitle) @@ -111,10 +139,15 @@ func formWindow(boxTitle string, formInputs []formInput, currentValues ...string input := ui.InputField(v.name + v.specification) + if i == 0 && backWindow != nil && strings.ToLower(input) == "b" { + defer backWindow() + return + } + if v.validationFunc != nil { if !v.validationFunc(input) { formCallback := func(...string) { - defer formWindow(boxTitle, formInputs, userInputs...) + defer formWindow(boxTitle, backWindow, formInputs, userInputs...) } defer showError(invalidValueFor(v.name), formCallback) return @@ -130,7 +163,7 @@ func formWindow(boxTitle string, formInputs []formInput, currentValues ...string type inputAction struct { value string - execute func(...string) + execute window args []string } @@ -156,7 +189,7 @@ func handleInputActions(input string, handleNav bool, ia ...inputAction) bool { var clearNext = true -func showError(message string, callback func(...string), callbackData ...string) { +func showError(message string, callback window, callbackData ...string) { clearScreen() ui.ErrorBox(message) |
