From 6b49854b1291f8850913942f56f84837a91b7213 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Fri, 17 Feb 2023 20:35:40 +0100 Subject: [PATCH] Automatically open room after creation --- src/controller.cpp | 10 +++++++++- src/controller.h | 1 + src/models/roomlistmodel.cpp | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) 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);