Skip to content
Snippets Groups Projects
Commit 9d763c4d authored by Konstantinos Sideris's avatar Konstantinos Sideris
Browse files

Don't keep fetching history on non-visible timelines

If the user switched to another timeline before the current timeline
filled up with messages, nheko would keep fetching history.

Now it will check periodically if the timeline became visible so
it can decide whether or not to stop fetching history.
parent 9dcdd70a
No related branches found
No related tags found
No related merge requests found
......@@ -27,13 +27,14 @@
#include <QStyle>
#include <QStyleOption>
#include <mtx.hpp>
#include <mtx/events.hpp>
#include <mtx/responses/messages.hpp>
#include "MatrixClient.h"
#include "ScrollBar.h"
#include "TimelineItem.h"
class FloatingButton;
class ScrollBar;
struct DescInfo;
// Contains info about a message shown in the history view
......@@ -122,6 +123,7 @@ private:
void updateLastSender(const QString &user_id, TimelineDirection direction);
void notifyForLastEvent();
void readLastEvent() const;
bool isScrollbarActivated() { return scroll_area_->verticalScrollBar()->value() != 0; }
QString getLastEventId() const;
QString getEventSender(const mtx::events::collections::TimelineEvents &event) const;
......
......@@ -21,7 +21,6 @@
#include "FloatingButton.h"
#include "RoomMessages.h"
#include "ScrollBar.h"
#include "timeline/TimelineView.h"
#include "timeline/widgets/AudioItem.h"
......@@ -83,12 +82,18 @@ TimelineView::sliderRangeChanged(int min, int max)
void
TimelineView::fetchHistory()
{
bool hasEnoughMessages = scroll_area_->verticalScrollBar()->isVisible();
if (!isScrollbarActivated() && !isTimelineFinished) {
if (!isVisible()) {
// Check again later if the timeline became visible.
// TODO: Use a backoff strategy.
paginationTimer_->start(3000);
return;
}
if (!hasEnoughMessages && !isTimelineFinished) {
isPaginationInProgress_ = true;
client_->messages(room_id_, prev_batch_token_);
paginationTimer_->start(500);
paginationTimer_->start(1500);
return;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment