diff --git a/src/controller.cpp b/src/controller.cpp index 7679d2953..2209d60d0 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -644,9 +644,17 @@ NeochatDeleteDeviceJob::NeochatDeleteDeviceJob(const QString &deviceId, const Om void Controller::createRoom(const QString &name, const QString &topic) { auto createRoomJob = m_connection->createRoom(Connection::PublishRoom, "", name, topic, QStringList()); - Quotient::CreateRoomJob::connect(createRoomJob, &CreateRoomJob::failure, [this, createRoomJob] { + connect(createRoomJob, &CreateRoomJob::failure, this, [this, createRoomJob] { Q_EMIT errorOccured(i18n("Room creation failed: \"%1\"", createRoomJob->errorString())); }); + connectSingleShot( + this, + &Controller::roomAdded, + this, + [this](NeoChatRoom *room) { + RoomManager::instance().enterRoom(room); + }, + Qt::QueuedConnection); } bool Controller::isOnline() const diff --git a/src/controller.h b/src/controller.h index a1d3328fc..90806d374 100644 --- a/src/controller.h +++ b/src/controller.h @@ -151,6 +151,7 @@ Q_SIGNALS: void keyVerificationAccept(const QString &commitment); void keyVerificationKey(const QString &sas); void activeConnectionIndexChanged(); + void roomAdded(NeoChatRoom *room); public Q_SLOTS: void logout(Quotient::Connection *conn, bool serverSideLogout); diff --git a/src/models/roomlistmodel.cpp b/src/models/roomlistmodel.cpp index cdb8d8244..161eb6ed6 100644 --- a/src/models/roomlistmodel.cpp +++ b/src/models/roomlistmodel.cpp @@ -3,6 +3,7 @@ #include "roomlistmodel.h" +#include "controller.h" #include "neochatconfig.h" #include "neochatroom.h" #include "roommanager.h" @@ -143,6 +144,7 @@ void RoomListModel::doAddRoom(Room *r) m_rooms.append(room); connectRoomSignals(room); Q_EMIT roomAdded(room); + Q_EMIT Controller::instance().roomAdded(room); } else { qCritical() << "Attempt to add nullptr to the room list"; Q_ASSERT(false);