From 47899ee7ed76bba468465bd4c5706e9a7dac360c Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 13 Jul 2021 03:13:52 +0200 Subject: [PATCH] Switch to room after joining invite --- src/timeline/RoomlistModel.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index cb800699..f7f377fb 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -6,6 +6,7 @@ #include "Cache_p.h" #include "ChatPage.h" +#include "Logging.h" #include "MatrixClient.h" #include "MxcImageProvider.h" #include "TimelineModel.h" @@ -363,6 +364,13 @@ RoomlistModel::addRoom(const QString &room_id, bool suppressInsertNotification) roomids.push_back(room_id); } + if ((wasInvite || wasPreview) && currentRoomPreview_ && + currentRoomPreview_->roomid() == room_id) { + currentRoom_ = models.value(room_id); + currentRoomPreview_.reset(); + emit currentRoomChanged(); + } + for (auto p : previewsToAdd) { previewedRooms.insert(p, std::nullopt); roomids.push_back(std::move(p)); @@ -557,15 +565,8 @@ void RoomlistModel::acceptInvite(QString roomid) { if (invites.contains(roomid)) { - auto idx = roomidToIndex(roomid); - - if (idx != -1) { - beginRemoveRows(QModelIndex(), idx, idx); - roomids.erase(roomids.begin() + idx); - invites.remove(roomid); - endRemoveRows(); - ChatPage::instance()->joinRoom(roomid); - } + // Don't remove invite yet, so that we can switch to it + ChatPage::instance()->joinRoom(roomid); } } void