client: handle group chat and channel creation events

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-10-01 10:23:48 -06:00
parent 9609f437d5
commit 6f4e32fad0
5 changed files with 57 additions and 28 deletions
+3 -7
View File
@@ -276,13 +276,9 @@ func (t *TelegramClient) FetchMessages(ctx context.Context, fetchParams bridgev2
backfillMessage.Reactions = append(backfillMessage.Reactions, &bridgev2.BackfillReaction{
Timestamp: time.Unix(int64(reaction.Date), 0),
Sender: bridgev2.EventSender{
IsFromMe: peer.UserID == t.telegramUserID,
SenderLogin: ids.MakeUserLoginID(peer.UserID),
Sender: ids.MakeUserID(peer.UserID),
},
EmojiID: emojiID,
Emoji: emoji,
Sender: t.senderForUserID(peer.UserID),
EmojiID: emojiID,
Emoji: emoji,
})
}
+3 -12
View File
@@ -108,11 +108,7 @@ func (t *TelegramClient) filterChannelParticipants(chatParticipants []tg.Channel
}
members = append(members, bridgev2.ChatMember{
EventSender: bridgev2.EventSender{
IsFromMe: userIDable.GetUserID() == t.telegramUserID,
SenderLogin: ids.MakeUserLoginID(userIDable.GetUserID()),
Sender: ids.MakeUserID(userIDable.GetUserID()),
},
EventSender: t.senderForUserID(userIDable.GetUserID()),
})
if len(members) >= limit {
@@ -167,13 +163,8 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
continue
}
sender := ids.MakeUserID(user.GetUserID())
chatInfo.Members.MemberMap[sender] = bridgev2.ChatMember{
EventSender: bridgev2.EventSender{
IsFromMe: user.GetUserID() == t.telegramUserID,
SenderLogin: ids.MakeUserLoginID(user.GetUserID()),
Sender: sender,
},
chatInfo.Members.MemberMap[ids.MakeUserID(user.GetUserID())] = bridgev2.ChatMember{
EventSender: t.senderForUserID(user.GetUserID()),
}
if len(chatInfo.Members.MemberMap) >= t.main.Config.MemberList.NormalizedMaxInitialSync() {
+8
View File
@@ -565,3 +565,11 @@ func (t *TelegramClient) mySender() bridgev2.EventSender {
Sender: t.userID,
}
}
func (t *TelegramClient) senderForUserID(userID int64) bridgev2.EventSender {
return bridgev2.EventSender{
IsFromMe: userID == t.telegramUserID,
SenderLogin: ids.MakeUserLoginID(userID),
Sender: ids.MakeUserID(userID),
}
}
+3 -7
View File
@@ -135,13 +135,9 @@ func (t *TelegramClient) handleTelegramReactions(ctx context.Context, msg *tg.Me
users[userID].Reactions = append(users[userID].Reactions, &bridgev2.BackfillReaction{
Timestamp: time.Unix(int64(reaction.Date), 0),
Sender: bridgev2.EventSender{
IsFromMe: peer.UserID == t.telegramUserID,
SenderLogin: ids.MakeUserLoginID(peer.UserID),
Sender: userID,
},
EmojiID: emojiID,
Emoji: emoji,
Sender: t.senderForUserID(peer.UserID),
EmojiID: emojiID,
Emoji: emoji,
})
}
+40 -2
View File
@@ -196,8 +196,46 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, channels map[in
},
},
}
// case *tg.MessageActionChatCreate:
// case *tg.MessageActionChannelCreate:
case *tg.MessageActionChatCreate:
memberMap := map[networkid.UserID]bridgev2.ChatMember{}
for _, userID := range action.Users {
memberMap[ids.MakeUserID(userID)] = bridgev2.ChatMember{
EventSender: t.senderForUserID(userID),
Membership: event.MembershipJoin,
}
}
eventMeta.Type = bridgev2.RemoteEventChatResync
eventMeta.CreatePortal = true
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatResync{
EventMeta: eventMeta,
ChatInfo: &bridgev2.ChatInfo{
Name: &action.Title,
Members: &bridgev2.ChatMemberList{
IsFull: true,
TotalMemberCount: len(action.Users),
MemberMap: memberMap,
},
},
})
case *tg.MessageActionChannelCreate:
eventMeta.Type = bridgev2.RemoteEventChatResync
eventMeta.CreatePortal = true
t.main.Bridge.QueueRemoteEvent(t.userLogin, &simplevent.ChatResync{
EventMeta: eventMeta,
ChatInfo: &bridgev2.ChatInfo{
Name: &action.Title,
Members: &bridgev2.ChatMemberList{
MemberMap: map[networkid.UserID]bridgev2.ChatMember{
t.userID: {
EventSender: t.mySender(),
Membership: event.MembershipJoin,
},
},
},
},
})
// case *tg.MessageActionChatMigrateTo:
// case *tg.MessageActionChannelMigrateFrom:
// case *tg.MessageActionPinMessage: