summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorkamathmanu <manuriddle@gmail.com>2021-08-03 18:25:11 -0400
committerkamathmanu <manuriddle@gmail.com>2021-08-07 17:00:28 -0400
commitd3d7844106a422bd54f899f210e54dcb43a26a4c (patch)
treeab6d9250765fd513ffe366721cbe8a777f5ceac2 /src
parentPadding for search bar (diff)
downloadnheko-d3d7844106a422bd54f899f210e54dcb43a26a4c.tar.xz
Made only unjoined rooms joinable
Diffstat (limited to 'src')
-rw-r--r--src/RoomDirectoryModel.cpp13
-rw-r--r--src/RoomDirectoryModel.h3
2 files changed, 14 insertions, 2 deletions
diff --git a/src/RoomDirectoryModel.cpp b/src/RoomDirectoryModel.cpp

index 2a06e4d4..b206bf9e 100644 --- a/src/RoomDirectoryModel.cpp +++ b/src/RoomDirectoryModel.cpp
@@ -4,6 +4,7 @@ #include "RoomDirectoryModel.h" #include "ChatPage.h" +#include "Cache.h" #include <algorithm> @@ -68,6 +69,16 @@ RoomDirectoryModel::setSearchTerm(const QString &f) resetDisplayedData(); } + +bool +RoomDirectoryModel::canJoinRoom(const QByteArray &room) +{ + const auto &cache = cache::roomInfo(); + const QString room_id (room); + const bool validRoom = !room_id.isNull() && !room_id.isEmpty(); + return validRoom && !cache.contains(room_id); +} + std::vector<std::string> RoomDirectoryModel::getViasForRoom(const std::vector<std::string> &aliases) { @@ -174,4 +185,4 @@ RoomDirectoryModel::displayRooms(std::vector<mtx::responses::PublicRoomsChunk> f } prevBatch_ = std::exchange(nextBatch_, next_batch); -} \ No newline at end of file +} diff --git a/src/RoomDirectoryModel.h b/src/RoomDirectoryModel.h
index ff571d93..7099ff00 100644 --- a/src/RoomDirectoryModel.h +++ b/src/RoomDirectoryModel.h
@@ -56,6 +56,7 @@ public: } void fetchMore(const QModelIndex &) override; + Q_INVOKABLE bool canJoinRoom(const QByteArray &room); Q_INVOKABLE void joinRoom(const int &index = -1); signals: @@ -84,4 +85,4 @@ private: std::vector<std::string> getViasForRoom(const std::vector<std::string> &room); void resetDisplayedData(); -}; \ No newline at end of file +};