mirror of
https://gitlab.com/etke.cc/emm.git
synced 2025-02-08 16:25:47 +00:00
adjust mesage replacement based on timestamp, use replaced messages' IDs
This commit is contained in:
parent
7b8fa14e28
commit
7281464843
@ -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
|
||||
}
|
||||
|
@ -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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user