diff --git a/main.go b/main.go index 6427ba7..698f5ce 100644 --- a/main.go +++ b/main.go @@ -1415,6 +1415,32 @@ func main() { client.MarkAsRead(&m) }) + rec := fyne.NewMenuItem("retract selected message", func() { + selectedScroller, ok := AppTabs.Selected().Content.(*widget.List) + if !ok { + return + } + var activeMucJid string + for jid, tabData := range UITabs { + if tabData.Scroller == selectedScroller { + activeMucJid = jid + break + } + } + + if !chatTabs[activeMucJid].isMuc { + return // TODO: For 1:1 DMs we use OccupantID for the ID and send message type 'chat' + } + + id := chatTabs[activeMucJid].Messages[selectedId].Raw.StanzaID.ID + msg := fmt.Sprintf("This user retracted a previous message, but it's unsupported by your client.", activeMucJid, id) + fmt.Println(msg) + err := client.Session.Send(context.TODO(), xml.NewDecoder(strings.NewReader(msg))) + if err != nil { + dialog.ShowError(err, w) + } + }) + bia := fyne.NewMenuItem("toggle replying to message", func() { replying = !replying }) @@ -1524,7 +1550,7 @@ func main() { dialog.ShowCustom("Message", "Close", pre, w) }) - menu_messageoptions := fyne.NewMenu("Γ", bit, bia, bic, red, blck) + menu_messageoptions := fyne.NewMenu("Γ", bit, bia, bic, rec, red, blck) ma := fyne.NewMainMenu(menu_help, menu_changeroom, menu_configureview, menu_messageoptions, menu_jokes) w.SetMainMenu(ma)