mirror of
https://gitlab.com/etke.cc/emm.git
synced 2025-02-12 18:25:48 +00:00
properly update replaced messages
This commit is contained in:
parent
a776108dd5
commit
7b8fa14e28
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user