summary refs log tree commit diff
path: root/src/timeline/RoomlistModel.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-07-13 03:13:52 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2021-07-13 03:13:52 +0200
commit47899ee7ed76bba468465bd4c5706e9a7dac360c (patch)
tree528167ddff4012e7db90c0031e4b81f359e1d9e9 /src/timeline/RoomlistModel.cpp
parentDon't allow switching to current room (diff)
downloadnheko-47899ee7ed76bba468465bd4c5706e9a7dac360c.tar.xz
Switch to room after joining invite
Diffstat (limited to 'src/timeline/RoomlistModel.cpp')
-rw-r--r--src/timeline/RoomlistModel.cpp19
1 files 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