aboutsummaryrefslogtreecommitdiff
path: root/go-src/windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'go-src/windows.go')
-rw-r--r--go-src/windows.go57
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()
}