From 7ccd8ab4abcf5caf62457e0c68fb5394c5ab55af Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Thu, 26 Sep 2024 10:02:55 -0600 Subject: [PATCH] portal: handle self-leaves of groups Signed-off-by: Sumner Evans --- pkg/connector/telegram.go | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index e0285064..5515348b 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -69,21 +69,22 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMess case *tg.MessageService: sender := t.getEventSender(msg) - chatInfoChange := simplevent.ChatInfoChange{ - EventMeta: simplevent.EventMeta{ - Type: bridgev2.RemoteEventChatInfoChange, - PortalKey: t.makePortalKeyFromPeer(msg.PeerID), - Sender: sender, - Timestamp: time.Unix(int64(msg.Date), 0), - LogContext: func(c zerolog.Context) zerolog.Context { - return c. - Int("message_id", msg.GetID()). - Str("sender", string(sender.Sender)). - Str("sender_login", string(sender.SenderLogin)). - Bool("is_from_me", sender.IsFromMe). - Stringer("peer_id", msg.PeerID) - }, + eventMeta := simplevent.EventMeta{ + Type: bridgev2.RemoteEventChatInfoChange, + PortalKey: t.makePortalKeyFromPeer(msg.PeerID), + Sender: sender, + Timestamp: time.Unix(int64(msg.Date), 0), + LogContext: func(c zerolog.Context) zerolog.Context { + return c. + Int("message_id", msg.GetID()). + Str("sender", string(sender.Sender)). + Str("sender_login", string(sender.SenderLogin)). + Bool("is_from_me", sender.IsFromMe). + Stringer("peer_id", msg.PeerID) }, + } + chatInfoChange := simplevent.ChatInfoChange{ + EventMeta: eventMeta, ChatInfoChange: &bridgev2.ChatInfoChange{}, } @@ -116,6 +117,14 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMess } case *tg.MessageActionChatDeleteUser: sender := ids.MakeUserID(action.UserID) + if action.UserID == t.telegramUserID { + eventMeta.Type = bridgev2.RemoteEventChatDelete + t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatDelete{ + EventMeta: eventMeta, + OnlyForMe: true, + }) + return nil + } chatInfoChange.ChatInfoChange.MemberChanges = &bridgev2.ChatMemberList{ MemberMap: map[networkid.UserID]bridgev2.ChatMember{ sender: {