diff --git a/bindings/matrix-sdk-ffi/src/room_directory_search.rs b/bindings/matrix-sdk-ffi/src/room_directory_search.rs index c566a9001..35a5629ec 100644 --- a/bindings/matrix-sdk-ffi/src/room_directory_search.rs +++ b/bindings/matrix-sdk-ffi/src/room_directory_search.rs @@ -91,17 +91,26 @@ impl RoomDirectorySearch { Ok(()) } - pub async fn state(&self, listener: Box) -> TaskHandle { + pub async fn loaded_pages(&self) -> Result { + let inner = self.inner.read().await; + Ok(inner.loaded_pages() as u32) + } + + pub async fn is_at_last_page(&self) -> Result { + let inner = self.inner.read().await; + Ok(inner.is_at_last_page()) + } + + pub async fn results( + &self, + listener: Box, + ) -> TaskHandle { let (initial_values, mut stream) = self.inner.read().await.results(); TaskHandle::new(RUNTIME.spawn(async move { - listener.on_update(RoomDirectorySearchState { - updates: vec![RoomDirectorySearchEntryUpdate::Reset { - values: initial_values.into_iter().map(Into::into).collect(), - }], - is_at_last_page: self.inner.read().await.is_at_last_page(), - loaded_pages: self.inner.read().await.loaded_pages() as u32, - }); + listener.on_update(vec![RoomDirectorySearchEntryUpdate::Reset { + values: initial_values.into_iter().map(Into::into).collect(), + }]); while let Some(diffs) = stream.next().await { listener.on_update(diffs.into_iter().map(|diff| diff.into()).collect()); @@ -158,14 +167,7 @@ impl From> } } -#[derive(uniffi::Record)] -struct RoomDirectorySearchState { - pub updates: Vec, - pub is_at_last_page: bool, - pub loaded_pages: u32, -} - #[uniffi::export(callback_interface)] pub trait RoomDirectorySearchEntriesListener: Send + Sync + Debug { - fn on_update(&self, room_entries_update: RoomDirectorySearchState); + fn on_update(&self, room_entries_update: Vec); }