Made only unjoined rooms joinable

This commit is contained in:
kamathmanu 2021-08-03 18:25:11 -04:00
parent f5ee1e84b5
commit d3d7844106
2 changed files with 14 additions and 2 deletions

View file

@ -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);
}
}

View file

@ -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();
};
};