diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-09-11 15:30:28 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-09-11 15:30:28 +0300 |
| commit | 636ba9a01f7f4c7bbd4c40f65d2d8d00d27d3564 (patch) | |
| tree | bc7d8e17bb678d7d7d5811bee2e32cc9604aadf9 /go-src/windows.go | |
| parent | 695dc46d540befe8486eb647c60d08ab0236fa60 (diff) | |
| download | ctfc-636ba9a01f7f4c7bbd4c40f65d2d8d00d27d3564.tar ctfc-636ba9a01f7f4c7bbd4c40f65d2d8d00d27d3564.tar.gz ctfc-636ba9a01f7f4c7bbd4c40f65d2d8d00d27d3564.zip | |
Abstracted if-else logic for changing page and entering number/text input value in chats page
Diffstat (limited to 'go-src/windows.go')
| -rw-r--r-- | go-src/windows.go | 57 |
1 files changed, 17 insertions, 40 deletions
diff --git a/go-src/windows.go b/go-src/windows.go index c8e7234..31c2fb0 100644 --- a/go-src/windows.go +++ b/go-src/windows.go @@ -111,26 +111,14 @@ func chatsWindow(values ...string) { ) if nextWindow == nil { - // If user input is number, navigate to chat of given number, else show error - if chatI, err := strconv.Atoi(input); chatI >= 0 && chatI <= len(allChats) && err == nil { - defer chatWindow(strings.Split(allChats[utils.MaxInt(len(allChats)-pageSize*len(values[0]), 0)+chatI-1], " : ")[0]) - } else if input == ">" { - // If possible, increment to the next page (adds a dot to the end of the string) - if len(values[0]) < totalPages(len(allChats)) { - values[0] += "." - } - defer chatsWindow(values...) - } else if input == "<" { - // If possible, decrement to the previous page (removes a dot from the string) - if len(values[0]) > 1 { - utils.StrShortenRight(&values[0], 1) - } - defer chatsWindow(values...) - } else if chatNameExists(input) { - defer chatWindow(input) - } else { - defer showError(invalidCommand, chatsWindow) - } + defer handleComplexInputActions(input, + allChats, + " : ", + &values[0], + chatsWindow, + chatWindow, + chatNameExists, + ) } else { defer nextWindow() } @@ -253,26 +241,15 @@ func directMessagesWindow(values ...string) { ) if nextWindow == nil { - // If user input is number, navigate to chat of given number, else show error - if chatI, err := strconv.Atoi(input); chatI >= 0 && chatI <= len(allDirectMessageChats) && err == nil { - defer directMessageWindow(strings.Trim(strings.Split(allDirectMessageChats[utils.MaxInt(len(allDirectMessageChats)-pageSize*len(values[0]), 0)+chatI-1], " (")[1], ")")) - } else if input == ">" { - // If possible, increment to the next page (adds a dot to the end of the string) - if len(values[0]) < totalPages(len(allDirectMessageChats)) { - values[0] += "." - } - defer directMessagesWindow(values...) - } else if input == "<" { - // If possible, decrement to the previous page (removes a dot from the string) - if len(values[0]) > 1 { - utils.StrShortenRight(&values[0], 1) - } - defer directMessagesWindow(values...) - } else if usernameExists(input) { - defer directMessageWindow(input) - } else { - defer showError(invalidCommand, chatsWindow) - } + values[0] = values[0][:len(values[0])-1] + defer handleComplexInputActions(input, + allDirectMessageChats, + " (", + &values[0], + directMessagesWindow, + directMessageWindow, + usernameExists, + ) } else { defer nextWindow() } |
