From 284178df65c0f00f6e9eb4feb38bf4e8d5bf7693 Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Tue, 20 Aug 2024 14:05:48 -0600 Subject: [PATCH] client: enqueue backfill if channel too long Signed-off-by: Sumner Evans --- pkg/connector/client.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index e0cff497..e173c979 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -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))