mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-24 16:48:52 -04:00
Use new functionality from eyeball-im-util 0.5
This commit is contained in:
committed by
Jonas Platte
parent
0504eafc0a
commit
97c5acff7c
@@ -22,7 +22,7 @@ use async_rx::StreamExt as _;
|
||||
use async_stream::stream;
|
||||
use eyeball::{SharedObservable, Subscriber};
|
||||
use eyeball_im::{Vector, VectorDiff};
|
||||
use eyeball_im_util::vector::Limit;
|
||||
use eyeball_im_util::vector::VectorObserverExt;
|
||||
use futures_util::{pin_mut, stream, Stream, StreamExt as _};
|
||||
use matrix_sdk::{
|
||||
executor::{spawn, JoinHandle},
|
||||
@@ -145,11 +145,12 @@ impl RoomList {
|
||||
let stream = stream! {
|
||||
loop {
|
||||
let filter_fn = filter_fn_cell.take().await;
|
||||
let (items, stream) = list.room_list_filtered_stream(filter_fn);
|
||||
let (items, stream) = Limit::dynamic_with_initial_limit(items, stream, page_size, limit_stream.clone());
|
||||
let (values, stream) = list
|
||||
.room_list_filtered_stream(filter_fn)
|
||||
.dynamic_limit_with_initial_value(page_size, limit_stream.clone());
|
||||
|
||||
// Clearing the stream before chaining with the real stream.
|
||||
yield stream::once(ready(vec![VectorDiff::Reset { values: items }]))
|
||||
yield stream::once(ready(vec![VectorDiff::Reset { values }]))
|
||||
.chain(stream);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ use std::{fmt, sync::Arc};
|
||||
|
||||
use as_variant::as_variant;
|
||||
use eyeball_im::{ObservableVectorEntry, VectorDiff};
|
||||
use eyeball_im_util::vector;
|
||||
use eyeball_im_util::vector::VectorObserverExt;
|
||||
use futures_core::Stream;
|
||||
use imbl::Vector;
|
||||
use itertools::Itertools;
|
||||
@@ -170,8 +170,7 @@ impl<P: RoomDataProvider> TimelineInner<P> {
|
||||
F: Fn(Arc<TimelineItem>) -> Option<U>,
|
||||
{
|
||||
trace!("Creating timeline items signal");
|
||||
let state = self.state.read().await;
|
||||
vector::FilterMap::new(state.items.clone(), state.items.subscribe().into_stream(), f)
|
||||
self.state.read().await.items.subscribe().filter_map(f)
|
||||
}
|
||||
|
||||
pub(super) async fn toggle_reaction_local(
|
||||
|
||||
@@ -14,7 +14,7 @@ use std::{
|
||||
|
||||
use eyeball::{Observable, Subscriber};
|
||||
use eyeball_im::{ObservableVector, ObservableVectorTransaction, VectorDiff};
|
||||
use eyeball_im_util::vector;
|
||||
use eyeball_im_util::vector::{VectorObserverExt, VectorSubscriberExt};
|
||||
use futures_core::Stream;
|
||||
use imbl::Vector;
|
||||
use ruma::{api::client::sync::sync_events::v4, assign, OwnedRoomId, TransactionId};
|
||||
@@ -169,11 +169,7 @@ impl SlidingSyncList {
|
||||
where
|
||||
F: Fn(&RoomListEntry) -> bool,
|
||||
{
|
||||
let read_lock = self.inner.room_list.read().unwrap();
|
||||
let values = (*read_lock).clone();
|
||||
let subscriber = ObservableVector::subscribe(&read_lock);
|
||||
|
||||
vector::Filter::new(values, subscriber.into_batched_stream(), filter)
|
||||
self.inner.room_list.read().unwrap().subscribe().batched().filter(filter)
|
||||
}
|
||||
|
||||
/// Get the maximum number of rooms. See [`Self::maximum_number_of_rooms`]
|
||||
|
||||
Reference in New Issue
Block a user