From 728146484359fb00ba9393b0f1daf87cc5736d44 Mon Sep 17 00:00:00 2001 From: Aine Date: Thu, 6 Apr 2023 23:32:42 +0300 Subject: [PATCH] adjust mesage replacement based on timestamp, use replaced messages' IDs --- export/export.go | 9 +-------- matrix/messages.go | 34 ++++++++++++++++++---------------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/export/export.go b/export/export.go index 2d47e05..07e1d57 100644 --- a/export/export.go +++ b/export/export.go @@ -24,9 +24,6 @@ func Run(templatePath string, output string, messages []*matrix.Message) error { return err } for _, message := range messages { - if message.Replaced { - continue - } err = save(tpl, output, message) if err != nil { return err @@ -37,11 +34,7 @@ func Run(templatePath string, output string, messages []*matrix.Message) error { } func save(tpl *template.Template, path string, message *matrix.Message) error { - eventID := message.ID - if message.Replace != "" { - eventID = message.Replace - } - file, err := getOutput(path, eventID) + file, err := getOutput(path, message.ID) if err != nil { return err } diff --git a/matrix/messages.go b/matrix/messages.go index e769473..c697535 100644 --- a/matrix/messages.go +++ b/matrix/messages.go @@ -18,8 +18,6 @@ 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 @@ -48,7 +46,7 @@ var ( // * some room messages don't contain body/formatted body func Messages(limit int) ([]*Message, error) { var err error - msgmap = make(map[id.EventID]*Message) + msgmap = make(map[id.EventID]*Message, 0) if limit > Page { err = paginate(limit) } else { @@ -58,8 +56,6 @@ func Messages(limit int) ([]*Message, error) { return nil, err } - markReplaced() - var messages []*Message for _, message := range msgmap { messages = append(messages, message) @@ -131,6 +127,23 @@ func processEvents(resp *mautrix.RespMessages) { if message == nil { continue } + addMessage(message) + } +} + +func addMessage(message *Message) { + if message.Replace != "" { + message.ID = message.Replace + message.ReplacedNote = " (updated)" + } + + msg, ok := msgmap[message.ID] + if !ok { + msgmap[message.ID] = message + return + } + + if msg.CreatedAtFull.Before(message.CreatedAtFull) { msgmap[message.ID] = message } } @@ -168,14 +181,3 @@ func parseMessage(evt *event.Event) *Message { CreatedAtFull: createdAt, } } - -func markReplaced() { - log.Println("marking replaced messages...") - for _, message := range msgmap { - if message.Replace != "" { - message.ReplacedNote = " (updated)" - msgmap[message.Replace].Replaced = true - msgmap[message.Replace].ReplacedNote = " (updated)" - } - } -}