client: enqueue backfill if channel too long
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
+15
-1
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user