mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-15 03:25:46 -04:00
feat(sdk): SlidingSyncList::state_stream returns a tuple.
This patch updates `SlidingSyncList::state_stream` to return a tuple `(SlidingSyncListLoadingState, impl Stream<Item = SlidingSyncListLoadingState>)`.
This commit is contained in:
@@ -560,7 +560,7 @@ impl SlidingSyncList {
|
||||
&self,
|
||||
observer: Box<dyn SlidingSyncListStateObserver>,
|
||||
) -> Arc<TaskHandle> {
|
||||
let mut state_stream = self.inner.state_stream();
|
||||
let (_, mut state_stream) = self.inner.state_stream();
|
||||
|
||||
Arc::new(TaskHandle::new(RUNTIME.spawn(async move {
|
||||
loop {
|
||||
|
||||
@@ -448,7 +448,7 @@ let sliding_sync = sliding_sync_builder
|
||||
|
||||
// subscribe to the list APIs for updates
|
||||
|
||||
let (list_state_stream, list_count_stream, (_, list_stream)) = sliding_sync.on_list(&active_list_name, |list| {
|
||||
let ((_, list_state_stream), list_count_stream, (_, list_stream)) = sliding_sync.on_list(&active_list_name, |list| {
|
||||
ready((list.state_stream(), list.maximum_number_of_rooms_stream(), list.room_list_stream()))
|
||||
}).await.unwrap();
|
||||
|
||||
|
||||
@@ -110,8 +110,14 @@ impl SlidingSyncList {
|
||||
///
|
||||
/// There's no guarantee of ordering between items emitted by this stream
|
||||
/// and those emitted by other streams exposed on this structure.
|
||||
pub fn state_stream(&self) -> impl Stream<Item = SlidingSyncListLoadingState> {
|
||||
Observable::subscribe(&self.inner.state.read().unwrap())
|
||||
pub fn state_stream(
|
||||
&self,
|
||||
) -> (SlidingSyncListLoadingState, impl Stream<Item = SlidingSyncListLoadingState>) {
|
||||
let read_lock = self.inner.state.read().unwrap();
|
||||
let previous_value = (*read_lock).clone();
|
||||
let subscriber = Observable::subscribe(&read_lock);
|
||||
|
||||
(previous_value, subscriber)
|
||||
}
|
||||
|
||||
/// Get the timeline limit.
|
||||
|
||||
Reference in New Issue
Block a user