Эх сурвалжийг харах

feat: add yank_id & yank_url for messages text (#521)

Ayyan 1 жил өмнө
parent
commit
f9824b1ff2

+ 30 - 4
cmd/messages_text.go

@@ -203,8 +203,12 @@ func (mt *MessagesText) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
 	case mt.cfg.Keys.MessagesText.SelectPrevious, mt.cfg.Keys.MessagesText.SelectNext, mt.cfg.Keys.MessagesText.SelectFirst, mt.cfg.Keys.MessagesText.SelectLast, mt.cfg.Keys.MessagesText.SelectReply, mt.cfg.Keys.MessagesText.SelectPin:
 		mt._select(event.Name())
-	case mt.cfg.Keys.MessagesText.Yank:
-		mt.yank()
+	case mt.cfg.Keys.MessagesText.YankID:
+		mt.yankID()
+	case mt.cfg.Keys.MessagesText.YankContent:
+		mt.yankContent()
+	case mt.cfg.Keys.MessagesText.YankURL:
+		mt.yankURL()
 	case mt.cfg.Keys.MessagesText.Open:
 		mt.open()
 	case mt.cfg.Keys.MessagesText.Reply:
@@ -295,18 +299,40 @@ func (mt *MessagesText) onHighlighted(added, removed, remaining []string) {
 	}
 }
 
-func (mt *MessagesText) yank() {
+func (mt *MessagesText) yankID() {
 	msg, err := mt.getSelectedMessage()
 	if err != nil {
 		slog.Error("failed to get selected message", "err", err)
 		return
 	}
 
-	err = clipboard.WriteAll(msg.Content)
+	if err := clipboard.WriteAll(msg.ID.String()); err != nil {
+		slog.Error("failed to write to clipboard", "err", err)
+	}
+}
+
+func (mt *MessagesText) yankContent() {
+	msg, err := mt.getSelectedMessage()
 	if err != nil {
+		slog.Error("failed to get selected message", "err", err)
+		return
+	}
+
+	if err = clipboard.WriteAll(msg.Content); err != nil {
 		slog.Error("failed to write to clipboard", "err", err)
+	}
+}
+
+func (mt *MessagesText) yankURL() {
+	msg, err := mt.getSelectedMessage()
+	if err != nil {
+		slog.Error("failed to get selected message", "err", err)
 		return
 	}
+
+	if err = clipboard.WriteAll(msg.URL()); err != nil {
+		slog.Error("failed to write to clipboard", "err", err)
+	}
 }
 
 func (mt *MessagesText) open() {

+ 9 - 6
internal/config/keys.go

@@ -35,9 +35,11 @@ type (
 		Reply        string `toml:"reply"`
 		ReplyMention string `toml:"reply_mention"`
 
-		Delete string `toml:"delete"`
-		Yank   string `toml:"yank"`
-		Open   string `toml:"open"`
+		Delete      string `toml:"delete"`
+		YankID      string `toml:"yank_id"`
+		YankContent string `toml:"yank_content"`
+		YankURL     string `toml:"yank_url"`
+		Open        string `toml:"open"`
 	}
 
 	MessageInputKeys struct {
@@ -81,9 +83,10 @@ func defaultKeys() Keys {
 			Reply:        "Rune[r]",
 			ReplyMention: "Rune[R]",
 
-			Delete: "Rune[d]",
-			Yank:   "Rune[y]",
-			Open:   "Rune[o]",
+			Delete:      "Rune[d]",
+			YankContent: "Rune[y]",
+			YankURL:     "Rune[i]",
+			Open:        "Rune[o]",
 		},
 
 		MessageInput: MessageInputKeys{