Kaynağa Gözat

feat: implement delete action

ayn2op 2 yıl önce
ebeveyn
işleme
88d71f70c1
2 değiştirilmiş dosya ile 40 ekleme ve 0 silme
  1. 36 0
      cmd/run/messages_text.go
  2. 4 0
      config/keys.go

+ 36 - 0
cmd/run/messages_text.go

@@ -140,6 +140,9 @@ func (mt *MessagesText) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	case config.Current.Keys.MessagesText.ShowImage:
 		mt.showImageAction()
 		return nil
+	case config.Current.Keys.MessagesText.Delete:
+		mt.deleteAction()
+		return nil
 	case config.Current.Keys.Cancel:
 		mainFlex.guildsTree.selectedChannelID = 0
 
@@ -309,3 +312,36 @@ func (mt *MessagesText) showImageAction() {
 
 	app.SetRoot(ai, true)
 }
+
+func (mt *MessagesText) deleteAction() {
+	if mt.selectedMessage == -1 {
+		return
+	}
+
+	ms, err := discordState.Cabinet.Messages(mainFlex.guildsTree.selectedChannelID)
+	if err != nil {
+		log.Println(err)
+		return
+	}
+
+	m := ms[mt.selectedMessage]
+	if err := discordState.DeleteMessage(mainFlex.guildsTree.selectedChannelID, m.ID, ""); err != nil {
+		log.Println(err)
+	}
+
+	if err := discordState.MessageRemove(mainFlex.guildsTree.selectedChannelID, m.ID); err != nil {
+		log.Println(err)
+	}
+
+	ms, err = discordState.Cabinet.Messages(mainFlex.guildsTree.selectedChannelID)
+	if err != nil {
+		log.Println(err)
+		return
+	}
+
+	mt.Clear()
+
+	for i := len(ms) - 1; i >= 0; i-- {
+		mainFlex.messagesText.createMessage(ms[i])
+	}
+}

+ 4 - 0
config/keys.go

@@ -16,6 +16,8 @@ type (
 		ReplyMention string `yaml:"reply_mention"`
 		SelectReply  string `yaml:"select_reply"`
 
+		Delete string `yaml:"delete"`
+
 		SelectPrevious string `yaml:"select_previous"`
 		SelectNext     string `yaml:"select_next"`
 		SelectFirst    string `yaml:"select_first"`
@@ -57,6 +59,8 @@ func defKeys() Keys {
 			ReplyMention: "Rune[R]",
 			SelectReply:  "Rune[s]",
 
+			Delete: "Rune[d]",
+
 			SelectPrevious: "Up",
 			SelectNext:     "Down",
 			SelectFirst:    "Home",