ffi: Use batched timeline subscription

This commit is contained in:
Jonas Platte
2023-08-01 10:56:19 +02:00
committed by Jonas Platte
parent 9a8c6249bb
commit 640e5fbacf
2 changed files with 6 additions and 4 deletions

View File

@@ -241,13 +241,15 @@ impl Room {
})
.clone();
let (timeline_items, timeline_stream) = timeline.subscribe().await;
let (timeline_items, timeline_stream) = timeline.subscribe_batched().await;
let timeline_stream = TaskHandle::new(RUNTIME.spawn(async move {
pin_mut!(timeline_stream);
while let Some(diff) = timeline_stream.next().await {
listener.on_update(Arc::new(TimelineDiff::new(diff)));
while let Some(diffs) = timeline_stream.next().await {
listener.on_update(
diffs.into_iter().map(|d| Arc::new(TimelineDiff::new(d))).collect(),
);
}
}));

View File

@@ -53,7 +53,7 @@ pub fn message_event_content_from_markdown(md: String) -> Arc<RoomMessageEventCo
#[uniffi::export(callback_interface)]
pub trait TimelineListener: Sync + Send {
fn on_update(&self, diff: Arc<TimelineDiff>);
fn on_update(&self, diff: Vec<Arc<TimelineDiff>>);
}
#[derive(Clone, uniffi::Object)]