client: enqueue backfill if channel too long

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-08-20 14:05:48 -06:00
parent 56f83315ed
commit 284178df65
+15 -1
View File
@@ -18,7 +18,9 @@ import (
"go.uber.org/zap"
"maunium.net/go/mautrix/bridge/status"
"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/id"
"go.mau.fi/mautrix-telegram/pkg/connector/ids"
@@ -160,7 +162,16 @@ func NewTelegramClient(ctx context.Context, tc *TelegramConnector, login *bridge
client.updatesManager = updates.New(updates.Config{
OnChannelTooLong: func(channelID int64) {
log.Warn().Int64("channel_id", channelID).Msg("channel too long")
tc.Bridge.QueueRemoteEvent(login, &simplevent.ChatResync{
EventMeta: simplevent.EventMeta{
Type: bridgev2.RemoteEventChatResync,
LogContext: func(c zerolog.Context) zerolog.Context {
return c.Str("update", "channel_too_long").Int64("channel_id", channelID)
},
PortalKey: ids.PeerTypeChannel.AsPortalKey(channelID, login.ID),
},
CheckNeedsBackfillFunc: func(ctx context.Context, latestMessage *database.Message) (bool, error) { return true, nil },
})
},
Handler: dispatcher,
Logger: zaplog.Named("gaps"),
@@ -251,6 +262,9 @@ func NewTelegramClient(ctx context.Context, tc *TelegramConnector, login *bridge
if err != nil {
log.Err(err).Msg("error getting portal")
return url
} else if portal == nil {
log.Warn().Msg("portal not found")
return url
}
message, err := tc.Bridge.DB.Message.GetFirstPartByID(ctx, client.loginID, ids.MakeMessageID(msgID))