summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2020-05-01 10:19:32 +0200
committerGitHub <noreply@github.com>2020-05-01 10:19:32 +0200
commit38417a374d8b14d3b76d93555dc7d130609212cc (patch)
tree1e3a9f893dd451b5c724523cc6798fedb061b507 /src
parentOld Qt doesn't have .get... (diff)
parentRun linter (diff)
downloadnheko-38417a374d8b14d3b76d93555dc7d130609212cc.tar.xz
Merge pull request #184 from shocklateboy92/features/backlog-progress
Add visual indication that data is being fetched
Diffstat (limited to 'src')
-rw-r--r--src/timeline/TimelineModel.cpp20
-rw-r--r--src/timeline/TimelineModel.h12
2 files changed, 25 insertions, 7 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp

index d68adf92..340bae39 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp
@@ -430,14 +430,25 @@ TimelineModel::canFetchMore(const QModelIndex &) const } void +TimelineModel::setPaginationInProgress(const bool paginationInProgress) +{ + if (m_paginationInProgress == paginationInProgress) { + return; + } + + m_paginationInProgress = paginationInProgress; + emit paginationInProgressChanged(m_paginationInProgress); +} + +void TimelineModel::fetchMore(const QModelIndex &) { - if (paginationInProgress) { + if (m_paginationInProgress) { nhlog::ui()->warn("Already loading older messages"); return; } - paginationInProgress = true; + setPaginationInProgress(true); mtx::http::MessagesOpts opts; opts.room_id = room_id_.toStdString(); opts.from = prev_batch_token_.toStdString(); @@ -452,12 +463,13 @@ TimelineModel::fetchMore(const QModelIndex &) mtx::errors::to_string(err->matrix_error.errcode), err->matrix_error.error, err->parse_error); - paginationInProgress = false; + emit oldMessagesRetrieved(std::move(res)); + setPaginationInProgress(false); return; } emit oldMessagesRetrieved(std::move(res)); - paginationInProgress = false; + setPaginationInProgress(false); }); } diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index ae468c09..cc63eca2 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h
@@ -124,6 +124,8 @@ class TimelineModel : public QAbstractListModel Q_PROPERTY(std::vector<QString> typingUsers READ typingUsers WRITE updateTypingUsers NOTIFY typingUsersChanged) Q_PROPERTY(QString reply READ reply WRITE setReply NOTIFY replyChanged RESET resetReply) + Q_PROPERTY( + bool paginationInProgress READ paginationInProgress NOTIFY paginationInProgressChanged) public: explicit TimelineModel(TimelineViewManager *manager, @@ -208,6 +210,7 @@ public slots: } } std::vector<QString> typingUsers() const { return typingUsers_; } + bool paginationInProgress() const { return m_paginationInProgress; } QString reply() const { return reply_; } void setReply(QString newReply) @@ -246,6 +249,7 @@ signals: void eventFetched(QString requestingEvent, mtx::events::collections::TimelineEvents event); void typingUsersChanged(std::vector<QString> users); void replyChanged(QString reply); + void paginationInProgressChanged(const bool); private: DecryptionResult decryptEvent( @@ -261,6 +265,8 @@ private: mtx::http::RequestErr err); void readEvent(const std::string &id); + void setPaginationInProgress(const bool paginationInProgress); + QHash<QString, mtx::events::collections::TimelineEvents> events; QSet<QString> read; QList<QString> pending; @@ -269,9 +275,9 @@ private: QString room_id_; QString prev_batch_token_; - bool isInitialSync = true; - bool paginationInProgress = false; - bool decryptDescription = true; + bool isInitialSync = true; + bool decryptDescription = true; + bool m_paginationInProgress = false; QString currentId; QString reply_;