resync: resync portals upon viewing if they haven't been synced in the last 24h (#124)

This commit is contained in:
Adam Van Ymeren
2025-09-25 12:34:41 -07:00
committed by GitHub
parent a280c3a4b9
commit a38c3e5d00
4 changed files with 61 additions and 16 deletions
+19
View File
@@ -42,6 +42,7 @@ import (
"maunium.net/go/mautrix/bridgev2"
"maunium.net/go/mautrix/bridgev2/database"
"maunium.net/go/mautrix/bridgev2/networkid"
"maunium.net/go/mautrix/bridgev2/simplevent"
"maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/id"
@@ -65,6 +66,7 @@ var (
_ bridgev2.DisappearTimerChangingNetworkAPI = (*TelegramClient)(nil)
_ bridgev2.MuteHandlingNetworkAPI = (*TelegramClient)(nil)
_ bridgev2.TagHandlingNetworkAPI = (*TelegramClient)(nil)
_ bridgev2.ChatViewingNetworkAPI = (*TelegramClient)(nil)
)
func getMediaFilename(content *event.MessageEventContent) (filename string) {
@@ -85,6 +87,23 @@ func getMediaFilename(content *event.MessageEventContent) (filename string) {
return filename
}
func (t *TelegramClient) HandleMatrixViewingChat(ctx context.Context, msg *bridgev2.MatrixViewingChat) error {
if msg.Portal == nil {
return nil
}
meta := msg.Portal.Metadata.(*PortalMetadata)
if meta.LastSync.Add(24 * time.Hour).Before(time.Now()) {
t.userLogin.QueueRemoteEvent(&simplevent.ChatResync{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatResync,
PortalKey: msg.Portal.PortalKey,
},
GetChatInfoFunc: t.GetChatInfo,
})
}
return nil
}
func (t *TelegramClient) transferMediaToTelegram(ctx context.Context, content *event.MessageEventContent, sticker bool) (tg.InputMediaClass, error) {
var upload tg.InputFileClass
var forceDocument bool