refactor: reduce onMessagesViewInputCapture() cyclomatic complexity
This commit is contained in:
parent
f486f54f1c
commit
8001a530aa
2 changed files with 29 additions and 54 deletions
75
ui.go
75
ui.go
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
8
util.go
8
util.go
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue