Revert "handletelegram: do portal re-id in background"

This reverts commit 37d34a4ab6.
This commit is contained in:
Tulir Asokan
2025-12-19 13:33:01 +02:00
parent 37d34a4ab6
commit b5d6e2ac6b
+25 -31
View File
@@ -549,36 +549,31 @@ func (t *TelegramClient) handleServiceMessage(ctx context.Context, msg *tg.Messa
log.Debug(). log.Debug().
Str("old_portal_id", string(eventMeta.PortalKey.ID)). Str("old_portal_id", string(eventMeta.PortalKey.ID)).
Int64("channel_id", action.ChannelID). Int64("channel_id", action.ChannelID).
Msg("Received chat migrate action message") Msg("MessageActionChatMigrateTo")
// TODO this shouldn't really be in a goroutine, but it seems like there's a deadlock somewhere newPortalKey := t.makePortalKeyFromID(ids.PeerTypeChannel, action.ChannelID, 0)
// if there's a CreateMatrixRoom call ongoing at the same time as migrateChat if err := t.migrateChat(ctx, eventMeta.PortalKey, newPortalKey); err != nil {
// (guessing it's actually the GetChatInfo call that's getting stuck, but not sure) log.Err(err).Msg("Failed to migrate chat to channel")
go func() { return err
newPortalKey := t.makePortalKeyFromID(ids.PeerTypeChannel, action.ChannelID, 0) }
if err := t.migrateChat(ctx, eventMeta.PortalKey, newPortalKey); err != nil { res := t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Message[any]{
log.Err(err).Msg("Failed to migrate chat to channel") EventMeta: eventMeta.
return WithPortalKey(newPortalKey).
} WithStreamOrder(0).
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Message[any]{ WithType(bridgev2.RemoteEventMessage),
EventMeta: eventMeta. ID: ids.GetMessageIDFromMessage(msg),
WithPortalKey(newPortalKey). ConvertMessageFunc: func(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, data any) (*bridgev2.ConvertedMessage, error) {
WithStreamOrder(0). return &bridgev2.ConvertedMessage{
WithType(bridgev2.RemoteEventMessage), Parts: []*bridgev2.ConvertedMessagePart{{
ID: ids.GetMessageIDFromMessage(msg), Type: event.EventMessage,
ConvertMessageFunc: func(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, data any) (*bridgev2.ConvertedMessage, error) { Content: &event.MessageEventContent{
return &bridgev2.ConvertedMessage{ MsgType: event.MsgNotice,
Parts: []*bridgev2.ConvertedMessagePart{{ Body: "Upgraded this group to a supergroup",
Type: event.EventMessage, },
Content: &event.MessageEventContent{ }},
MsgType: event.MsgNotice, }, nil
Body: "Upgraded this group to a supergroup", },
}, })
}}, return resultToError(res)
}, nil
},
})
}()
return nil
case *tg.MessageActionTopicCreate: case *tg.MessageActionTopicCreate:
channelPeer, _ := msg.PeerID.(*tg.PeerChannel) channelPeer, _ := msg.PeerID.(*tg.PeerChannel)
@@ -789,7 +784,6 @@ func (t *TelegramClient) updateChannel(ctx context.Context, channel *tg.Channel)
} }
// TODO resync portal metadata? // TODO resync portal metadata?
// (actually don't, that might cause deadlocks if done while the portal is fetching its own info for creation)
if !channel.Broadcast { if !channel.Broadcast {
return nil, nil return nil, nil