diff --git a/src/controller.cpp b/src/controller.cpp index fa1f232de..65dba38f1 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -581,6 +581,7 @@ bool Controller::isOnline() const return m_mgr->isOnline(); } +// TODO: Remove in favor of RoomManager::joinRoom void Controller::joinRoom(const QString &alias) { if (!alias.contains(":")) { @@ -589,14 +590,7 @@ void Controller::joinRoom(const QString &alias) } const auto knownServer = alias.mid(alias.indexOf(":") + 1); - auto joinRoomJob = m_connection->joinRoom(alias, QStringList{knownServer}); - - connect(joinRoomJob, &JoinRoomJob::failure, [=] { - Q_EMIT errorOccured(i18n("Server error when joining the room \"%1\": %2", joinRoomJob->errorString())); - }); - connect(joinRoomJob, &JoinRoomJob::success, [this, joinRoomJob] { - Q_EMIT errorOccured(joinRoomJob->roomId()); - }); + RoomManager::instance().joinRoom(m_connection, alias, QStringList{knownServer}); } void Controller::openOrCreateDirectChat(NeoChatUser *user) diff --git a/src/roomlistmodel.cpp b/src/roomlistmodel.cpp index 9e84c825e..60c71efa8 100644 --- a/src/roomlistmodel.cpp +++ b/src/roomlistmodel.cpp @@ -289,7 +289,6 @@ void RoomListModel::updateRoom(Room *room, Room *prev) } else { beginInsertRows(QModelIndex(), m_rooms.count(), m_rooms.count()); doAddRoom(newRoom); - RoomManager::instance().enterRoom(qobject_cast(newRoom)); endInsertRows(); } } diff --git a/src/roommanager.cpp b/src/roommanager.cpp index 051fd9a3e..d42d79d09 100644 --- a/src/roommanager.cpp +++ b/src/roommanager.cpp @@ -194,9 +194,10 @@ void RoomManager::joinRoom(Quotient::Connection *account, const QString &roomAliasOrId, const QStringList &viaServers) { - // This should trigger a signal in Quotient once done and NeoChat will - // react to it and open the newly joined room. account->joinRoom(QUrl::toPercentEncoding(roomAliasOrId), viaServers); + connectSingleShot(account, &Quotient::Connection::newRoom, this, [=](Quotient::Room *room){ + enterRoom(dynamic_cast(room)); + }); } bool RoomManager::visitNonMatrix(const QUrl &url)