diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index bd3cd6fe3..d3249f176 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -303,10 +303,16 @@ void NeoChatRoom::acceptInvitation() void NeoChatRoom::forget() { - if (const auto &predecessor = dynamic_cast(this->predecessor(JoinState::Join))) { - predecessor->forget(); + QStringList roomIds{id()}; + + NeoChatRoom *predecessor = this; + while (predecessor = dynamic_cast(predecessor->predecessor(JoinState::Join)), predecessor && !roomIds.contains(predecessor->id())) { + roomIds += predecessor->id(); + } + + for (const auto &id : roomIds) { + connection()->forgetRoom(id); } - connection()->forgetRoom(id()); } void NeoChatRoom::sendTypingNotification(bool isTyping)