Port some things away from Controller::activeConnection

This commit is contained in:
Tobias Fella
2023-11-04 23:26:41 +01:00
parent ff4cf86ea5
commit 0e55c3b38f
29 changed files with 289 additions and 154 deletions

View File

@@ -14,22 +14,15 @@ using namespace Quotient;
SpaceHierarchyCache::SpaceHierarchyCache(QObject *parent)
: QObject{parent}
{
cacheSpaceHierarchy();
connect(&Controller::instance(), &Controller::activeConnectionChanged, this, [this]() {
cacheSpaceHierarchy();
connect(Controller::instance().activeConnection(), &Connection::joinedRoom, this, &SpaceHierarchyCache::addSpaceToHierarchy);
connect(Controller::instance().activeConnection(), &Connection::aboutToDeleteRoom, this, &SpaceHierarchyCache::removeSpaceFromHierarchy);
});
}
void SpaceHierarchyCache::cacheSpaceHierarchy()
{
auto connection = Controller::instance().activeConnection();
if (!connection) {
if (!m_connection) {
return;
}
const auto &roomList = connection->allRooms();
const auto &roomList = m_connection->allRooms();
for (const auto &room : roomList) {
const auto neoChatRoom = static_cast<NeoChatRoom *>(room);
if (neoChatRoom->isSpace()) {
@@ -46,11 +39,10 @@ void SpaceHierarchyCache::cacheSpaceHierarchy()
void SpaceHierarchyCache::populateSpaceHierarchy(const QString &spaceId)
{
auto connection = Controller::instance().activeConnection();
if (!connection) {
if (!m_connection) {
return;
}
auto job = connection->callApi<GetSpaceHierarchyJob>(spaceId);
auto job = m_connection->callApi<GetSpaceHierarchyJob>(spaceId);
connect(job, &BaseJob::success, this, [this, job, spaceId]() {
const auto rooms = job->rooms();
@@ -102,4 +94,22 @@ bool SpaceHierarchyCache::isChildSpace(const QString &spaceId) const
return false;
}
NeoChatConnection *SpaceHierarchyCache::connection() const
{
return m_connection;
}
void SpaceHierarchyCache::setConnection(NeoChatConnection *connection)
{
if (m_connection == connection) {
return;
}
m_connection = connection;
Q_EMIT connectionChanged();
m_spaceHierarchy.clear();
cacheSpaceHierarchy();
connect(connection, &Connection::joinedRoom, this, &SpaceHierarchyCache::addSpaceToHierarchy);
connect(connection, &Connection::aboutToDeleteRoom, this, &SpaceHierarchyCache::removeSpaceFromHierarchy);
}
#include "moc_spacehierarchycache.cpp"