From af9ce963a9467892b8c8bbe33f751b418a5896d0 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 30 Mar 2026 14:42:58 +0300 Subject: [PATCH] userinfo: sync ghost info for non-broadcast channels too --- pkg/connector/handletelegram.go | 41 ++++----------------------------- pkg/connector/metadata.go | 1 - pkg/connector/userinfo.go | 9 -------- 3 files changed, 4 insertions(+), 47 deletions(-) diff --git a/pkg/connector/handletelegram.go b/pkg/connector/handletelegram.go index 528f5129..f7551424 100644 --- a/pkg/connector/handletelegram.go +++ b/pkg/connector/handletelegram.go @@ -818,47 +818,14 @@ func (t *TelegramClient) updateGhost(ctx context.Context, userID int64, user *tg } func (t *TelegramClient) updateChannel(ctx context.Context, channel *tg.Channel) (*bridgev2.UserInfo, error) { - if accessHash, ok := channel.GetAccessHash(); ok && !channel.Min { - if err := t.ScopedStore.SetAccessHash(ctx, ids.PeerTypeChannel, channel.ID, accessHash); err != nil { - return nil, err - } - } - // TODO resync portal metadata? - - if !channel.Broadcast { - return nil, nil - } - - // Update the channel ghost if this is a broadcast channel. - ghost, err := t.main.Bridge.GetGhostByID(ctx, ids.MakeChannelUserID(channel.ID)) + userInfo, err := t.wrapChannelGhostInfo(ctx, channel) if err != nil { return nil, err } - - var avatar *bridgev2.Avatar - if photo, ok := channel.GetPhoto().(*tg.ChatPhoto); ok { - avatar, err = t.convertChatPhoto(channel.AsInputPeer(), photo) - if err != nil { - return nil, err - } - } - - if username, set := channel.GetUsername(); set { - err := t.main.Store.Username.Set(ctx, ids.PeerTypeChannel, channel.ID, username) - if err != nil { - return nil, err - } - } - - userInfo := &bridgev2.UserInfo{ - Name: &channel.Title, - Avatar: avatar, - ExtraUpdates: func(ctx context.Context, g *bridgev2.Ghost) bool { - updated := !g.Metadata.(*GhostMetadata).IsChannel - g.Metadata.(*GhostMetadata).IsChannel = true - return updated - }, + ghost, err := t.main.Bridge.GetGhostByID(ctx, ids.MakeChannelUserID(channel.ID)) + if err != nil { + return nil, err } ghost.UpdateInfo(ctx, userInfo) return userInfo, nil diff --git a/pkg/connector/metadata.go b/pkg/connector/metadata.go index c1755171..cb47c9cf 100644 --- a/pkg/connector/metadata.go +++ b/pkg/connector/metadata.go @@ -41,7 +41,6 @@ func (tg *TelegramConnector) GetDBMetaTypes() database.MetaTypes { type GhostMetadata struct { IsPremium bool `json:"is_premium,omitempty"` - IsChannel bool `json:"is_channel,omitempty"` Deleted bool `json:"deleted,omitempty"` NotMin bool `json:"not_min,omitempty"` diff --git a/pkg/connector/userinfo.go b/pkg/connector/userinfo.go index df5da7ec..e4f6d537 100644 --- a/pkg/connector/userinfo.go +++ b/pkg/connector/userinfo.go @@ -187,10 +187,6 @@ func (t *TelegramClient) wrapChannelGhostInfo(ctx context.Context, channel *tg.C } } - if !channel.Broadcast { - return nil, nil - } - var avatar *bridgev2.Avatar avatar, err = t.convertChatPhoto(channel.AsInputPeer(), channel.GetPhoto()) if err != nil { @@ -210,11 +206,6 @@ func (t *TelegramClient) wrapChannelGhostInfo(ctx context.Context, channel *tg.C Name: &channel.Title, Avatar: avatar, Identifiers: identifiers, - ExtraUpdates: func(ctx context.Context, g *bridgev2.Ghost) bool { - updated := !g.Metadata.(*GhostMetadata).IsChannel - g.Metadata.(*GhostMetadata).IsChannel = true - return updated - }, }, nil }