From ecc639fb0a170a46d8a88b9a42e703d094b5504a Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Tue, 10 Aug 2021 18:47:21 +0200 Subject: [PATCH] Refactor room leaving The old code has a small bug where the room would not be left in certain conditions. --- imports/NeoChat/Page/RoomPage.qml | 11 +++++++++++ src/roommanager.cpp | 10 +++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index 3da87a2ac..38806ec2c 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -28,6 +28,17 @@ Kirigami.ScrollablePage { title: currentRoom.displayName + Connections { + target: RoomManager + function onCurrentRoomChanged() { + if(!RoomManager.currentRoom) { + if(pageStack.lastItem == page) { + pageStack.pop() + } + } + } + } + signal switchRoomUp() signal switchRoomDown() diff --git a/src/roommanager.cpp b/src/roommanager.cpp index 4ffd7b64f..aa2924296 100644 --- a/src/roommanager.cpp +++ b/src/roommanager.cpp @@ -215,18 +215,14 @@ void RoomManager::reset() void RoomManager::leaveRoom(NeoChatRoom *room) { - // close the room and open the last open room if it exist - // other open welcome page. + if(m_lastCurrentRoom && room->id() == m_lastCurrentRoom->id()) { + m_lastCurrentRoom = nullptr; + } if (m_currentRoom && m_currentRoom->id() == room->id()) { - if (!m_lastCurrentRoom) { - Q_EMIT pushWelcomePage(); - return; - } m_currentRoom = m_lastCurrentRoom; m_lastCurrentRoom = nullptr; Q_EMIT currentRoomChanged(); - Q_EMIT replaceRoom(m_lastCurrentRoom, QString()); } room->forget();