|
|
|
@ -112,12 +112,19 @@ impl MediaHistoryViewer { |
|
|
|
imp.grid_view.set_model(Some(&model)); |
|
|
|
imp.grid_view.set_model(Some(&model)); |
|
|
|
|
|
|
|
|
|
|
|
// Load an initial number of items
|
|
|
|
// 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 { |
|
|
|
while timeline.n_items() < MIN_N_ITEMS { |
|
|
|
if !timeline.load().await { |
|
|
|
if !timeline.load().await { |
|
|
|
break; |
|
|
|
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(); |
|
|
|
imp.room_timeline.set(timeline).unwrap(); |
|
|
|
|