summary refs log tree commit diff
path: root/src/RoomDirectoryModel.cpp
diff options
context:
space:
mode:
authorkamathmanu <manuriddle@gmail.com>2021-08-12 09:50:52 -0400
committerkamathmanu <manuriddle@gmail.com>2021-08-12 09:50:52 -0400
commit570e5ffde236056ad5c70a59681ad6fc1e445717 (patch)
treea28c23497aae12c9e31a2d1952d4862122b0878e /src/RoomDirectoryModel.cpp
parentFix nits from code review (diff)
downloadnheko-570e5ffde236056ad5c70a59681ad6fc1e445717.tar.xz
Added Spinner while rooms load
Diffstat (limited to '')
-rw-r--r--src/RoomDirectoryModel.cpp22
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"); }