From 51f2e773a000fa3a2ecf109fa16f009625d41ecd Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 11 Jan 2023 17:29:24 +0100 Subject: [PATCH] fix(ffi): add Pop and Clear to VecDiff for sliding-sync --- bindings/matrix-sdk-ffi/src/api.udl | 5 ++--- bindings/matrix-sdk-ffi/src/sliding_sync.rs | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bindings/matrix-sdk-ffi/src/api.udl b/bindings/matrix-sdk-ffi/src/api.udl index 1092ae4ed..96302aa37 100644 --- a/bindings/matrix-sdk-ffi/src/api.udl +++ b/bindings/matrix-sdk-ffi/src/api.udl @@ -82,9 +82,8 @@ interface SlidingSyncViewRoomsListDiff { u32 new_index ); Push(RoomListEntry value); - // The following are supported by the generic VecDiff-type but - // in sliding sync effectively do not happen and thus aren't exposed - // to not pollute the API: Pop(); Clear(); + Pop(); + Clear(); }; callback interface SlidingSyncViewRoomListObserver { diff --git a/bindings/matrix-sdk-ffi/src/sliding_sync.rs b/bindings/matrix-sdk-ffi/src/sliding_sync.rs index 13dd28f8e..1fdce3db7 100644 --- a/bindings/matrix-sdk-ffi/src/sliding_sync.rs +++ b/bindings/matrix-sdk-ffi/src/sliding_sync.rs @@ -216,6 +216,8 @@ pub enum SlidingSyncViewRoomsListDiff { RemoveAt { index: u32 }, Move { old_index: u32, new_index: u32 }, Push { value: RoomListEntry }, + Pop, // removes the last item + Clear, // clears the list } impl From> for SlidingSyncViewRoomsListDiff { @@ -242,7 +244,8 @@ impl From> for SlidingSyncViewRoomsListDiff { VecDiff::Push { value } => { SlidingSyncViewRoomsListDiff::Push { value: (&value).into() } } - _ => unimplemented!("Clear and Pop aren't provided within sliding sync"), + VecDiff::Pop {} => SlidingSyncViewRoomsListDiff::Pop, + VecDiff::Clear {} => SlidingSyncViewRoomsListDiff::Clear, } } }