2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 22:46:10 +00:00

Show emoji status in chats list / top bar.

This commit is contained in:
John Preston
2022-08-09 18:53:40 +03:00
parent 285ce81b7b
commit 21fd381778
17 changed files with 386 additions and 177 deletions

View File

@@ -400,6 +400,11 @@ ChannelData *Session::channelLoaded(ChannelId id) const {
return nullptr;
}
AssertIsDebug();
base::flat_map<
not_null<Data::Session*>,
base::flat_set<not_null<DocumentData*>>> Emojis;
not_null<UserData*> Session::processUser(const MTPUser &data) {
const auto result = user(data.match([](const auto &data) {
return data.vid().v;
@@ -554,6 +559,26 @@ not_null<UserData*> Session::processUser(const MTPUser &data) {
}
status = data.vstatus();
}
if (const auto &status = data.vemoji_status()) {
result->setEmojiStatus(status->match([&](
const MTPDemojiStatus &data) {
return DocumentId(data.vdocument_id().v);
}, [&](const MTPDemojiStatusEmpty &) {
//return DocumentId();
auto &emojis = Emojis[this];
return emojis.empty()
? DocumentId()
: (*(emojis.begin()
+ base::RandomIndex(emojis.size())))->id;
}));
} else {
//result->setEmojiStatus(0);
auto &emojis = Emojis[this];
result->setEmojiStatus(emojis.empty()
? DocumentId()
: (*(emojis.begin()
+ base::RandomIndex(emojis.size())))->id);
}
if (!minimal) {
if (const auto botInfoVersion = data.vbot_info_version()) {
result->setBotInfoVersion(botInfoVersion->v);
@@ -2943,6 +2968,23 @@ void Session::documentApplyFields(
if (dc != 0 && access != 0) {
document->setRemoteLocation(dc, access, fileReference);
}
AssertIsDebug();
if (document->isPremiumEmoji()) {
auto &emojis = Emojis[this];
if (emojis.emplace(document).second) {
const auto size = int(emojis.size());
crl::on_main(_session, [=] {
for (auto &[id, peer] : _peers) {
if (const auto user = peer->asUser()) {
if (user->isPremium() && !base::RandomIndex(size)) {
user->setEmojiStatus(document->id);
}
}
}
});
}
}
}
not_null<WebPageData*> Session::webpage(WebPageId id) {