From 87510a5bc2351ad9f7dc7d46dad5ef570984fd97 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 6 Jun 2023 13:14:59 +0200 Subject: [PATCH] ffi: Add wait_for_token to PaginationOptions --- bindings/matrix-sdk-ffi/src/api.udl | 4 ++-- bindings/matrix-sdk-ffi/src/room.rs | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/bindings/matrix-sdk-ffi/src/api.udl b/bindings/matrix-sdk-ffi/src/api.udl index 7a9864ec4..fc469477e 100644 --- a/bindings/matrix-sdk-ffi/src/api.udl +++ b/bindings/matrix-sdk-ffi/src/api.udl @@ -139,8 +139,8 @@ dictionary MoveData { [Enum] interface PaginationOptions { - SingleRequest(u16 event_limit); - UntilNumItems(u16 event_limit, u16 items); + SingleRequest(u16 event_limit, boolean wait_for_token); + UntilNumItems(u16 event_limit, u16 items, boolean wait_for_token); }; interface RoomMessageEventContent {}; diff --git a/bindings/matrix-sdk-ffi/src/room.rs b/bindings/matrix-sdk-ffi/src/room.rs index 91195d491..aae310e9f 100644 --- a/bindings/matrix-sdk-ffi/src/room.rs +++ b/bindings/matrix-sdk-ffi/src/room.rs @@ -826,18 +826,26 @@ impl Room { } pub enum PaginationOptions { - SingleRequest { event_limit: u16 }, - UntilNumItems { event_limit: u16, items: u16 }, + SingleRequest { event_limit: u16, wait_for_token: bool }, + UntilNumItems { event_limit: u16, items: u16, wait_for_token: bool }, } impl From for matrix_sdk_ui::timeline::PaginationOptions<'static> { fn from(value: PaginationOptions) -> Self { use matrix_sdk_ui::timeline::PaginationOptions as Opts; - match value { - PaginationOptions::SingleRequest { event_limit } => Opts::single_request(event_limit), - PaginationOptions::UntilNumItems { event_limit, items } => { - Opts::until_num_items(event_limit, items) + let (wait_for_token, mut opts) = match value { + PaginationOptions::SingleRequest { event_limit, wait_for_token } => { + (wait_for_token, Opts::single_request(event_limit)) } + PaginationOptions::UntilNumItems { event_limit, items, wait_for_token } => { + (wait_for_token, Opts::until_num_items(event_limit, items)) + } + }; + + if wait_for_token { + opts = opts.wait_for_token(); } + + opts } }