refactor(ui/chat): make yank actions command-based
This commit is contained in:
parent
2d79e45f6f
commit
1acf10994f
2 changed files with 25 additions and 24 deletions
|
|
@ -418,8 +418,7 @@ func (gt *guildsTree) HandleEvent(event tcell.Event) tview.Command {
|
|||
case keybind.Matches(event, gt.cfg.Keybinds.GuildsTree.SelectCurrent.Keybind):
|
||||
return handler(tcell.NewEventKey(tcell.KeyEnter, "", tcell.ModNone))
|
||||
case keybind.Matches(event, gt.cfg.Keybinds.GuildsTree.YankID.Keybind):
|
||||
gt.yankID()
|
||||
return nil
|
||||
return gt.yankID()
|
||||
}
|
||||
// Do not fall through to TreeView defaults for unmatched keys.
|
||||
return nil
|
||||
|
|
@ -427,21 +426,23 @@ func (gt *guildsTree) HandleEvent(event tcell.Event) tview.Command {
|
|||
return gt.TreeView.HandleEvent(event)
|
||||
}
|
||||
|
||||
func (gt *guildsTree) yankID() {
|
||||
func (gt *guildsTree) yankID() tview.Command {
|
||||
node := gt.GetCurrentNode()
|
||||
if node == nil {
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
// Reference of a tree node in the guilds tree is its ID.
|
||||
// discord.Snowflake (discord.GuildID and discord.ChannelID) have the String method.
|
||||
if id, ok := node.GetReference().(fmt.Stringer); ok {
|
||||
go func() {
|
||||
return func() tcell.Event {
|
||||
if err := clipboard.Write(clipboard.FmtText, []byte(id.String())); err != nil {
|
||||
slog.Error("failed to copy node id", "err", err)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gt *guildsTree) findNodeByReference(reference any) *tview.TreeNode {
|
||||
|
|
|
|||
|
|
@ -872,14 +872,11 @@ func (ml *messagesList) HandleEvent(event tcell.Event) tview.Command {
|
|||
ml.selectReply()
|
||||
return nil
|
||||
case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.YankID.Keybind):
|
||||
ml.yankID()
|
||||
return nil
|
||||
return ml.yankMessageID()
|
||||
case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.YankContent.Keybind):
|
||||
ml.yankContent()
|
||||
return nil
|
||||
return ml.yankContent()
|
||||
case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.YankURL.Keybind):
|
||||
ml.yankURL()
|
||||
return nil
|
||||
return ml.yankURL()
|
||||
case keybind.Matches(event, ml.cfg.Keybinds.MessagesList.Open.Keybind):
|
||||
ml.open()
|
||||
return nil
|
||||
|
|
@ -1014,46 +1011,49 @@ func (ml *messagesList) prependOlderMessages() int {
|
|||
return len(messages)
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankID() {
|
||||
func (ml *messagesList) yankMessageID() tview.Command {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
go func() {
|
||||
return func() tcell.Event {
|
||||
if err := clipboard.Write(clipboard.FmtText, []byte(msg.ID.String())); err != nil {
|
||||
slog.Error("failed to copy message id", "err", err)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankContent() {
|
||||
func (ml *messagesList) yankContent() tview.Command {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
go func() {
|
||||
return func() tcell.Event {
|
||||
if err := clipboard.Write(clipboard.FmtText, []byte(msg.Content)); err != nil {
|
||||
slog.Error("failed to copy message content", "err", err)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) yankURL() {
|
||||
func (ml *messagesList) yankURL() tview.Command {
|
||||
msg, err := ml.selectedMessage()
|
||||
if err != nil {
|
||||
slog.Error("failed to get selected message", "err", err)
|
||||
return
|
||||
return nil
|
||||
}
|
||||
|
||||
go func() {
|
||||
return func() tcell.Event {
|
||||
if err := clipboard.Write(clipboard.FmtText, []byte(msg.URL())); err != nil {
|
||||
slog.Error("failed to copy message url", "err", err)
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (ml *messagesList) open() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue