From 7b8fa14e28d22a2ca3c7ad4f588d58838f5ade1b Mon Sep 17 00:00:00 2001 From: Aine Date: Mon, 3 Apr 2023 10:07:26 +0300 Subject: [PATCH] properly update replaced messages --- export/export.go | 23 +++++++---------------- matrix/messages.go | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/export/export.go b/export/export.go index f883415..2d47e05 100644 --- a/export/export.go +++ b/export/export.go @@ -1,12 +1,8 @@ package export import ( - "fmt" - "os" "text/template" - "maunium.net/go/mautrix/id" - "gitlab.com/etke.cc/emm/matrix" ) @@ -28,8 +24,8 @@ func Run(templatePath string, output string, messages []*matrix.Message) error { return err } for _, message := range messages { - if message.Replace != "" { - remove(output, message.Replace) + if message.Replaced { + continue } err = save(tpl, output, message) if err != nil { @@ -40,17 +36,12 @@ func Run(templatePath string, output string, messages []*matrix.Message) error { return nil } -func remove(output string, eventID id.EventID) { - if !isMulti(output) { - return - } - - // nolint // in 99.99% cases it will be "no such file or directory" error, which is ok. - os.Remove(fmt.Sprintf(output, eventID)) -} - func save(tpl *template.Template, path string, message *matrix.Message) error { - file, err := getOutput(path, message.ID) + eventID := message.ID + if message.Replace != "" { + eventID = message.Replace + } + file, err := getOutput(path, eventID) if err != nil { return err } diff --git a/matrix/messages.go b/matrix/messages.go index 66f019b..e769473 100644 --- a/matrix/messages.go +++ b/matrix/messages.go @@ -18,6 +18,10 @@ type Message struct { ID id.EventID // Replace is a matrix ID of old (replaced) event Replace id.EventID + // Replaced is a flag that message was replaced + Replaced bool + // ReplacedNote is a text note usable from template to mark replaced message as updated + ReplacedNote string // Author is a matrix id of the sender Author id.UserID // Text is the message body in plaintext/markdown format @@ -54,7 +58,7 @@ func Messages(limit int) ([]*Message, error) { return nil, err } - removeReplaced() + markReplaced() var messages []*Message for _, message := range msgmap { @@ -165,15 +169,13 @@ func parseMessage(evt *event.Event) *Message { } } -func removeReplaced() { - var list []id.EventID - log.Println("removing replaced messages...") +func markReplaced() { + log.Println("marking replaced messages...") for _, message := range msgmap { if message.Replace != "" { - list = append(list, message.Replace) + message.ReplacedNote = " (updated)" + msgmap[message.Replace].Replaced = true + msgmap[message.Replace].ReplacedNote = " (updated)" } } - for _, eventID := range list { - delete(msgmap, eventID) - } }