Skip to content
Snippets Groups Projects
Verified Commit d30446a8 authored by Nicolas Werner's avatar Nicolas Werner
Browse files

Don't spam key requests directly after startup

parent eb6baf61
No related branches found
No related tags found
No related merge requests found
...@@ -675,6 +675,9 @@ EventStore::decryptEvent(const IdIndex &idx, ...@@ -675,6 +675,9 @@ EventStore::decryptEvent(const IdIndex &idx,
index.room_id, index.room_id,
index.session_id, index.session_id,
e.sender); 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 // TODO: Check if this actually works and look in key backup
auto copy = e; auto copy = e;
copy.room_id = room_id_; copy.room_id = room_id_;
...@@ -816,6 +819,18 @@ EventStore::decryptEvent(const IdIndex &idx, ...@@ -816,6 +819,18 @@ EventStore::decryptEvent(const IdIndex &idx,
return asCacheEntry(std::move(decryptionResult.event.value())); 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 * mtx::events::collections::TimelineEvents *
EventStore::get(std::string id, std::string_view related_to, bool decrypt, bool resolve_edits) EventStore::get(std::string id, std::string_view related_to, bool decrypt, bool resolve_edits)
{ {
......
...@@ -115,6 +115,7 @@ public slots: ...@@ -115,6 +115,7 @@ public slots:
void addPending(mtx::events::collections::TimelineEvents event); void addPending(mtx::events::collections::TimelineEvents event);
void receivedSessionKey(const std::string &session_id); void receivedSessionKey(const std::string &session_id);
void clearTimeline(); void clearTimeline();
void enableKeyRequests(bool suppressKeyRequests_);
private: private:
std::vector<mtx::events::collections::TimelineEvents> edits(const std::string &event_id); std::vector<mtx::events::collections::TimelineEvents> edits(const std::string &event_id);
...@@ -142,4 +143,5 @@ private: ...@@ -142,4 +143,5 @@ private:
std::string current_txn; std::string current_txn;
int current_txn_error_count = 0; int current_txn_error_count = 0;
bool noMoreMessages = false; bool noMoreMessages = false;
bool suppressKeyRequests = true;
}; };
...@@ -379,6 +379,7 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj ...@@ -379,6 +379,7 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
connect(&events, &EventStore::updateFlowEventId, this, [this](std::string event_id) { connect(&events, &EventStore::updateFlowEventId, this, [this](std::string event_id) {
this->updateFlowEventId(event_id); this->updateFlowEventId(event_id);
}); });
// When a message is sent, check if the current edit/reply relates to that message, // 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. // and update the event_id so that it points to the sent message and not the pending one.
connect(&events, connect(&events,
...@@ -395,6 +396,11 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj ...@@ -395,6 +396,11 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
} }
}); });
connect(manager_,
&TimelineViewManager::initialSyncChanged,
&events,
&EventStore::enableKeyRequests);
showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent); showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment