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
|
return err
|
||||||
}
|
}
|
||||||
for _, message := range messages {
|
for _, message := range messages {
|
||||||
if message.Replaced {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
err = save(tpl, output, message)
|
err = save(tpl, output, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
func save(tpl *template.Template, path string, message *matrix.Message) error {
|
||||||
eventID := message.ID
|
file, err := getOutput(path, message.ID)
|
||||||
if message.Replace != "" {
|
|
||||||
eventID = message.Replace
|
|
||||||
}
|
|
||||||
file, err := getOutput(path, eventID)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,6 @@ type Message struct {
|
|||||||
ID id.EventID
|
ID id.EventID
|
||||||
// Replace is a matrix ID of old (replaced) event
|
// Replace is a matrix ID of old (replaced) event
|
||||||
Replace id.EventID
|
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 is a text note usable from template to mark replaced message as updated
|
||||||
ReplacedNote string
|
ReplacedNote string
|
||||||
// Author is a matrix id of the sender
|
// Author is a matrix id of the sender
|
||||||
@ -48,7 +46,7 @@ var (
|
|||||||
// * some room messages don't contain body/formatted body
|
// * some room messages don't contain body/formatted body
|
||||||
func Messages(limit int) ([]*Message, error) {
|
func Messages(limit int) ([]*Message, error) {
|
||||||
var err error
|
var err error
|
||||||
msgmap = make(map[id.EventID]*Message)
|
msgmap = make(map[id.EventID]*Message, 0)
|
||||||
if limit > Page {
|
if limit > Page {
|
||||||
err = paginate(limit)
|
err = paginate(limit)
|
||||||
} else {
|
} else {
|
||||||
@ -58,8 +56,6 @@ func Messages(limit int) ([]*Message, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
markReplaced()
|
|
||||||
|
|
||||||
var messages []*Message
|
var messages []*Message
|
||||||
for _, message := range msgmap {
|
for _, message := range msgmap {
|
||||||
messages = append(messages, message)
|
messages = append(messages, message)
|
||||||
@ -131,6 +127,23 @@ func processEvents(resp *mautrix.RespMessages) {
|
|||||||
if message == nil {
|
if message == nil {
|
||||||
continue
|
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
|
msgmap[message.ID] = message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,14 +181,3 @@ func parseMessage(evt *event.Event) *Message {
|
|||||||
CreatedAtFull: createdAt,
|
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