refactor: reduce onMessagesViewInputCapture() cyclomatic complexity

This commit is contained in:
ayntgl 2021-10-16 21:21:38 +04:00
parent f486f54f1c
commit 8001a530aa
2 changed files with 29 additions and 54 deletions

75
ui.go
View file

@ -11,7 +11,7 @@ import (
var (
selectedChannel *discordgo.Channel
selectedMessage int
selectedMessage int = -1
)
func newApp() *tview.Application {
@ -127,94 +127,69 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
return nil
}
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
switch e.Name() {
case conf.Keybindings.MessagesView.SelectPrevious:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
if len(messagesView.GetHighlights()) == 0 {
selectedMessage = len(ms)
selectedMessage = len(ms) - 1
} else {
selectedMessage--
if selectedMessage < 1 {
selectedMessage = 1
if selectedMessage < 0 {
selectedMessage = 0
}
}
messagesView.
Highlight(ms[selectedMessage-1].ID).
Highlight(ms[selectedMessage].ID).
ScrollToHighlight()
return nil
case conf.Keybindings.MessagesView.SelectNext:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
if len(messagesView.GetHighlights()) == 0 {
selectedMessage = len(ms)
selectedMessage = len(ms) - 1
} else {
selectedMessage++
if selectedMessage > len(ms) {
selectedMessage = len(ms)
if selectedMessage >= len(ms) {
selectedMessage = len(ms) - 1
}
}
messagesView.
Highlight(ms[selectedMessage-1].ID).
Highlight(ms[selectedMessage].ID).
ScrollToHighlight()
return nil
case conf.Keybindings.MessagesView.SelectFirst:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
selectedMessage = 1
selectedMessage = 0
messagesView.
Highlight(ms[selectedMessage-1].ID).
Highlight(ms[selectedMessage].ID).
ScrollToHighlight()
case conf.Keybindings.MessagesView.SelectLast:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
selectedMessage = len(ms)
selectedMessage = len(ms) - 1
messagesView.
Highlight(ms[selectedMessage-1].ID).
Highlight(ms[selectedMessage].ID).
ScrollToHighlight()
case conf.Keybindings.MessagesView.Reply:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
hs := messagesView.GetHighlights()
if len(hs) == 0 {
return nil
}
selectedMessage = findIndexByMessageID(hs[0]) + 1
messageInputField.SetTitle("Replying to " + ms[selectedMessage-1].Author.Username)
m := findByMessageID(hs[0])
messageInputField.SetTitle("Replying to " + m.Author.Username)
app.SetFocus(messageInputField)
case conf.Keybindings.MessagesView.ReplyMention:
ms := selectedChannel.Messages
if len(ms) == 0 {
return nil
}
hs := messagesView.GetHighlights()
if len(hs) == 0 {
return nil
}
selectedMessage = findIndexByMessageID(hs[0]) + 1
messageInputField.SetTitle("[@] Replying to " + ms[selectedMessage-1].Author.Username)
m := findByMessageID(hs[0])
messageInputField.SetTitle("[@] Replying to " + m.Author.Username)
app.SetFocus(messageInputField)
}
@ -252,8 +227,8 @@ func onMessageInputFieldInputCapture(e *tcell.EventKey) *tcell.EventKey {
return nil
}
if selectedMessage != 0 {
m := selectedChannel.Messages[selectedMessage-1]
if len(messagesView.GetHighlights()) != 0 {
m := selectedChannel.Messages[selectedMessage]
d := &discordgo.MessageSend{
Content: t,
Reference: m.Reference(),
@ -280,7 +255,7 @@ func onMessageInputFieldInputCapture(e *tcell.EventKey) *tcell.EventKey {
messageInputField.SetText("")
messageInputField.SetTitle("")
selectedMessage = 0
selectedMessage = -1
messagesView.Highlight()
}

View file

@ -27,14 +27,14 @@ func generateChannelRepr(c *discordgo.Channel) string {
return repr
}
func findIndexByMessageID(mID string) int {
for i, m := range selectedChannel.Messages {
func findByMessageID(mID string) *discordgo.Message {
for _, m := range selectedChannel.Messages {
if m.ID == mID {
return i
return m
}
}
return -1
return nil
}
func createPrivateChannels(cs []*discordgo.Channel, dmNode *tview.TreeNode) {