sync: use GetChatInfo for handleDialogs (#120)
This commit is contained in:
+5
-60
@@ -149,34 +149,9 @@ func (t *TelegramClient) handleDialogs(ctx context.Context, dialogs tg.ModifiedM
|
|||||||
Msg("Not syncing portal because chat type is unsupported")
|
Msg("Not syncing portal because chat type is unsupported")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fullChat, err := APICallWithUpdates(ctx, t, func() (*tg.MessagesChatFull, error) {
|
chatInfo, err = t.GetChatInfo(ctx, portal)
|
||||||
return t.client.API().MessagesGetFullChat(ctx, chat.GetID())
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("failed to get chat info for %s: %w", portalKey, err)
|
||||||
}
|
|
||||||
chatFull, ok := fullChat.FullChat.(*tg.ChatFull)
|
|
||||||
var avatar *bridgev2.Avatar
|
|
||||||
if ok && chatFull.ChatPhoto != nil {
|
|
||||||
avatar, err = t.convertPhoto(ctx, ids.PeerTypeChat, chatFull.ID, chatFull.ChatPhoto)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chatInfo = &bridgev2.ChatInfo{
|
|
||||||
CanBackfill: true,
|
|
||||||
Name: &chat.(*tg.Chat).Title,
|
|
||||||
Members: &bridgev2.ChatMemberList{
|
|
||||||
PowerLevels: t.getGroupChatPowerLevels(ctx, chat),
|
|
||||||
MemberMap: map[networkid.UserID]bridgev2.ChatMember{
|
|
||||||
t.userID: {
|
|
||||||
EventSender: t.mySender(),
|
|
||||||
Membership: event.MembershipJoin,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Avatar: avatar,
|
|
||||||
}
|
}
|
||||||
case *tg.PeerChannel:
|
case *tg.PeerChannel:
|
||||||
channel := chats[peer.ChannelID]
|
channel := chats[peer.ChannelID]
|
||||||
@@ -192,39 +167,9 @@ func (t *TelegramClient) handleDialogs(ctx context.Context, dialogs tg.ModifiedM
|
|||||||
Msg("Not syncing portal because channel type is unsupported")
|
Msg("Not syncing portal because channel type is unsupported")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fullChannel := channel.(*tg.Channel)
|
chatInfo, err = t.GetChatInfo(ctx, portal)
|
||||||
var avatar *bridgev2.Avatar
|
if err != nil {
|
||||||
if photo, ok := fullChannel.GetPhoto().(*tg.ChatPhoto); ok {
|
return fmt.Errorf("failed to get chat info for %s: %w", portalKey, err)
|
||||||
avatar, err = t.convertChatPhoto(ctx, fullChannel.ID, fullChannel.AccessHash, photo)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
chatInfo = &bridgev2.ChatInfo{
|
|
||||||
CanBackfill: true,
|
|
||||||
Name: &channel.(*tg.Channel).Title,
|
|
||||||
Members: &bridgev2.ChatMemberList{
|
|
||||||
PowerLevels: t.getGroupChatPowerLevels(ctx, channel),
|
|
||||||
MemberMap: map[networkid.UserID]bridgev2.ChatMember{
|
|
||||||
t.userID: {
|
|
||||||
EventSender: t.mySender(),
|
|
||||||
Membership: event.MembershipJoin,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Avatar: avatar,
|
|
||||||
ExtraUpdates: func(ctx context.Context, p *bridgev2.Portal) bool {
|
|
||||||
return p.Metadata.(*PortalMetadata).SetIsSuperGroup(channel.(*tg.Channel).GetMegagroup())
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if !portal.Metadata.(*PortalMetadata).IsSuperGroup {
|
|
||||||
// Add the channel user
|
|
||||||
sender := ids.MakeChannelUserID(peer.ChannelID)
|
|
||||||
chatInfo.Members.MemberMap[sender] = bridgev2.ChatMember{
|
|
||||||
EventSender: bridgev2.EventSender{Sender: sender},
|
|
||||||
Membership: event.MembershipJoin,
|
|
||||||
PowerLevel: superadminPowerLevel,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user