mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-26 04:58:49 +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.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,
|
||||||
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:
|
||||||
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:
|
||||||
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
|
||||||
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
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(manager_,
|
||||||
|
&TimelineViewManager::initialSyncChanged,
|
||||||
|
&events,
|
||||||
|
&EventStore::enableKeyRequests);
|
||||||
|
|
||||||
showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent);
|
showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue