Stop paginating on TimelineStartReached
This commit is contained in:
@ -205,24 +205,27 @@ impl SingleClientRoomBuffer {
|
|||||||
let room_id = self.room_id.clone();
|
let room_id = self.room_id.clone();
|
||||||
let timeline = self.timeline.clone();
|
let timeline = self.timeline.clone();
|
||||||
let mut back_pagination_status = timeline.back_pagination_status();
|
let mut back_pagination_status = timeline.back_pagination_status();
|
||||||
if back_pagination_status.get() == BackPaginationStatus::Paginating {
|
match back_pagination_status.get() {
|
||||||
// We are already waiting for a backfill from the server
|
BackPaginationStatus::Paginating | BackPaginationStatus::TimelineStartReached => {
|
||||||
return;
|
// We are already waiting for a backfill from the server
|
||||||
}
|
},
|
||||||
tokio::spawn(async move {
|
BackPaginationStatus::Idle => {
|
||||||
tracing::info!("Starting pagination for {}", room_id);
|
tokio::spawn(async move {
|
||||||
timeline
|
tracing::info!("Starting pagination for {}", room_id);
|
||||||
.paginate_backwards(matrix_sdk_ui::timeline::PaginationOptions::until_num_items(
|
timeline
|
||||||
num, num,
|
.paginate_backwards(matrix_sdk_ui::timeline::PaginationOptions::until_num_items(
|
||||||
))
|
num, num,
|
||||||
.await
|
))
|
||||||
.unwrap_or_else(|e| tracing::error!("Failed to paginate {} backward: {}", room_id, e));
|
.await
|
||||||
tracing::info!("Ended pagination for {}", room_id);
|
.unwrap_or_else(|e| tracing::error!("Failed to paginate {} backward: {}", room_id, e));
|
||||||
});
|
tracing::info!("Ended pagination for {}", room_id);
|
||||||
|
});
|
||||||
|
|
||||||
// Wait for the task we just spawned to change the status, so we don't risk starting
|
// Wait for the task we just spawned to change the status, so we don't risk starting
|
||||||
// a new one in the meantime
|
// a new one in the meantime
|
||||||
back_pagination_status.next().await;
|
back_pagination_status.next().await;
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user