Browse Source

history-viewer: Load more items when scrolling

merge-requests/1327/merge
Marco Melorio 3 years ago committed by Kévin Commaille
parent
commit
36017efffb
  1. 9
      src/session/content/room_details/history_viewer/audio.rs
  2. 9
      src/session/content/room_details/history_viewer/file.rs
  3. 9
      src/session/content/room_details/history_viewer/media.rs

9
src/session/content/room_details/history_viewer/audio.rs

@ -91,12 +91,19 @@ impl AudioHistoryViewer {
imp.list_view.set_model(Some(&model));
// Load an initial number of items
spawn!(clone!(@weak timeline => async move {
spawn!(clone!(@weak self as obj, @weak timeline => async move {
while timeline.n_items() < MIN_N_ITEMS {
if !timeline.load().await {
break;
}
}
let adj = obj.imp().list_view.vadjustment().unwrap();
adj.connect_value_notify(clone!(@weak timeline => move |adj| {
if adj.value() + adj.page_size() * 2.0 >= adj.upper() {
spawn!(async move { timeline.load().await; });
}
}));
}));
imp.room_timeline.set(timeline).unwrap();

9
src/session/content/room_details/history_viewer/file.rs

@ -91,12 +91,19 @@ impl FileHistoryViewer {
imp.list_view.set_model(Some(&model));
// Load an initial number of items
spawn!(clone!(@weak timeline => async move {
spawn!(clone!(@weak self as obj, @weak timeline => async move {
while timeline.n_items() < MIN_N_ITEMS {
if !timeline.load().await {
break;
}
}
let adj = obj.imp().list_view.vadjustment().unwrap();
adj.connect_value_notify(clone!(@weak timeline => move |adj| {
if adj.value() + adj.page_size() * 2.0 >= adj.upper() {
spawn!(async move { timeline.load().await; });
}
}));
}));
imp.room_timeline.set(timeline).unwrap();

9
src/session/content/room_details/history_viewer/media.rs

@ -112,12 +112,19 @@ impl MediaHistoryViewer {
imp.grid_view.set_model(Some(&model));
// Load an initial number of items
spawn!(clone!(@weak timeline => async move {
spawn!(clone!(@weak self as obj, @weak timeline => async move {
while timeline.n_items() < MIN_N_ITEMS {
if !timeline.load().await {
break;
}
}
let adj = obj.imp().grid_view.vadjustment().unwrap();
adj.connect_value_notify(clone!(@weak timeline => move |adj| {
if adj.value() + adj.page_size() * 2.0 >= adj.upper() {
spawn!(async move { timeline.load().await; });
}
}));
}));
imp.room_timeline.set(timeline).unwrap();

Loading…
Cancel
Save