build(deps): upgrade deps to latest
This commit is contained in:
parent
adda09d1ca
commit
51beca67e9
18 changed files with 102 additions and 101 deletions
8
go.mod
8
go.mod
|
|
@ -9,13 +9,13 @@ go 1.26.0
|
|||
require (
|
||||
github.com/BurntSushi/toml v1.6.0
|
||||
github.com/alecthomas/chroma/v2 v2.23.1
|
||||
github.com/andybalholm/brotli v1.2.0
|
||||
github.com/andybalholm/brotli v1.2.1
|
||||
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97
|
||||
github.com/ayn2op/tview v0.0.0-20260326160057-77694f6ae219
|
||||
github.com/ayn2op/tview v0.0.0-20260403035755-f7ed1703d9a9
|
||||
github.com/deckarep/gosx-notifier v0.0.0-20180201035817-e127226297fb
|
||||
github.com/diamondburned/arikawa/v3 v3.6.1-0.20260311205148-176ad9b9440f
|
||||
github.com/diamondburned/ningen/v3 v3.0.1-0.20260306213430-5a08d3a709b4
|
||||
github.com/gdamore/tcell/v3 v3.1.2
|
||||
github.com/gdamore/tcell/v3 v3.2.0
|
||||
github.com/gen2brain/beeep v0.11.2
|
||||
github.com/google/go-cmp v0.6.0
|
||||
github.com/google/uuid v1.6.0
|
||||
|
|
@ -43,7 +43,7 @@ require (
|
|||
github.com/gorilla/schema v1.4.1 // indirect
|
||||
github.com/jackmordaunt/icns/v3 v3.0.1 // indirect
|
||||
github.com/josephspurrier/goversioninfo v1.5.0 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.4.0 // indirect
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 // indirect
|
||||
|
|
|
|||
16
go.sum
16
go.sum
|
|
@ -10,12 +10,12 @@ github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ
|
|||
github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o=
|
||||
github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
|
||||
github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
||||
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
|
||||
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
||||
github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro=
|
||||
github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
|
||||
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97 h1:WujETUV+v0DEJyZgjeLzQvihWyL80c0Tg4qf0dDo+Io=
|
||||
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97/go.mod h1:3kFnpNCa3dF6WryzOMCDao7PfZ7DTCh+pievlfuwV80=
|
||||
github.com/ayn2op/tview v0.0.0-20260326160057-77694f6ae219 h1:LqDo0lLS9qcaEkfUGqu9AB0usCLLj9SluxqbNO2gAOs=
|
||||
github.com/ayn2op/tview v0.0.0-20260326160057-77694f6ae219/go.mod h1:xgkca32kuEswK7Kzkfk3Pk24WHcKPjqK4xGmDi9QqOY=
|
||||
github.com/ayn2op/tview v0.0.0-20260403035755-f7ed1703d9a9 h1:BshyCL/u4/8nUULtn+iPUoSONbz4btdAlmZJOUaSdBk=
|
||||
github.com/ayn2op/tview v0.0.0-20260403035755-f7ed1703d9a9/go.mod h1:xgkca32kuEswK7Kzkfk3Pk24WHcKPjqK4xGmDi9QqOY=
|
||||
github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ=
|
||||
github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
|
@ -35,8 +35,8 @@ github.com/esiqveland/notify v0.13.3 h1:QCMw6o1n+6rl+oLUfg8P1IIDSFsDEb2WlXvVvIJb
|
|||
github.com/esiqveland/notify v0.13.3/go.mod h1:hesw/IRYTO0x99u1JPweAl4+5mwXJibQVUcP0Iu5ORE=
|
||||
github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw=
|
||||
github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo=
|
||||
github.com/gdamore/tcell/v3 v3.1.2 h1:qEaXnDaYZpCIMDfa3XFHkxrwFBINUuDiePwj39vErZ8=
|
||||
github.com/gdamore/tcell/v3 v3.1.2/go.mod h1:MikpZpivMtggrw1kL999dI2VuXw6Wya4724VAh3DzIg=
|
||||
github.com/gdamore/tcell/v3 v3.2.0 h1:/NRk7A9ENZXdjXer8+hsPamISWOASUQRledW9XgwGgI=
|
||||
github.com/gdamore/tcell/v3 v3.2.0/go.mod h1:JjuMGzo/n6rS+lTVDmg2ft9qQnKS/11HrlU5R7a4UDw=
|
||||
github.com/gen2brain/beeep v0.11.2 h1:+KfiKQBbQCuhfJFPANZuJ+oxsSKAYNe88hIpJuyKWDA=
|
||||
github.com/gen2brain/beeep v0.11.2/go.mod h1:jQVvuwnLuwOcdctHn/uyh8horSBNJ8uGb9Cn2W4tvoc=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
|
|
@ -62,8 +62,8 @@ github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBF
|
|||
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag=
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/lucasb-eyer/go-colorful v1.4.0 h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4=
|
||||
github.com/lucasb-eyer/go-colorful v1.4.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/ncruces/zenity v0.10.14 h1:OBFl7qfXcvsdo1NUEGxTlZvAakgWMqz9nG38TuiaGLI=
|
||||
github.com/ncruces/zenity v0.10.14/go.mod h1:ZBW7uVe/Di3IcRYH0Br8X59pi+O6EPnNIOU66YHpOO4=
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
||||
|
|
|
|||
|
|
@ -45,12 +45,13 @@ func (ap *attachmentsPicker) SetItems(items []attachmentItem) {
|
|||
ap.Model.SetItems(pickerItems)
|
||||
}
|
||||
|
||||
func (ap *attachmentsPicker) close() tview.Command {
|
||||
func (ap *attachmentsPicker) close() tview.Cmd {
|
||||
|
||||
ap.chatView.RemoveLayer(attachmentsPickerLayerName)
|
||||
return tview.SetFocus(ap.chatView.messagesList)
|
||||
}
|
||||
|
||||
func (ap *attachmentsPicker) HandleEvent(event tview.Event) tview.Command {
|
||||
func (ap *attachmentsPicker) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *picker.SelectedEvent:
|
||||
index, ok := event.Reference.(int)
|
||||
|
|
@ -66,7 +67,7 @@ func (ap *attachmentsPicker) HandleEvent(event tview.Event) tview.Command {
|
|||
return ap.close()
|
||||
}
|
||||
|
||||
return ap.Model.HandleEvent(event)
|
||||
return ap.Model.Update(event)
|
||||
}
|
||||
|
||||
func (ap *attachmentsPicker) ShortHelp() []keybind.Keybind {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ func newChannelsPicker(cfg *config.Config, chatView *Model) *channelsPicker {
|
|||
return cp
|
||||
}
|
||||
|
||||
func (cp *channelsPicker) HandleEvent(event tview.Event) tview.Command {
|
||||
func (cp *channelsPicker) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *picker.SelectedEvent:
|
||||
channelID, ok := event.Reference.(discord.ChannelID)
|
||||
|
|
@ -48,7 +48,7 @@ func (cp *channelsPicker) HandleEvent(event tview.Event) tview.Command {
|
|||
|
||||
cp.chatView.guildsTree.expandPathToNode(node)
|
||||
cp.chatView.guildsTree.SetCurrentNode(node)
|
||||
var selectCmd tview.Command
|
||||
var selectCmd tview.Cmd
|
||||
if channel.Type != discord.GuildCategory {
|
||||
selectCmd = cp.chatView.guildsTree.onSelected(node)
|
||||
}
|
||||
|
|
@ -58,7 +58,7 @@ func (cp *channelsPicker) HandleEvent(event tview.Event) tview.Command {
|
|||
cp.chatView.closePicker()
|
||||
return nil
|
||||
}
|
||||
return cp.Model.HandleEvent(event)
|
||||
return cp.Model.Update(event)
|
||||
}
|
||||
|
||||
func (cp *channelsPicker) update() {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"github.com/gdamore/tcell/v3"
|
||||
)
|
||||
|
||||
func (m *Model) openState() tview.Command {
|
||||
func (m *Model) openState() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := m.state.Open(context.Background()); err != nil {
|
||||
slog.Error("failed to open chat state", "err", err)
|
||||
|
|
@ -20,7 +20,7 @@ func (m *Model) openState() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) closeState() tview.Command {
|
||||
func (m *Model) closeState() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if m.state != nil {
|
||||
if err := m.state.Close(); err != nil {
|
||||
|
|
@ -37,7 +37,7 @@ type gatewayEvent struct {
|
|||
gateway.Event
|
||||
}
|
||||
|
||||
func (m *Model) listen() tview.Command {
|
||||
func (m *Model) listen() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
return &gatewayEvent{Event: <-m.events}
|
||||
}
|
||||
|
|
@ -65,7 +65,7 @@ func newOlderMessagesLoadedEvent(channelID discord.ChannelID, older []discord.Me
|
|||
|
||||
type LogoutEvent struct{ tcell.EventTime }
|
||||
|
||||
func (m *Model) logout() tview.Command {
|
||||
func (m *Model) logout() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
return &LogoutEvent{}
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@ type closeLayerEvent struct {
|
|||
name string
|
||||
}
|
||||
|
||||
func closeLayer(name string) tview.Command {
|
||||
func closeLayer(name string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
return &closeLayerEvent{name: name}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ func (gt *guildsTree) createChannelNodes(node *tview.TreeNode, channels []discor
|
|||
}
|
||||
}
|
||||
|
||||
func (gt *guildsTree) onSelected(node *tview.TreeNode) tview.Command {
|
||||
func (gt *guildsTree) onSelected(node *tview.TreeNode) tview.Cmd {
|
||||
if len(node.GetChildren()) != 0 {
|
||||
node.SetExpanded(!node.IsExpanded())
|
||||
return nil
|
||||
|
|
@ -371,7 +371,7 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (gt *guildsTree) loadChannel(channel discord.Channel) tview.Command {
|
||||
func (gt *guildsTree) loadChannel(channel discord.Channel) tview.Cmd {
|
||||
limit := uint(gt.cfg.MessagesLimit)
|
||||
return func() tview.Event {
|
||||
messages, err := gt.chat.state.Messages(channel.ID, limit)
|
||||
|
|
@ -404,12 +404,12 @@ func (gt *guildsTree) collapseParentNode(node *tview.TreeNode) {
|
|||
})
|
||||
}
|
||||
|
||||
func (gt *guildsTree) HandleEvent(event tview.Event) tview.Command {
|
||||
func (gt *guildsTree) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tview.TreeViewSelectedEvent:
|
||||
return gt.onSelected(event.Node)
|
||||
case *tview.KeyEvent:
|
||||
handler := gt.TreeView.HandleEvent
|
||||
handler := gt.TreeView.Update
|
||||
|
||||
switch {
|
||||
case keybind.Matches(event, gt.cfg.Keybinds.GuildsTree.CollapseParentNode.Keybind):
|
||||
|
|
@ -435,10 +435,10 @@ func (gt *guildsTree) HandleEvent(event tview.Event) tview.Command {
|
|||
// Do not fall through to TreeView defaults for unmatched keys.
|
||||
return nil
|
||||
}
|
||||
return gt.TreeView.HandleEvent(event)
|
||||
return gt.TreeView.Update(event)
|
||||
}
|
||||
|
||||
func (gt *guildsTree) yankID() tview.Command {
|
||||
func (gt *guildsTree) yankID() tview.Cmd {
|
||||
node := gt.GetCurrentNode()
|
||||
if node == nil {
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -103,8 +103,8 @@ func (mi *messageInput) stopTypingTimer() {
|
|||
}
|
||||
}
|
||||
|
||||
func (mi *messageInput) HandleEvent(event tview.Event) tview.Command {
|
||||
handler := mi.TextArea.HandleEvent
|
||||
func (mi *messageInput) Update(event tview.Event) tview.Cmd {
|
||||
handler := mi.TextArea.Update
|
||||
switch event := event.(type) {
|
||||
case *tview.KeyEvent:
|
||||
switch {
|
||||
|
|
@ -119,8 +119,8 @@ func (mi *messageInput) HandleEvent(event tview.Event) tview.Command {
|
|||
}
|
||||
return nil
|
||||
case keybind.Matches(event, mi.cfg.Keybinds.MessageInput.OpenEditor.Keybind):
|
||||
var cmds []tview.Command
|
||||
mi.stopTabCompletion(func(next tview.Command) {
|
||||
var cmds []tview.Cmd
|
||||
mi.stopTabCompletion(func(next tview.Cmd) {
|
||||
if next != nil {
|
||||
cmds = append(cmds, next)
|
||||
}
|
||||
|
|
@ -128,8 +128,8 @@ func (mi *messageInput) HandleEvent(event tview.Event) tview.Command {
|
|||
mi.editor()
|
||||
return tview.Batch(cmds...)
|
||||
case keybind.Matches(event, mi.cfg.Keybinds.MessageInput.OpenFilePicker.Keybind):
|
||||
var cmds []tview.Command
|
||||
mi.stopTabCompletion(func(next tview.Command) {
|
||||
var cmds []tview.Cmd
|
||||
mi.stopTabCompletion(func(next tview.Cmd) {
|
||||
if next != nil {
|
||||
cmds = append(cmds, next)
|
||||
}
|
||||
|
|
@ -137,9 +137,9 @@ func (mi *messageInput) HandleEvent(event tview.Event) tview.Command {
|
|||
mi.openFilePicker()
|
||||
return tview.Batch(cmds...)
|
||||
case keybind.Matches(event, mi.cfg.Keybinds.MessageInput.Cancel.Keybind):
|
||||
var cmds []tview.Command
|
||||
var cmds []tview.Cmd
|
||||
if mi.chat.GetVisible(mentionsListLayerName) {
|
||||
mi.stopTabCompletion(func(next tview.Command) {
|
||||
mi.stopTabCompletion(func(next tview.Cmd) {
|
||||
if next != nil {
|
||||
cmds = append(cmds, next)
|
||||
}
|
||||
|
|
@ -174,7 +174,7 @@ func (mi *messageInput) HandleEvent(event tview.Event) tview.Command {
|
|||
keybind.Matches(event, keybinds.Down.Keybind) ||
|
||||
keybind.Matches(event, keybinds.Top.Keybind) ||
|
||||
keybind.Matches(event, keybinds.Bottom.Keybind) {
|
||||
return mi.mentionsList.HandleEvent(event)
|
||||
return mi.mentionsList.Update(event)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -619,7 +619,7 @@ func (mi *messageInput) removeMentionsList() {
|
|||
}
|
||||
}
|
||||
|
||||
func (mi *messageInput) stopTabCompletion(emit func(tview.Command)) {
|
||||
func (mi *messageInput) stopTabCompletion(emit func(tview.Cmd)) {
|
||||
if mi.cfg.AutocompleteLimit > 0 {
|
||||
mi.mentionsList.clear()
|
||||
if emit != nil {
|
||||
|
|
|
|||
|
|
@ -844,7 +844,7 @@ func (ml *messagesList) selectedMessage() (*discord.Message, error) {
|
|||
return &ml.messages[cursor], nil
|
||||
}
|
||||
|
||||
func (ml *messagesList) HandleEvent(event tview.Event) tview.Command {
|
||||
func (ml *messagesList) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tview.KeyEvent:
|
||||
switch {
|
||||
|
|
@ -889,7 +889,7 @@ func (ml *messagesList) HandleEvent(event tview.Event) tview.Command {
|
|||
ml.confirmDelete()
|
||||
return nil
|
||||
}
|
||||
return ml.Model.HandleEvent(event)
|
||||
return ml.Model.Update(event)
|
||||
|
||||
case *olderMessagesLoadedEvent:
|
||||
selectedChannel := ml.chatView.SelectedChannel()
|
||||
|
|
@ -917,10 +917,10 @@ func (ml *messagesList) HandleEvent(event tview.Event) tview.Command {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
return ml.Model.HandleEvent(event)
|
||||
return ml.Model.Update(event)
|
||||
}
|
||||
|
||||
func (ml *messagesList) selectUp() tview.Command {
|
||||
func (ml *messagesList) selectUp() tview.Cmd {
|
||||
messages := ml.messages
|
||||
if len(messages) == 0 {
|
||||
return nil
|
||||
|
|
@ -992,7 +992,7 @@ func (ml *messagesList) selectReply() {
|
|||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) fetchOlderMessages() tview.Command {
|
||||
func (ml *messagesList) fetchOlderMessages() tview.Cmd {
|
||||
selectedChannel := ml.chatView.SelectedChannel()
|
||||
if selectedChannel == nil {
|
||||
return nil
|
||||
|
|
@ -1021,7 +1021,7 @@ func (ml *messagesList) fetchOlderMessages() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankMessageID() tview.Command {
|
||||
func (ml *messagesList) yankMessageID() tview.Cmd {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
|
|
@ -1036,7 +1036,7 @@ func (ml *messagesList) yankMessageID() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankContent() tview.Command {
|
||||
func (ml *messagesList) yankContent() tview.Cmd {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
|
|
@ -1051,7 +1051,7 @@ func (ml *messagesList) yankContent() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankURL() tview.Command {
|
||||
func (ml *messagesList) yankURL() tview.Cmd {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
|
|
@ -1279,8 +1279,8 @@ func (ml *messagesList) editSelectedMessage() {
|
|||
func (ml *messagesList) confirmDelete() {
|
||||
onChoice := func(choice string) {
|
||||
if choice == "Yes" {
|
||||
if command := ml.deleteSelectedMessage(); command != nil {
|
||||
command()
|
||||
if cmd := ml.deleteSelectedMessage(); cmd != nil {
|
||||
cmd()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1292,7 +1292,7 @@ func (ml *messagesList) confirmDelete() {
|
|||
)
|
||||
}
|
||||
|
||||
func (ml *messagesList) deleteSelectedMessage() tview.Command {
|
||||
func (ml *messagesList) deleteSelectedMessage() tview.Cmd {
|
||||
selectedMessage, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
|
|
|
|||
|
|
@ -166,10 +166,10 @@ func (m *Model) openPicker() {
|
|||
|
||||
func (m *Model) closePicker() {
|
||||
m.RemoveLayer(channelsPickerLayerName)
|
||||
m.channelsPicker.Update()
|
||||
m.channelsPicker.Refresh()
|
||||
}
|
||||
|
||||
func (m *Model) toggleGuildsTree() tview.Command {
|
||||
func (m *Model) toggleGuildsTree() tview.Cmd {
|
||||
// The guilds tree is visible if the number of items is two.
|
||||
if m.mainFlex.GetItemCount() == 2 {
|
||||
m.mainFlex.RemoveItem(m.guildsTree)
|
||||
|
|
@ -183,7 +183,7 @@ func (m *Model) toggleGuildsTree() tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Model) focusGuildsTree() tview.Command {
|
||||
func (m *Model) focusGuildsTree() tview.Cmd {
|
||||
// The guilds tree is not hidden if the number of items is two.
|
||||
if m.mainFlex.GetItemCount() == 2 {
|
||||
return tview.SetFocus(m.guildsTree)
|
||||
|
|
@ -191,18 +191,18 @@ func (m *Model) focusGuildsTree() tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Model) focusMessageInput() tview.Command {
|
||||
func (m *Model) focusMessageInput() tview.Cmd {
|
||||
if !m.messageInput.GetDisabled() {
|
||||
return tview.SetFocus(m.messageInput)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Model) focusMessagesList() tview.Command {
|
||||
func (m *Model) focusMessagesList() tview.Cmd {
|
||||
return tview.SetFocus(m.messagesList)
|
||||
}
|
||||
|
||||
func (m *Model) focusPrevious() tview.Command {
|
||||
func (m *Model) focusPrevious() tview.Cmd {
|
||||
switch m.app.Focused() {
|
||||
case m.guildsTree:
|
||||
if cmd := m.focusMessageInput(); cmd != nil {
|
||||
|
|
@ -224,7 +224,7 @@ func (m *Model) focusPrevious() tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Model) focusNext() tview.Command {
|
||||
func (m *Model) focusNext() tview.Cmd {
|
||||
switch m.app.Focused() {
|
||||
case m.guildsTree:
|
||||
return m.focusMessagesList()
|
||||
|
|
@ -245,7 +245,7 @@ func (m *Model) focusNext() tview.Command {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
||||
func (m *Model) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tview.InitEvent:
|
||||
return tview.Batch(m.openState(), m.listen())
|
||||
|
|
@ -301,14 +301,14 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
m.messageInput.SetDisabled(hasNoPerm)
|
||||
text := "Message..."
|
||||
|
||||
var focusCommand tview.Command
|
||||
var focusCmd tview.Cmd
|
||||
if hasNoPerm {
|
||||
text = "You do not have permission to send messages in this channel."
|
||||
} else if m.cfg.AutoFocus {
|
||||
focusCommand = m.focusMessageInput()
|
||||
focusCmd = m.focusMessageInput()
|
||||
}
|
||||
m.messageInput.SetPlaceholder(tview.NewLine(tview.NewSegment(text, tcell.StyleDefault.Dim(true))))
|
||||
return focusCommand
|
||||
return focusCmd
|
||||
case *QuitEvent:
|
||||
return tview.Batch(
|
||||
m.closeState(),
|
||||
|
|
@ -317,7 +317,7 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
case *tview.ModalDoneEvent:
|
||||
if m.HasLayer(confirmModalLayerName) {
|
||||
m.RemoveLayer(confirmModalLayerName)
|
||||
var focusCmd tview.Command
|
||||
var focusCmd tview.Cmd
|
||||
if m.confirmModalPreviousFocus != nil {
|
||||
focusCmd = tview.SetFocus(m.confirmModalPreviousFocus)
|
||||
}
|
||||
|
|
@ -360,7 +360,7 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
return m.Layers.HandleEvent(event)
|
||||
return m.Layers.Update(event)
|
||||
}
|
||||
|
||||
func (m *Model) showConfirmModal(prompt string, buttons []string, onDone func(label string)) {
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ func (m *Model) onRaw(event *ws.RawEvent) {
|
|||
)
|
||||
}
|
||||
|
||||
func (m *Model) onReady(event *gateway.ReadyEvent) tview.Command {
|
||||
func (m *Model) onReady(event *gateway.ReadyEvent) tview.Cmd {
|
||||
// Rebuild indexes from scratch so reconnects and account switches do not
|
||||
// retain pointers to detached tree nodes.
|
||||
m.guildsTree.resetNodeIndex()
|
||||
|
|
@ -97,7 +97,7 @@ func (m *Model) onReady(event *gateway.ReadyEvent) tview.Command {
|
|||
return tview.SetFocus(m.guildsTree)
|
||||
}
|
||||
|
||||
func (m *Model) onMessageCreate(message *gateway.MessageCreateEvent) tview.Command {
|
||||
func (m *Model) onMessageCreate(message *gateway.MessageCreateEvent) tview.Cmd {
|
||||
selectedChannel := m.SelectedChannel()
|
||||
if selectedChannel != nil && selectedChannel.ID == message.ChannelID {
|
||||
m.removeTyper(message.Author.ID)
|
||||
|
|
@ -108,7 +108,7 @@ func (m *Model) onMessageCreate(message *gateway.MessageCreateEvent) tview.Comma
|
|||
return m.notify(*message)
|
||||
}
|
||||
|
||||
func (m *Model) notify(message gateway.MessageCreateEvent) tview.Command {
|
||||
func (m *Model) notify(message gateway.MessageCreateEvent) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := notifications.Notify(m.state, message, m.cfg); err != nil {
|
||||
slog.Error("failed to notify", "err", err, "channel_id", message.ChannelID, "message_id", message.ID)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"github.com/gdamore/tcell/v3"
|
||||
)
|
||||
|
||||
func setClipboard(content string) tview.Command {
|
||||
func setClipboard(content string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := clipboard.Write(clipboard.FmtText, []byte(content)); err != nil {
|
||||
slog.Error("failed to copy error message", "err", err)
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ func NewModel(cfg *config.Config) *Model {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
||||
func (m *Model) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tcell.EventError:
|
||||
if m.HasLayer(errorLayerName) {
|
||||
|
|
@ -59,10 +59,10 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
m.errorModalText = ""
|
||||
return nil
|
||||
}
|
||||
return m.Layers.HandleEvent(event)
|
||||
return m.Layers.Update(event)
|
||||
}
|
||||
|
||||
func (m *Model) showErrorDialog(err error) tview.Command {
|
||||
func (m *Model) showErrorDialog(err error) tview.Cmd {
|
||||
slog.Error("failed to login", "err", err)
|
||||
|
||||
message := err.Error()
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ type connCreateEvent struct {
|
|||
|
||||
type connCloseEvent struct{ tcell.EventTime }
|
||||
|
||||
func (m *Model) connect() tview.Command {
|
||||
func (m *Model) connect() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
headers := http.Headers()
|
||||
headers.Set("User-Agent", http.BrowserUserAgent)
|
||||
|
|
@ -45,7 +45,7 @@ func (m *Model) connect() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) close() tview.Command {
|
||||
func (m *Model) close() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if m.conn != nil {
|
||||
if err := m.conn.Close(); err != nil {
|
||||
|
|
@ -84,7 +84,7 @@ type pendingLoginEvent struct {
|
|||
|
||||
type cancelEvent struct{ tcell.EventTime }
|
||||
|
||||
func (m *Model) listen() tview.Command {
|
||||
func (m *Model) listen() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if m.conn == nil {
|
||||
return nil
|
||||
|
|
@ -154,14 +154,14 @@ func (m *Model) listen() tview.Command {
|
|||
|
||||
type heartbeatTickEvent struct{ tcell.EventTime }
|
||||
|
||||
func (m *Model) heartbeat() tview.Command {
|
||||
func (m *Model) heartbeat() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
time.Sleep(m.heartbeatInterval)
|
||||
return &heartbeatTickEvent{}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Model) sendHeartbeat() tview.Command {
|
||||
func (m *Model) sendHeartbeat() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if m.conn == nil {
|
||||
return nil
|
||||
|
|
@ -181,7 +181,7 @@ type privateKeyEvent struct {
|
|||
privateKey *rsa.PrivateKey
|
||||
}
|
||||
|
||||
func (m *Model) generatePrivateKey() tview.Command {
|
||||
func (m *Model) generatePrivateKey() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
|
|
@ -191,7 +191,7 @@ func (m *Model) generatePrivateKey() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) sendInit() tview.Command {
|
||||
func (m *Model) sendInit() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if m.privateKey == nil {
|
||||
return tcell.NewEventError(errors.New("missing private key"))
|
||||
|
|
@ -212,7 +212,7 @@ func (m *Model) sendInit() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) sendNonceProof(encryptedNonce string) tview.Command {
|
||||
func (m *Model) sendNonceProof(encryptedNonce string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
decodedNonce, err := base64.StdEncoding.DecodeString(encryptedNonce)
|
||||
if err != nil {
|
||||
|
|
@ -241,7 +241,7 @@ type qrCodeEvent struct {
|
|||
qrCode *qrcode.QRCode
|
||||
}
|
||||
|
||||
func (m *Model) generateQRCode(fingerprint string) tview.Command {
|
||||
func (m *Model) generateQRCode(fingerprint string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
content := "https://discord.com/ra/" + fingerprint
|
||||
qrCode, err := qrcode.New(content, qrcode.Low)
|
||||
|
|
@ -259,7 +259,7 @@ type userEvent struct {
|
|||
username string
|
||||
}
|
||||
|
||||
func (m *Model) decryptUserPayload(encryptedPayload string) tview.Command {
|
||||
func (m *Model) decryptUserPayload(encryptedPayload string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
decodedPayload, err := base64.StdEncoding.DecodeString(encryptedPayload)
|
||||
if err != nil {
|
||||
|
|
@ -280,7 +280,7 @@ func (m *Model) decryptUserPayload(encryptedPayload string) tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func (m *Model) exchangeTicket(ticket string) tview.Command {
|
||||
func (m *Model) exchangeTicket(ticket string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
headers := http.Headers()
|
||||
headers.Set("Referer", "https://discord.com/login")
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ func (m *Model) Label() string {
|
|||
return "QR"
|
||||
}
|
||||
|
||||
func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
||||
func (m *Model) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tview.InitEvent:
|
||||
m.msg = "Connecting to Remote Auth Gateway..."
|
||||
|
|
@ -54,7 +54,7 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
m.msg = "Canceled"
|
||||
return tview.Batch(m.close(), nil)
|
||||
}
|
||||
return m.TextView.HandleEvent(event)
|
||||
return m.TextView.Update(event)
|
||||
|
||||
case *connCreateEvent:
|
||||
m.conn = event.conn
|
||||
|
|
@ -103,7 +103,7 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
|
||||
case *tcell.EventError:
|
||||
m.msg = event.Error()
|
||||
return tview.Batch(m.close(), tview.Command(func() tview.Event { return event }))
|
||||
return tview.Batch(m.close(), tview.Cmd(func() tview.Event { return event }))
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ type TokenEvent struct {
|
|||
Token string
|
||||
}
|
||||
|
||||
func tokenCommand(token string) tview.Command {
|
||||
func tokenCommand(token string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
return &TokenEvent{Token: token}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ func (m *Model) Label() string {
|
|||
return "Token"
|
||||
}
|
||||
|
||||
func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
||||
func (m *Model) Update(event tview.Event) tview.Cmd {
|
||||
switch event.(type) {
|
||||
case *tview.FormSubmitEvent:
|
||||
token := m.GetFormItem(0).(*tview.InputField).GetText()
|
||||
|
|
@ -31,5 +31,5 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
}
|
||||
return tokenCommand(token)
|
||||
}
|
||||
return m.Form.HandleEvent(event)
|
||||
return m.Form.Update(event)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ type tokenEvent struct {
|
|||
token string
|
||||
}
|
||||
|
||||
func tokenCommand(token string) tview.Command {
|
||||
func tokenCommand(token string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
return &tokenEvent{token: token}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ func tokenCommand(token string) tview.Command {
|
|||
|
||||
type loginEvent struct{ tcell.EventTime }
|
||||
|
||||
func getToken() tview.Command {
|
||||
func getToken() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
token, err := keyring.GetToken()
|
||||
if err != nil {
|
||||
|
|
@ -33,7 +33,7 @@ func getToken() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func setToken(token string) tview.Command {
|
||||
func setToken(token string) tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := keyring.SetToken(token); err != nil {
|
||||
slog.Error("failed to set token to keyring", "err", err)
|
||||
|
|
@ -43,7 +43,7 @@ func setToken(token string) tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func deleteToken() tview.Command {
|
||||
func deleteToken() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := keyring.DeleteToken(); err != nil {
|
||||
slog.Error("failed to delete token from keyring", "err", err)
|
||||
|
|
@ -53,7 +53,7 @@ func deleteToken() tview.Command {
|
|||
}
|
||||
}
|
||||
|
||||
func initClipboard() tview.Command {
|
||||
func initClipboard() tview.Cmd {
|
||||
return func() tview.Event {
|
||||
if err := clipboard.Init(); err != nil {
|
||||
slog.Error("failed to init clipboard", "err", err)
|
||||
|
|
|
|||
|
|
@ -53,16 +53,16 @@ func NewModel(cfg *config.Config, app *tview.Application) *Model {
|
|||
return m
|
||||
}
|
||||
|
||||
func (m *Model) showLogin() tview.Command {
|
||||
func (m *Model) showLogin() tview.Cmd {
|
||||
m.inner = login.NewModel(m.cfg)
|
||||
m.buildLayout()
|
||||
return tview.Batch(m.inner.HandleEvent(&tview.InitEvent{}), tview.SetFocus(m))
|
||||
return tview.Batch(m.inner.Update(&tview.InitEvent{}), tview.SetFocus(m))
|
||||
}
|
||||
|
||||
func (m *Model) showChat(token string) tview.Command {
|
||||
func (m *Model) showChat(token string) tview.Cmd {
|
||||
m.inner = chat.NewModel(m.app, m.cfg, token)
|
||||
m.buildLayout()
|
||||
return tview.Batch(m.inner.HandleEvent(&tview.InitEvent{}), tview.SetFocus(m))
|
||||
return tview.Batch(m.inner.Update(&tview.InitEvent{}), tview.SetFocus(m))
|
||||
}
|
||||
|
||||
func (m *Model) buildLayout() {
|
||||
|
|
@ -80,10 +80,10 @@ func (m *Model) Draw(screen tcell.Screen) {
|
|||
m.rootFlex.Draw(screen)
|
||||
}
|
||||
|
||||
func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
||||
func (m *Model) Update(event tview.Event) tview.Cmd {
|
||||
switch event := event.(type) {
|
||||
case *tview.InitEvent:
|
||||
var cmd tview.Command
|
||||
var cmd tview.Cmd
|
||||
if token := os.Getenv(tokenEnvVarKey); token != "" {
|
||||
cmd = tokenCommand(token)
|
||||
} else {
|
||||
|
|
@ -121,16 +121,16 @@ func (m *Model) HandleEvent(event tview.Event) tview.Command {
|
|||
m.suspend()
|
||||
return nil
|
||||
case keybind.Matches(event, m.cfg.Keybinds.Quit.Keybind):
|
||||
var innerCmd tview.Command
|
||||
var innerCmd tview.Cmd
|
||||
if m.inner != nil {
|
||||
innerCmd = m.inner.HandleEvent(&chat.QuitEvent{})
|
||||
innerCmd = m.inner.Update(&chat.QuitEvent{})
|
||||
}
|
||||
return tview.Batch(innerCmd, tview.Quit())
|
||||
}
|
||||
}
|
||||
|
||||
if m.inner != nil {
|
||||
return m.inner.HandleEvent(event)
|
||||
return m.inner.Update(event)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue