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{
|
backfillMessage.Reactions = append(backfillMessage.Reactions, &bridgev2.BackfillReaction{
|
||||||
Timestamp: time.Unix(int64(reaction.Date), 0),
|
Timestamp: time.Unix(int64(reaction.Date), 0),
|
||||||
Sender: bridgev2.EventSender{
|
Sender: t.senderForUserID(peer.UserID),
|
||||||
IsFromMe: peer.UserID == t.telegramUserID,
|
EmojiID: emojiID,
|
||||||
SenderLogin: ids.MakeUserLoginID(peer.UserID),
|
Emoji: emoji,
|
||||||
Sender: ids.MakeUserID(peer.UserID),
|
|
||||||
},
|
|
||||||
EmojiID: emojiID,
|
|
||||||
Emoji: emoji,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,11 +108,7 @@ func (t *TelegramClient) filterChannelParticipants(chatParticipants []tg.Channel
|
|||||||
}
|
}
|
||||||
|
|
||||||
members = append(members, bridgev2.ChatMember{
|
members = append(members, bridgev2.ChatMember{
|
||||||
EventSender: bridgev2.EventSender{
|
EventSender: t.senderForUserID(userIDable.GetUserID()),
|
||||||
IsFromMe: userIDable.GetUserID() == t.telegramUserID,
|
|
||||||
SenderLogin: ids.MakeUserLoginID(userIDable.GetUserID()),
|
|
||||||
Sender: ids.MakeUserID(userIDable.GetUserID()),
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(members) >= limit {
|
if len(members) >= limit {
|
||||||
@@ -167,13 +163,8 @@ func (t *TelegramClient) GetChatInfo(ctx context.Context, portal *bridgev2.Porta
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
sender := ids.MakeUserID(user.GetUserID())
|
chatInfo.Members.MemberMap[ids.MakeUserID(user.GetUserID())] = bridgev2.ChatMember{
|
||||||
chatInfo.Members.MemberMap[sender] = bridgev2.ChatMember{
|
EventSender: t.senderForUserID(user.GetUserID()),
|
||||||
EventSender: bridgev2.EventSender{
|
|
||||||
IsFromMe: user.GetUserID() == t.telegramUserID,
|
|
||||||
SenderLogin: ids.MakeUserLoginID(user.GetUserID()),
|
|
||||||
Sender: sender,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(chatInfo.Members.MemberMap) >= t.main.Config.MemberList.NormalizedMaxInitialSync() {
|
if len(chatInfo.Members.MemberMap) >= t.main.Config.MemberList.NormalizedMaxInitialSync() {
|
||||||
|
|||||||
@@ -565,3 +565,11 @@ func (t *TelegramClient) mySender() bridgev2.EventSender {
|
|||||||
Sender: t.userID,
|
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{
|
users[userID].Reactions = append(users[userID].Reactions, &bridgev2.BackfillReaction{
|
||||||
Timestamp: time.Unix(int64(reaction.Date), 0),
|
Timestamp: time.Unix(int64(reaction.Date), 0),
|
||||||
Sender: bridgev2.EventSender{
|
Sender: t.senderForUserID(peer.UserID),
|
||||||
IsFromMe: peer.UserID == t.telegramUserID,
|
EmojiID: emojiID,
|
||||||
SenderLogin: ids.MakeUserLoginID(peer.UserID),
|
Emoji: emoji,
|
||||||
Sender: userID,
|
|
||||||
},
|
|
||||||
EmojiID: emojiID,
|
|
||||||
Emoji: emoji,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -196,8 +196,46 @@ func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, channels map[in
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
// case *tg.MessageActionChatCreate:
|
case *tg.MessageActionChatCreate:
|
||||||
// case *tg.MessageActionChannelCreate:
|
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.MessageActionChatMigrateTo:
|
||||||
// case *tg.MessageActionChannelMigrateFrom:
|
// case *tg.MessageActionChannelMigrateFrom:
|
||||||
// case *tg.MessageActionPinMessage:
|
// case *tg.MessageActionPinMessage:
|
||||||
|
|||||||
Reference in New Issue
Block a user