@@ -49,6 +49,18 @@ impl SpaceService {
49
49
self . inner . joined_spaces ( ) . into_iter ( ) . map ( Into :: into) . collect ( )
50
50
}
51
51
52
+ pub fn subscribe_to_joined_spaces ( & self , listener : Box < dyn SpaceServiceJoinedSpacesListener > ) {
53
+ let entries_stream = self . inner . subscribe_to_joined_spaces ( ) ;
54
+
55
+ Arc :: new ( TaskHandle :: new ( get_runtime_handle ( ) . spawn ( async move {
56
+ pin_mut ! ( entries_stream) ;
57
+
58
+ while let Some ( rooms) = entries_stream. next ( ) . await {
59
+ listener. on_update ( rooms. into_iter ( ) . map ( Into :: into) . collect ( ) ) ;
60
+ }
61
+ } ) ) ) ;
62
+ }
63
+
52
64
#[ allow( clippy:: unused_async) ]
53
65
// This method doesn't need to be async but if its not the FFI layer panics
54
66
// with "there is no no reactor running, must be called from the context
@@ -110,6 +122,10 @@ impl SpaceServiceRoomList {
110
122
}
111
123
} ) ) ) ;
112
124
}
125
+
126
+ pub async fn paginate ( & self ) -> Result < ( ) , ClientError > {
127
+ self . inner . paginate ( ) . await . map_err ( ClientError :: from)
128
+ }
113
129
}
114
130
115
131
#[ derive( uniffi:: Enum ) ]
@@ -143,6 +159,11 @@ pub trait SpaceServiceRoomListEntriesListener: SendOutsideWasm + SyncOutsideWasm
143
159
fn on_update ( & self , rooms : Vec < SpaceServiceRoom > ) ;
144
160
}
145
161
162
+ #[ matrix_sdk_ffi_macros:: export( callback_interface) ]
163
+ pub trait SpaceServiceJoinedSpacesListener : SendOutsideWasm + SyncOutsideWasm + Debug {
164
+ fn on_update ( & self , rooms : Vec < SpaceServiceRoom > ) ;
165
+ }
166
+
146
167
#[ derive( uniffi:: Record ) ]
147
168
pub struct SpaceServiceRoom {
148
169
pub room_id : String ,
0 commit comments