mirror of
https://gitlab.com/etke.cc/emm.git
synced 2025-02-13 02:35:48 +00:00
properly update replaced messages
This commit is contained in:
parent
a776108dd5
commit
7b8fa14e28
@ -1,12 +1,8 @@
|
|||||||
package export
|
package export
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
"maunium.net/go/mautrix/id"
|
|
||||||
|
|
||||||
"gitlab.com/etke.cc/emm/matrix"
|
"gitlab.com/etke.cc/emm/matrix"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,8 +24,8 @@ func Run(templatePath string, output string, messages []*matrix.Message) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, message := range messages {
|
for _, message := range messages {
|
||||||
if message.Replace != "" {
|
if message.Replaced {
|
||||||
remove(output, message.Replace)
|
continue
|
||||||
}
|
}
|
||||||
err = save(tpl, output, message)
|
err = save(tpl, output, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -40,17 +36,12 @@ func Run(templatePath string, output string, messages []*matrix.Message) error {
|
|||||||
return nil
|
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 {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,10 @@ 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 string
|
||||||
// Author is a matrix id of the sender
|
// Author is a matrix id of the sender
|
||||||
Author id.UserID
|
Author id.UserID
|
||||||
// Text is the message body in plaintext/markdown format
|
// Text is the message body in plaintext/markdown format
|
||||||
@ -54,7 +58,7 @@ func Messages(limit int) ([]*Message, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
removeReplaced()
|
markReplaced()
|
||||||
|
|
||||||
var messages []*Message
|
var messages []*Message
|
||||||
for _, message := range msgmap {
|
for _, message := range msgmap {
|
||||||
@ -165,15 +169,13 @@ func parseMessage(evt *event.Event) *Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeReplaced() {
|
func markReplaced() {
|
||||||
var list []id.EventID
|
log.Println("marking replaced messages...")
|
||||||
log.Println("removing replaced messages...")
|
|
||||||
for _, message := range msgmap {
|
for _, message := range msgmap {
|
||||||
if message.Replace != "" {
|
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