Add visual indication that data is being fetched
This turns `paginationInProgress` field of `TimelineModel` into a `Q_PROPERTY`, so the Ui can bind to it. For the moment, I'm showing the same spinner as we do during initial sync. It's not ideal, on the count of being giant and in the middle but it's better than nothing. We can make it more subtle later.
This commit is contained in:
parent
19ec8d261d
commit
1f9d3024b1
3 changed files with 23 additions and 6 deletions
|
|
@ -432,15 +432,26 @@ TimelineModel::canFetchMore(const QModelIndex &) const
|
|||
return false;
|
||||
}
|
||||
|
||||
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();
|
||||
|
|
@ -455,12 +466,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);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue