From d359bafb533eed7fb266f00fd3d7199c3561e235 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 16 Sep 2025 22:47:48 +0300 Subject: [PATCH] connector: rename files to be more consistent with other bridges --- pkg/connector/backfill.go | 5 +++ pkg/connector/client.go | 18 +------- pkg/connector/{matrix.go => handlematrix.go} | 45 +++++++++++++++++++ .../{telegram.go => handletelegram.go} | 32 ------------- .../{startnewchat.go => startchat.go} | 7 +++ pkg/connector/{api.go => tgapicall.go} | 0 6 files changed, 58 insertions(+), 49 deletions(-) rename pkg/connector/{matrix.go => handlematrix.go} (93%) rename pkg/connector/{telegram.go => handletelegram.go} (97%) rename pkg/connector/{startnewchat.go => startchat.go} (97%) rename pkg/connector/{api.go => tgapicall.go} (100%) diff --git a/pkg/connector/backfill.go b/pkg/connector/backfill.go index 7d1ad240..1e9f83bb 100644 --- a/pkg/connector/backfill.go +++ b/pkg/connector/backfill.go @@ -34,6 +34,11 @@ import ( "go.mau.fi/mautrix-telegram/pkg/connector/ids" ) +var ( + _ bridgev2.BackfillingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.BackfillingNetworkAPIWithLimits = (*TelegramClient)(nil) +) + // getTakeoutID blocks until the takeout ID is available. func (t *TelegramClient) getTakeoutID(ctx context.Context) (takeoutID int64, err error) { // Always stop the takeout timeout timer diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 9f85d1be..3ad406af 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -109,23 +109,7 @@ type TelegramClient struct { prevReactionPoll map[networkid.PortalKey]time.Time } -var ( - _ bridgev2.NetworkAPI = (*TelegramClient)(nil) - _ bridgev2.EditHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.ReactionHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.RedactionHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.ReadReceiptHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.TypingHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.BackfillingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.BackfillingNetworkAPIWithLimits = (*TelegramClient)(nil) - _ bridgev2.IdentifierResolvingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.ContactListingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.UserSearchingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.GroupCreatingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.MuteHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.TagHandlingNetworkAPI = (*TelegramClient)(nil) - _ bridgev2.DisappearTimerChangingNetworkAPI = (*TelegramClient)(nil) -) +var _ bridgev2.NetworkAPI = (*TelegramClient)(nil) type UpdateDispatcher struct { tg.UpdateDispatcher diff --git a/pkg/connector/matrix.go b/pkg/connector/handlematrix.go similarity index 93% rename from pkg/connector/matrix.go rename to pkg/connector/handlematrix.go index 7e2bea1a..ba203f62 100644 --- a/pkg/connector/matrix.go +++ b/pkg/connector/handlematrix.go @@ -25,8 +25,10 @@ import ( "image" _ "image/jpeg" _ "image/png" + "math" "math/rand/v2" "os" + "slices" "strconv" "strings" "sync" @@ -36,6 +38,7 @@ import ( "go.mau.fi/util/ffmpeg" "go.mau.fi/util/variationselector" "go.mau.fi/webp" + "golang.org/x/exp/maps" "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/database" "maunium.net/go/mautrix/bridgev2/networkid" @@ -53,6 +56,17 @@ import ( "go.mau.fi/mautrix-telegram/pkg/connector/waveform" ) +var ( + _ bridgev2.EditHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.ReactionHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.RedactionHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.ReadReceiptHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.TypingHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.DisappearTimerChangingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.MuteHandlingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.TagHandlingNetworkAPI = (*TelegramClient)(nil) +) + func getMediaFilename(content *event.MessageEventContent) (filename string) { if content.FileName != "" { filename = content.FileName @@ -734,3 +748,34 @@ func (t *TelegramClient) HandleMatrixDisappearingTimer(ctx context.Context, msg } return err == nil, err } + +func (t *TelegramClient) HandleMute(ctx context.Context, msg *bridgev2.MatrixMute) error { + inputPeer, err := t.inputPeerForPortalID(ctx, msg.Portal.ID) + if err != nil { + return err + } + + settings := tg.InputPeerNotifySettings{ + Silent: msg.Content.IsMuted(), + MuteUntil: int(max(0, min(msg.Content.GetMutedUntilTime().Unix(), math.MaxInt32))), + } + + _, err = t.client.API().AccountUpdateNotifySettings(ctx, &tg.AccountUpdateNotifySettingsRequest{ + Peer: &tg.InputNotifyPeer{Peer: inputPeer}, + Settings: settings, + }) + 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 +} diff --git a/pkg/connector/telegram.go b/pkg/connector/handletelegram.go similarity index 97% rename from pkg/connector/telegram.go rename to pkg/connector/handletelegram.go index a73883e4..130b2056 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/handletelegram.go @@ -21,7 +21,6 @@ import ( "context" "errors" "fmt" - "math" "slices" "strings" "time" @@ -1172,24 +1171,6 @@ func (t *TelegramClient) onNotifySettings(ctx context.Context, e tg.Entities, up return resultToError(res) } -func (t *TelegramClient) HandleMute(ctx context.Context, msg *bridgev2.MatrixMute) error { - inputPeer, err := t.inputPeerForPortalID(ctx, msg.Portal.ID) - if err != nil { - return err - } - - settings := tg.InputPeerNotifySettings{ - Silent: msg.Content.IsMuted(), - MuteUntil: int(max(0, min(msg.Content.GetMutedUntilTime().Unix(), math.MaxInt32))), - } - - _, err = t.client.API().AccountUpdateNotifySettings(ctx, &tg.AccountUpdateNotifySettingsRequest{ - Peer: &tg.InputNotifyPeer{Peer: inputPeer}, - Settings: settings, - }) - return err -} - func (t *TelegramClient) onPinnedDialogs(ctx context.Context, e tg.Entities, msg *tg.UpdatePinnedDialogs) error { needsUnpinning := map[networkid.PortalKey]struct{}{} for _, portalID := range t.userLogin.Metadata.(*UserLoginMetadata).PinnedDialogs { @@ -1249,19 +1230,6 @@ func (t *TelegramClient) onPinnedDialogs(ctx context.Context, e tg.Entities, msg return t.userLogin.Save(ctx) } -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 -} - func (t *TelegramClient) onChatDefaultBannedRights(ctx context.Context, entities tg.Entities, update *tg.UpdateChatDefaultBannedRights) error { res := t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatResync{ ChatInfo: &bridgev2.ChatInfo{ diff --git a/pkg/connector/startnewchat.go b/pkg/connector/startchat.go similarity index 97% rename from pkg/connector/startnewchat.go rename to pkg/connector/startchat.go index 781e3bf3..bc3b40ca 100644 --- a/pkg/connector/startnewchat.go +++ b/pkg/connector/startchat.go @@ -33,6 +33,13 @@ import ( "go.mau.fi/mautrix-telegram/pkg/connector/ids" ) +var ( + _ bridgev2.IdentifierResolvingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.ContactListingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.UserSearchingNetworkAPI = (*TelegramClient)(nil) + _ bridgev2.GroupCreatingNetworkAPI = (*TelegramClient)(nil) +) + func (t *TelegramClient) getResolveIdentifierResponseForUser(ctx context.Context, user tg.UserClass) (*bridgev2.ResolveIdentifierResponse, error) { networkUserID := ids.MakeUserID(user.GetID()) if userInfo, err := t.getUserInfoFromTelegramUser(ctx, user); err != nil { diff --git a/pkg/connector/api.go b/pkg/connector/tgapicall.go similarity index 100% rename from pkg/connector/api.go rename to pkg/connector/tgapicall.go