cache and encrypt email threads metadata

This commit is contained in:
Aine
2022-11-14 18:18:30 +02:00
parent d5f2a6b75f
commit ce1599d8a3

View File

@@ -289,16 +289,13 @@ func (b *Bot) getThreadID(roomID id.RoomID, messageID string, references string)
for _, refID := range refs { for _, refID := range refs {
key := acMessagePrefix + "." + refID key := acMessagePrefix + "." + refID
data := map[string]id.EventID{} data, err := b.lp.GetRoomAccountData(roomID, key)
err := b.lp.GetClient().GetRoomAccountData(roomID, key, &data)
if err != nil { if err != nil {
if !strings.Contains(err.Error(), "M_NOT_FOUND") { b.log.Error("cannot retrieve thread ID from %s: %v", key, err)
b.log.Error("cannot retrieve account data %s: %v", key, err)
continue continue
} }
}
if data["eventID"] != "" { if data["eventID"] != "" {
return data["eventID"] return id.EventID(data["eventID"])
} }
} }
@@ -307,42 +304,30 @@ func (b *Bot) getThreadID(roomID id.RoomID, messageID string, references string)
func (b *Bot) setThreadID(roomID id.RoomID, messageID string, eventID id.EventID) { func (b *Bot) setThreadID(roomID id.RoomID, messageID string, eventID id.EventID) {
key := acMessagePrefix + "." + messageID key := acMessagePrefix + "." + messageID
data := map[string]id.EventID{ err := b.lp.SetRoomAccountData(roomID, key, map[string]string{"eventID": eventID.String()})
"eventID": eventID,
}
err := b.lp.GetClient().SetRoomAccountData(roomID, key, data)
if err != nil { if err != nil {
if !strings.Contains(err.Error(), "M_NOT_FOUND") { b.log.Error("cannot save thread ID to %s: %v", key, err)
b.log.Error("cannot save account data %s: %v", key, err)
}
} }
} }
func (b *Bot) getLastEventID(roomID id.RoomID, threadID id.EventID) id.EventID { func (b *Bot) getLastEventID(roomID id.RoomID, threadID id.EventID) id.EventID {
key := acLastEventPrefix + "." + threadID.String() key := acLastEventPrefix + "." + threadID.String()
data := map[string]id.EventID{} data, err := b.lp.GetRoomAccountData(roomID, key)
err := b.lp.GetClient().GetRoomAccountData(roomID, key, &data)
if err != nil { if err != nil {
if !strings.Contains(err.Error(), "M_NOT_FOUND") { b.log.Error("cannot retrieve last event ID from %s: %v", key, err)
b.log.Error("cannot retrieve account data %s: %v", key, err)
return threadID return threadID
} }
if data["eventID"] != "" {
return id.EventID(data["eventID"])
} }
return data["eventID"] return threadID
} }
func (b *Bot) setLastEventID(roomID id.RoomID, threadID id.EventID, eventID id.EventID) { func (b *Bot) setLastEventID(roomID id.RoomID, threadID id.EventID, eventID id.EventID) {
key := acLastEventPrefix + "." + threadID.String() key := acLastEventPrefix + "." + threadID.String()
data := map[string]id.EventID{ err := b.lp.SetRoomAccountData(roomID, key, map[string]string{"eventID": eventID.String()})
"eventID": eventID,
}
err := b.lp.GetClient().SetRoomAccountData(roomID, key, data)
if err != nil { if err != nil {
if !strings.Contains(err.Error(), "M_NOT_FOUND") { b.log.Error("cannot save thread ID to %s: %v", key, err)
b.log.Error("cannot save account data %s: %v", key, err)
}
} }
} }