@@ -549,36 +549,31 @@ func (t *TelegramClient) handleServiceMessage(ctx context.Context, msg *tg.Messa
549549 log .Debug ().
550550 Str ("old_portal_id" , string (eventMeta .PortalKey .ID )).
551551 Int64 ("channel_id" , action .ChannelID ).
552- Msg ("Received chat migrate action message" )
553- // TODO this shouldn't really be in a goroutine, but it seems like there's a deadlock somewhere
554- // if there's a CreateMatrixRoom call ongoing at the same time as migrateChat
555- // (guessing it's actually the GetChatInfo call that's getting stuck, but not sure)
556- go func () {
557- newPortalKey := t .makePortalKeyFromID (ids .PeerTypeChannel , action .ChannelID , 0 )
558- if err := t .migrateChat (ctx , eventMeta .PortalKey , newPortalKey ); err != nil {
559- log .Err (err ).Msg ("Failed to migrate chat to channel" )
560- return
561- }
562- t .main .Bridge .QueueRemoteEvent (t .userLogin , & simplevent.Message [any ]{
563- EventMeta : eventMeta .
564- WithPortalKey (newPortalKey ).
565- WithStreamOrder (0 ).
566- WithType (bridgev2 .RemoteEventMessage ),
567- ID : ids .GetMessageIDFromMessage (msg ),
568- ConvertMessageFunc : func (ctx context.Context , portal * bridgev2.Portal , intent bridgev2.MatrixAPI , data any ) (* bridgev2.ConvertedMessage , error ) {
569- return & bridgev2.ConvertedMessage {
570- Parts : []* bridgev2.ConvertedMessagePart {{
571- Type : event .EventMessage ,
572- Content : & event.MessageEventContent {
573- MsgType : event .MsgNotice ,
574- Body : "Upgraded this group to a supergroup" ,
575- },
576- }},
577- }, nil
578- },
579- })
580- }()
581- return nil
552+ Msg ("MessageActionChatMigrateTo" )
553+ newPortalKey := t .makePortalKeyFromID (ids .PeerTypeChannel , action .ChannelID , 0 )
554+ if err := t .migrateChat (ctx , eventMeta .PortalKey , newPortalKey ); err != nil {
555+ log .Err (err ).Msg ("Failed to migrate chat to channel" )
556+ return err
557+ }
558+ res := t .main .Bridge .QueueRemoteEvent (t .userLogin , & simplevent.Message [any ]{
559+ EventMeta : eventMeta .
560+ WithPortalKey (newPortalKey ).
561+ WithStreamOrder (0 ).
562+ WithType (bridgev2 .RemoteEventMessage ),
563+ ID : ids .GetMessageIDFromMessage (msg ),
564+ ConvertMessageFunc : func (ctx context.Context , portal * bridgev2.Portal , intent bridgev2.MatrixAPI , data any ) (* bridgev2.ConvertedMessage , error ) {
565+ return & bridgev2.ConvertedMessage {
566+ Parts : []* bridgev2.ConvertedMessagePart {{
567+ Type : event .EventMessage ,
568+ Content : & event.MessageEventContent {
569+ MsgType : event .MsgNotice ,
570+ Body : "Upgraded this group to a supergroup" ,
571+ },
572+ }},
573+ }, nil
574+ },
575+ })
576+ return resultToError (res )
582577
583578 case * tg.MessageActionTopicCreate :
584579 channelPeer , _ := msg .PeerID .(* tg.PeerChannel )
@@ -789,7 +784,6 @@ func (t *TelegramClient) updateChannel(ctx context.Context, channel *tg.Channel)
789784 }
790785
791786 // TODO resync portal metadata?
792- // (actually don't, that might cause deadlocks if done while the portal is fetching its own info for creation)
793787
794788 if ! channel .Broadcast {
795789 return nil , nil
0 commit comments