Skip to content

Commit ee7f9e0

Browse files
committed
Return the TaskHandle from FFI space service subscription methods so it can be retained client side.
1 parent 4892d7c commit ee7f9e0

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

bindings/matrix-sdk-ffi/src/spaces.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ impl SpaceService {
4949
self.inner.joined_spaces().into_iter().map(Into::into).collect()
5050
}
5151

52-
pub fn subscribe_to_joined_spaces(&self, listener: Box<dyn SpaceServiceJoinedSpacesListener>) {
52+
pub fn subscribe_to_joined_spaces(
53+
&self,
54+
listener: Box<dyn SpaceServiceJoinedSpacesListener>,
55+
) -> Arc<TaskHandle> {
5356
let entries_stream = self.inner.subscribe_to_joined_spaces();
5457

5558
Arc::new(TaskHandle::new(get_runtime_handle().spawn(async move {
@@ -58,7 +61,7 @@ impl SpaceService {
5861
while let Some(rooms) = entries_stream.next().await {
5962
listener.on_update(rooms.into_iter().map(Into::into).collect());
6063
}
61-
})));
64+
})))
6265
}
6366

6467
#[allow(clippy::unused_async)]
@@ -95,7 +98,7 @@ impl SpaceServiceRoomList {
9598
pub fn subscribe_to_pagiation_state_updates(
9699
&self,
97100
listener: Box<dyn SpaceServiceRoomListPaginationStateListener>,
98-
) {
101+
) -> Arc<TaskHandle> {
99102
let pagination_state = self.inner.subscribe_to_pagination_state_updates();
100103

101104
Arc::new(TaskHandle::new(get_runtime_handle().spawn(async move {
@@ -104,14 +107,17 @@ impl SpaceServiceRoomList {
104107
while let Some(state) = pagination_state.next().await {
105108
listener.on_update(state.into());
106109
}
107-
})));
110+
})))
108111
}
109112

110113
pub fn rooms(&self) -> Vec<SpaceServiceRoom> {
111114
self.inner.rooms().into_iter().map(Into::into).collect()
112115
}
113116

114-
pub fn subscribe_to_room_update(&self, listener: Box<dyn SpaceServiceRoomListEntriesListener>) {
117+
pub fn subscribe_to_room_update(
118+
&self,
119+
listener: Box<dyn SpaceServiceRoomListEntriesListener>,
120+
) -> Arc<TaskHandle> {
115121
let entries_stream = self.inner.subscribe_to_room_updates();
116122

117123
Arc::new(TaskHandle::new(get_runtime_handle().spawn(async move {
@@ -120,7 +126,7 @@ impl SpaceServiceRoomList {
120126
while let Some(rooms) = entries_stream.next().await {
121127
listener.on_update(rooms.into_iter().map(Into::into).collect());
122128
}
123-
})));
129+
})))
124130
}
125131

126132
pub async fn paginate(&self) -> Result<(), ClientError> {

0 commit comments

Comments
 (0)