sync: fix setting memberships

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-10-04 08:12:46 -06:00
parent 8480c8aa68
commit 17e4e20a93
+25 -12
View File
@@ -104,37 +104,50 @@ func (t *TelegramClient) handleDialogs(ctx context.Context, dialogs tg.ModifiedM
} }
chatInfo := bridgev2.ChatInfo{ chatInfo := bridgev2.ChatInfo{
UserLocal: &bridgev2.UserLocalPortalInfo{}, UserLocal: &bridgev2.UserLocalPortalInfo{},
Members: &bridgev2.ChatMemberList{}, Members: &bridgev2.ChatMemberList{
MemberMap: map[networkid.UserID]bridgev2.ChatMember{
t.userID: bridgev2.ChatMember{
EventSender: t.mySender(),
Membership: event.MembershipJoin,
},
},
},
} }
switch peer := dialog.Peer.(type) { switch peer := dialog.Peer.(type) {
case *tg.PeerUser: case *tg.PeerUser:
if users[ids.MakeUserID(peer.UserID)].(*tg.User).GetDeleted() { userID := ids.MakeUserID(peer.UserID)
if users[userID].(*tg.User).GetDeleted() {
log.Debug().Msg("Not syncing portal because user is deleted") log.Debug().Msg("Not syncing portal because user is deleted")
continue continue
} }
chatInfo.Members.MemberMap[userID] = bridgev2.ChatMember{
EventSender: t.senderForUserID(peer.UserID),
Membership: event.MembershipJoin,
}
case *tg.PeerChat: case *tg.PeerChat:
chatInfo.Members.PowerLevels = t.getGroupChatPowerLevels(chats[peer.ChatID]) chatInfo.Members.PowerLevels = t.getGroupChatPowerLevels(chats[peer.ChatID])
chatInfo.Name = &chats[peer.ChatID].(*tg.Chat).Title chatInfo.Name = &chats[peer.ChatID].(*tg.Chat).Title
case *tg.PeerChannel: case *tg.PeerChannel:
chatInfo.Name = &chats[peer.ChannelID].(*tg.Channel).Title channel := chats[peer.ChannelID].(*tg.Channel)
chatInfo.Members.PowerLevels = t.getGroupChatPowerLevels(chats[peer.ChannelID]) chatInfo.Name = &channel.Title
chatInfo.Members.PowerLevels = t.getGroupChatPowerLevels(channel)
if !portal.Metadata.(*PortalMetadata).IsSuperGroup { if !portal.Metadata.(*PortalMetadata).IsSuperGroup {
// Add the channel user // Add the channel user
sender := ids.MakeChannelUserID(peer.ChannelID) sender := ids.MakeChannelUserID(peer.ChannelID)
chatInfo.Members.MemberMap = map[networkid.UserID]bridgev2.ChatMember{ chatInfo.Members.MemberMap = map[networkid.UserID]bridgev2.ChatMember{
sender: bridgev2.ChatMember{ sender: bridgev2.ChatMember{
EventSender: bridgev2.EventSender{Sender: sender}, EventSender: bridgev2.EventSender{Sender: sender},
PowerLevel: modPowerLevel, Membership: event.MembershipJoin,
PowerLevel: superadminPowerLevel,
}, },
} }
if chats[peer.ChannelID].(*tg.Channel).AdminRights.PostMessages { chatInfo.Members.MemberMap = map[networkid.UserID]bridgev2.ChatMember{
chatInfo.Members.MemberMap = map[networkid.UserID]bridgev2.ChatMember{ t.userID: bridgev2.ChatMember{
t.userID: bridgev2.ChatMember{ EventSender: t.mySender(),
EventSender: t.mySender(), Membership: event.MembershipJoin,
PowerLevel: modPowerLevel, PowerLevel: adminRightsToPowerLevel(channel.AdminRights),
}, },
}
} }
} }