mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 06:07:06 +02:00
Reload stale video chats on group / channel open.
This commit is contained in:
parent
bb75a6a31b
commit
a23561c380
3 changed files with 16 additions and 2 deletions
|
@ -26,6 +26,7 @@ constexpr auto kRequestPerPage = 50;
|
|||
constexpr auto kSpeakingAfterActive = crl::time(6000);
|
||||
constexpr auto kActiveAfterJoined = crl::time(1000);
|
||||
constexpr auto kWaitForUpdatesTimeout = 3 * crl::time(1000);
|
||||
constexpr auto kReloadStaleTimeout = 16 * crl::time(1000);
|
||||
|
||||
[[nodiscard]] QString ExtractNextOffset(const MTPphone_GroupCall &call) {
|
||||
return call.match([&](const MTPDphone_groupCall &data) {
|
||||
|
@ -168,6 +169,7 @@ bool GroupCall::processSavedFullCall() {
|
|||
return false;
|
||||
}
|
||||
_reloadRequestId = 0;
|
||||
_reloadLastFinished = crl::now();
|
||||
processFullCallFields(*base::take(_savedFull));
|
||||
return true;
|
||||
}
|
||||
|
@ -497,6 +499,15 @@ void GroupCall::computeParticipantsCount() {
|
|||
: std::max(int(_participants.size()), _serverParticipantsCount);
|
||||
}
|
||||
|
||||
void GroupCall::reloadIfStale() {
|
||||
if (!fullCount() && !participantsLoaded()) {
|
||||
reload();
|
||||
} else if (!_reloadLastFinished
|
||||
|| crl::now() > _reloadLastFinished + kReloadStaleTimeout) {
|
||||
reload();
|
||||
}
|
||||
}
|
||||
|
||||
void GroupCall::reload() {
|
||||
if (_reloadRequestId || _applyingQueuedUpdates) {
|
||||
return;
|
||||
|
@ -528,9 +539,11 @@ void GroupCall::reload() {
|
|||
return;
|
||||
}
|
||||
_reloadRequestId = 0;
|
||||
_reloadLastFinished = crl::now();
|
||||
processFullCall(result);
|
||||
}).fail([=] {
|
||||
_reloadRequestId = 0;
|
||||
_reloadLastFinished = crl::now();
|
||||
}).send();
|
||||
}
|
||||
|
||||
|
|
|
@ -156,6 +156,7 @@ public:
|
|||
|
||||
void setInCall();
|
||||
void reload();
|
||||
void reloadIfStale();
|
||||
void processFullCall(const MTPphone_GroupCall &call);
|
||||
|
||||
void setJoinMutedLocally(bool muted);
|
||||
|
@ -206,6 +207,7 @@ private:
|
|||
int _version = 0;
|
||||
mtpRequestId _participantsRequestId = 0;
|
||||
mtpRequestId _reloadRequestId = 0;
|
||||
crl::time _reloadLastFinished = 0;
|
||||
rpl::variable<QString> _title;
|
||||
|
||||
base::flat_multi_map<
|
||||
|
|
|
@ -364,9 +364,8 @@ rpl::producer<Ui::GroupCallBarContent> GroupCallBarContentByPeer(
|
|||
-> rpl::producer<Ui::GroupCallBarContent> {
|
||||
if (!call) {
|
||||
return rpl::single(Ui::GroupCallBarContent{ .shown = false });
|
||||
} else if (!call->fullCount() && !call->participantsLoaded()) {
|
||||
call->reload();
|
||||
}
|
||||
call->reloadIfStale();
|
||||
return GroupCallBarContentByCall(call, userpicSize);
|
||||
}) | rpl::flatten_latest();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue