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

View File

@@ -549,36 +549,31 @@ func (t *TelegramClient) handleServiceMessage(ctx context.Context, msg *tg.Messa
log.Debug().
Str("old_portal_id", string(eventMeta.PortalKey.ID)).
Int64("channel_id", action.ChannelID).
Msg("Received chat migrate action message")
// TODO this shouldn't really be in a goroutine, but it seems like there's a deadlock somewhere
// if there's a CreateMatrixRoom call ongoing at the same time as migrateChat
// (guessing it's actually the GetChatInfo call that's getting stuck, but not sure)
go func() {
newPortalKey := t.makePortalKeyFromID(ids.PeerTypeChannel, action.ChannelID, 0)
if err := t.migrateChat(ctx, eventMeta.PortalKey, newPortalKey); err != nil {
log.Err(err).Msg("Failed to migrate chat to channel")
return
}
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Message[any]{
EventMeta: eventMeta.
WithPortalKey(newPortalKey).
WithStreamOrder(0).
WithType(bridgev2.RemoteEventMessage),
ID: ids.GetMessageIDFromMessage(msg),
ConvertMessageFunc: func(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, data any) (*bridgev2.ConvertedMessage, error) {
return &bridgev2.ConvertedMessage{
Parts: []*bridgev2.ConvertedMessagePart{{
Type: event.EventMessage,
Content: &event.MessageEventContent{
MsgType: event.MsgNotice,
Body: "Upgraded this group to a supergroup",
},
}},
}, nil
},
})
}()
return nil
Msg("MessageActionChatMigrateTo")
newPortalKey := t.makePortalKeyFromID(ids.PeerTypeChannel, action.ChannelID, 0)
if err := t.migrateChat(ctx, eventMeta.PortalKey, newPortalKey); err != nil {
log.Err(err).Msg("Failed to migrate chat to channel")
return err
}
res := t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.Message[any]{
EventMeta: eventMeta.
WithPortalKey(newPortalKey).
WithStreamOrder(0).
WithType(bridgev2.RemoteEventMessage),
ID: ids.GetMessageIDFromMessage(msg),
ConvertMessageFunc: func(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, data any) (*bridgev2.ConvertedMessage, error) {
return &bridgev2.ConvertedMessage{
Parts: []*bridgev2.ConvertedMessagePart{{
Type: event.EventMessage,
Content: &event.MessageEventContent{
MsgType: event.MsgNotice,
Body: "Upgraded this group to a supergroup",
},
}},
}, nil
},
})
return resultToError(res)
case *tg.MessageActionTopicCreate:
channelPeer, _ := msg.PeerID.(*tg.PeerChannel)
@@ -789,7 +784,6 @@ func (t *TelegramClient) updateChannel(ctx context.Context, channel *tg.Channel)
}
// 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 {
return nil, nil