From 5dcb232b7745fcb27a6d4120551fbb16f5877dd3 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 13 Apr 2020 12:27:53 +0400 Subject: [PATCH] Force reload results on auto-closed quiz. --- Telegram/SourceFiles/data/data_poll.cpp | 14 +++++++++----- Telegram/SourceFiles/data/data_poll.h | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/data/data_poll.cpp b/Telegram/SourceFiles/data/data_poll.cpp index 95a75d9ce..47a19043d 100644 --- a/Telegram/SourceFiles/data/data_poll.cpp +++ b/Telegram/SourceFiles/data/data_poll.cpp @@ -48,6 +48,7 @@ bool PollData::closeByTimer() { return false; } _flags |= Flag::Closed; + _lastResultsUpdate = -1; // Force reload results. ++version; return true; } @@ -105,7 +106,7 @@ bool PollData::applyChanges(const MTPDpoll &poll) { bool PollData::applyResults(const MTPPollResults &results) { return results.match([&](const MTPDpollResults &results) { - lastResultsUpdate = crl::now(); + _lastResultsUpdate = crl::now(); const auto newTotalVoters = results.vtotal_voters().value_or(totalVoters); @@ -158,13 +159,16 @@ bool PollData::applyResults(const MTPPollResults &results) { }); } -void PollData::checkResultsReload(not_null item, crl::time now) { - if (lastResultsUpdate && lastResultsUpdate + kShortPollTimeout > now) { +void PollData::checkResultsReload( + not_null item, + crl::time now) { + if (_lastResultsUpdate > 0 + && _lastResultsUpdate + kShortPollTimeout > now) { return; - } else if (closed()) { + } else if (closed() && _lastResultsUpdate >= 0) { return; } - lastResultsUpdate = now; + _lastResultsUpdate = now; _owner->session().api().reloadPollResults(item); } diff --git a/Telegram/SourceFiles/data/data_poll.h b/Telegram/SourceFiles/data/data_poll.h index db582bf7e..19c4e59e4 100644 --- a/Telegram/SourceFiles/data/data_poll.h +++ b/Telegram/SourceFiles/data/data_poll.h @@ -62,7 +62,6 @@ struct PollData { std::vector answers; std::vector> recentVoters; std::vector sendingVotes; - crl::time lastResultsUpdate = 0; TextWithEntities solution; TimeId closePeriod = 0; TimeId closeDate = 0; @@ -76,8 +75,9 @@ private: const MTPPollAnswerVoters &result, bool isMinResults); - not_null _owner; + const not_null _owner; Flags _flags = Flags(); + crl::time _lastResultsUpdate = 0; // < 0 means force reload. };