Fix crash in emoji statuses clearing.

This commit is contained in:
John Preston 2022-09-30 13:37:34 +04:00
parent 16649a9661
commit 70ba28bbd5
2 changed files with 9 additions and 4 deletions

View File

@ -119,8 +119,7 @@ void EmojiStatuses::registerAutomaticClear(
if (i->first == user) {
const auto now = base::unixtime::now();
if (now < until) {
const auto waitms = (until - now) * crl::time(1000);
_clearingTimer.callOnce(std::min(waitms, kMaxTimeout));
processClearingIn(until - now);
} else {
processClearing();
}
@ -153,12 +152,17 @@ void EmojiStatuses::processClearing() {
}
}
if (minWait) {
_clearingTimer.callOnce(minWait * crl::time(1000));
processClearingIn(minWait);
} else {
_clearingTimer.cancel();
}
}
void EmojiStatuses::processClearingIn(TimeId wait) {
const auto waitms = wait * crl::time(1000);
_clearingTimer.callOnce(std::min(waitms, kMaxTimeout));
}
void EmojiStatuses::requestRecent() {
if (_recentRequestId) {
return;

View File

@ -62,6 +62,7 @@ private:
void updateDefault(const MTPDaccount_emojiStatuses &data);
void updateColored(const MTPDmessages_stickerSet &data);
void processClearingIn(TimeId wait);
void processClearing();
const not_null<Session*> _owner;
@ -85,7 +86,7 @@ private:
mtpRequestId _sentRequestId = 0;
base::flat_map<not_null<UserData*>, crl::time> _clearing;
base::flat_map<not_null<UserData*>, TimeId> _clearing;
base::Timer _clearingTimer;
rpl::lifetime _lifetime;