From abba9bcf810b6eca394cc19275299810096fe498 Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Wed, 2 Oct 2024 10:56:49 -0600 Subject: [PATCH] pins: handle (un)favourite tags from the network connector Signed-off-by: Sumner Evans --- pkg/connector/client.go | 1 + pkg/connector/telegram.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index c114dc0d..0d7bfa09 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -79,6 +79,7 @@ var ( _ bridgev2.UserSearchingNetworkAPI = (*TelegramClient)(nil) _ bridgev2.GroupCreatingNetworkAPI = (*TelegramClient)(nil) _ bridgev2.MuteHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.TagHandlingNetworkAPI = (*TelegramClient)(nil) ) type UpdateDispatcher struct { diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index 5e8ed6e0..8526ef75 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -12,6 +12,7 @@ import ( "github.com/gotd/td/tgerr" "github.com/rs/zerolog" "go.mau.fi/util/ptr" + "golang.org/x/exp/maps" "maunium.net/go/mautrix/bridge/status" "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/database" @@ -756,3 +757,16 @@ func (t *TelegramClient) HandleMute(ctx context.Context, msg *bridgev2.MatrixMut }) return err } + +func (t *TelegramClient) HandleRoomTag(ctx context.Context, msg *bridgev2.MatrixRoomTag) error { + inputPeer, err := t.inputPeerForPortalID(ctx, msg.Portal.ID) + if err != nil { + return err + } + + _, err = t.client.API().MessagesToggleDialogPin(ctx, &tg.MessagesToggleDialogPinRequest{ + Pinned: slices.Contains(maps.Keys(msg.Content.Tags), event.RoomTagFavourite), + Peer: &tg.InputDialogPeer{Peer: inputPeer}, + }) + return err +}