From 4205047aab2e0639217148b5d125bfaab668bd8e Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Wed, 9 Oct 2024 11:17:51 -0600 Subject: [PATCH] chat delete: bridge properly Signed-off-by: Sumner Evans --- go.mod | 2 +- go.sum | 4 ++-- pkg/connector/client.go | 1 + pkg/connector/telegram.go | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2f0f9097..66a873a3 100644 --- a/go.mod +++ b/go.mod @@ -59,4 +59,4 @@ require ( rsc.io/qr v0.2.0 // indirect ) -replace github.com/gotd/td => github.com/beeper/td v0.107.1-0.20240925194934-90b1db6ce8fe +replace github.com/gotd/td => github.com/beeper/td v0.107.1-0.20241009171837-4aced54beeac diff --git a/go.sum b/go.sum index 2322deeb..72a37512 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= -github.com/beeper/td v0.107.1-0.20240925194934-90b1db6ce8fe h1:Cmdu2TlAbJYA8JCRlalxMyAXnLjq6XNUppqgMdBummA= -github.com/beeper/td v0.107.1-0.20240925194934-90b1db6ce8fe/go.mod h1:mwQQQrrAn3wizT37UjBAUB4lTy1j2RHnkRJ4z9ivqGs= +github.com/beeper/td v0.107.1-0.20241009171837-4aced54beeac h1:mzdAAwOOC662v42tjFWtwdRdnVsZvPjEx8+PWlrZm3E= +github.com/beeper/td v0.107.1-0.20241009171837-4aced54beeac/go.mod h1:mwQQQrrAn3wizT37UjBAUB4lTy1j2RHnkRJ4z9ivqGs= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 83523068..94967f6c 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -192,6 +192,7 @@ func NewTelegramClient(ctx context.Context, tc *TelegramConnector, login *bridge dispatcher.OnPeerBlocked(func(ctx context.Context, e tg.Entities, update *tg.UpdatePeerBlocked) error { return client.onPeerBlocked(ctx, update) }) + dispatcher.OnChat(client.onChat) client.ScopedStore = tc.Store.GetScopedStore(telegramUserID) diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index 1e15c3c0..b3ee3ec4 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -887,3 +887,18 @@ func (t *TelegramClient) onPeerBlocked(ctx context.Context, update *tg.UpdatePee }) return nil } + +func (t *TelegramClient) onChat(ctx context.Context, e tg.Entities, update *tg.UpdateChat) error { + if _, ok := e.ChatsForbidden[update.ChatID]; ok { + // The chat is now forbidden, we should leave it. + t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatDelete{ + OnlyForMe: true, + EventMeta: simplevent.EventMeta{ + Type: bridgev2.RemoteEventChatDelete, + PortalKey: t.makePortalKeyFromID(ids.PeerTypeChat, update.ChatID), + Sender: t.mySender(), + }, + }) + } + return nil +}