client: handle group chat and channel creation events
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user