mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Don't spam key requests directly after startup
This commit is contained in:
parent
eb6baf619a
commit
d30446a8b3
3 changed files with 23 additions and 0 deletions
|
@ -675,6 +675,9 @@ EventStore::decryptEvent(const IdIndex &idx,
|
|||
index.room_id,
|
||||
index.session_id,
|
||||
e.sender);
|
||||
// we may not want to request keys during initial sync and such
|
||||
if (suppressKeyRequests)
|
||||
break;
|
||||
// TODO: Check if this actually works and look in key backup
|
||||
auto copy = e;
|
||||
copy.room_id = room_id_;
|
||||
|
@ -816,6 +819,18 @@ EventStore::decryptEvent(const IdIndex &idx,
|
|||
return asCacheEntry(std::move(decryptionResult.event.value()));
|
||||
}
|
||||
|
||||
void
|
||||
EventStore::enableKeyRequests(bool suppressKeyRequests_)
|
||||
{
|
||||
if (!suppressKeyRequests_) {
|
||||
for (const auto &key : decryptedEvents_.keys())
|
||||
if (key.room == this->room_id_)
|
||||
decryptedEvents_.remove(key);
|
||||
suppressKeyRequests = false;
|
||||
} else
|
||||
suppressKeyRequests = true;
|
||||
}
|
||||
|
||||
mtx::events::collections::TimelineEvents *
|
||||
EventStore::get(std::string id, std::string_view related_to, bool decrypt, bool resolve_edits)
|
||||
{
|
||||
|
|
|
@ -115,6 +115,7 @@ public slots:
|
|||
void addPending(mtx::events::collections::TimelineEvents event);
|
||||
void receivedSessionKey(const std::string &session_id);
|
||||
void clearTimeline();
|
||||
void enableKeyRequests(bool suppressKeyRequests_);
|
||||
|
||||
private:
|
||||
std::vector<mtx::events::collections::TimelineEvents> edits(const std::string &event_id);
|
||||
|
@ -142,4 +143,5 @@ private:
|
|||
std::string current_txn;
|
||||
int current_txn_error_count = 0;
|
||||
bool noMoreMessages = false;
|
||||
bool suppressKeyRequests = true;
|
||||
};
|
||||
|
|
|
@ -379,6 +379,7 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
|
|||
connect(&events, &EventStore::updateFlowEventId, this, [this](std::string event_id) {
|
||||
this->updateFlowEventId(event_id);
|
||||
});
|
||||
|
||||
// When a message is sent, check if the current edit/reply relates to that message,
|
||||
// and update the event_id so that it points to the sent message and not the pending one.
|
||||
connect(&events,
|
||||
|
@ -395,6 +396,11 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
|
|||
}
|
||||
});
|
||||
|
||||
connect(manager_,
|
||||
&TimelineViewManager::initialSyncChanged,
|
||||
&events,
|
||||
&EventStore::enableKeyRequests);
|
||||
|
||||
showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue