diff options
author | kamathmanu <manuriddle@gmail.com> | 2021-08-12 09:50:52 -0400 |
---|---|---|
committer | kamathmanu <manuriddle@gmail.com> | 2021-08-12 09:50:52 -0400 |
commit | 570e5ffde236056ad5c70a59681ad6fc1e445717 (patch) | |
tree | a28c23497aae12c9e31a2d1952d4862122b0878e /src/RoomDirectoryModel.cpp | |
parent | 6a75e5270cd12aebc6130f0bc3ee1d9999620601 (diff) |
Added Spinner while rooms load
Diffstat (limited to 'src/RoomDirectoryModel.cpp')
-rw-r--r-- | src/RoomDirectoryModel.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/RoomDirectoryModel.cpp b/src/RoomDirectoryModel.cpp index 2c633491..7d6be13e 100644 --- a/src/RoomDirectoryModel.cpp +++ b/src/RoomDirectoryModel.cpp @@ -11,7 +11,6 @@ RoomDirectoryModel::RoomDirectoryModel(QObject *parent, const std::string &s)
: QAbstractListModel(parent)
, server_(s)
- , canFetchMore_(true)
{
connect(this,
&RoomDirectoryModel::fetchedRoomsBatch,
@@ -127,6 +126,8 @@ RoomDirectoryModel::data(const QModelIndex &index, int role) const void
RoomDirectoryModel::fetchMore(const QModelIndex &)
{
+ if (!canFetchMore_) return;
+
nhlog::net()->debug("Fetching more rooms from mtxclient...");
mtx::requests::PublicRooms req;
@@ -136,10 +137,19 @@ RoomDirectoryModel::fetchMore(const QModelIndex &) // req.third_party_instance_id = third_party_instance_id;
auto requested_server = server_;
+ reachedEndOfPagination_ = false;
+ emit reachedEndOfPaginationChanged();
+
+ loadingMoreRooms_ = true;
+ emit loadingMoreRoomsChanged();
+
http::client()->post_public_rooms(
req,
[requested_server, this, req](const mtx::responses::PublicRooms &res,
mtx::http::RequestErr err) {
+ loadingMoreRooms_ = false;
+ emit loadingMoreRoomsChanged();
+
if (err) {
nhlog::net()->error(
"Failed to retrieve rooms from mtxclient - {} - {} - {}",
@@ -149,7 +159,7 @@ RoomDirectoryModel::fetchMore(const QModelIndex &) } else if (req.filter.generic_search_term == this->userSearchString_ &&
req.since == this->prevBatch_ && requested_server == this->server_) {
nhlog::net()->debug("signalling chunk to GUI thread");
- emit fetchedRoomsBatch(res.chunk, res.prev_batch, res.next_batch);
+ emit fetchedRoomsBatch(res.chunk, res.next_batch);
}
},
requested_server);
@@ -157,11 +167,9 @@ RoomDirectoryModel::fetchMore(const QModelIndex &) void
RoomDirectoryModel::displayRooms(std::vector<mtx::responses::PublicRoomsChunk> fetched_rooms,
- const std::string &prev_batch,
const std::string &next_batch)
{
- nhlog::net()->debug("Prev batch: {} | Next batch: {}", prevBatch_, nextBatch_);
- nhlog::net()->debug("NP batch: {} | NN batch: {}", prev_batch, next_batch);
+ nhlog::net()->debug("Prev batch: {} | Next batch: {}", prevBatch_, next_batch);
if (fetched_rooms.empty()) {
nhlog::net()->error("mtxclient helper thread yielded empty chunk!");
@@ -177,7 +185,11 @@ RoomDirectoryModel::displayRooms(std::vector<mtx::responses::PublicRoomsChunk> f if (next_batch.empty()) {
canFetchMore_ = false;
+ reachedEndOfPagination_ = true;
+ emit reachedEndOfPaginationChanged();
}
prevBatch_ = next_batch;
+
+ nhlog::ui()->debug ("Finished loading rooms");
}
|