diff --git a/crates/ruma-client-api/src/r0/context/get_context.rs b/crates/ruma-client-api/src/r0/context/get_context.rs index 1a1f9061..0ef45027 100644 --- a/crates/ruma-client-api/src/r0/context/get_context.rs +++ b/crates/ruma-client-api/src/r0/context/get_context.rs @@ -39,9 +39,9 @@ ruma_api! { #[serde( with = "ruma_serde::json_string", default, - skip_serializing_if = "Option::is_none" + skip_serializing_if = "RoomEventFilter::is_empty" )] - pub filter: Option>, + pub filter: RoomEventFilter<'a>, } #[derive(Default)] @@ -79,7 +79,7 @@ ruma_api! { impl<'a> Request<'a> { /// Creates a new `Request` with the given room id and event id. pub fn new(room_id: &'a RoomId, event_id: &'a EventId) -> Self { - Self { room_id, event_id, limit: default_limit(), filter: None } + Self { room_id, event_id, limit: default_limit(), filter: RoomEventFilter::default() } } } diff --git a/crates/ruma-client-api/src/r0/message/get_message_events.rs b/crates/ruma-client-api/src/r0/message/get_message_events.rs index 1e7b4bfb..b33d4a4f 100644 --- a/crates/ruma-client-api/src/r0/message/get_message_events.rs +++ b/crates/ruma-client-api/src/r0/message/get_message_events.rs @@ -57,9 +57,9 @@ ruma_api! { #[serde( with = "ruma_serde::json_string", default, - skip_serializing_if = "Option::is_none" + skip_serializing_if = "RoomEventFilter::is_empty" )] - pub filter: Option>, + pub filter: RoomEventFilter<'a>, } #[derive(Default)] @@ -88,7 +88,14 @@ impl<'a> Request<'a> { /// /// All other parameters will be defaulted. pub fn new(room_id: &'a RoomId, from: &'a str, dir: Direction) -> Self { - Self { room_id, from, to: None, dir, limit: default_limit(), filter: None } + Self { + room_id, + from, + to: None, + dir, + limit: default_limit(), + filter: RoomEventFilter::default(), + } } /// Creates a new `Request` with the given room ID and from token, and `dir` set to `Backward`. @@ -161,7 +168,7 @@ mod tests { to: Some("token2"), dir: Direction::Backward, limit: uint!(0), - filter: Some(filter), + filter, }; let request: http::Request> = req @@ -181,7 +188,7 @@ mod tests { } #[test] - fn serialize_none_room_event_filter() { + fn serialize_default_room_event_filter() { let room_id = room_id!("!roomid:example.org"); let req = Request { room_id, @@ -189,7 +196,7 @@ mod tests { to: Some("token2"), dir: Direction::Backward, limit: uint!(0), - filter: None, + filter: RoomEventFilter::default(), }; let request = req @@ -200,28 +207,4 @@ mod tests { .unwrap(); assert_eq!("from=token&to=token2&dir=b&limit=0", request.uri().query().unwrap(),); } - - #[test] - fn serialize_default_room_event_filter() { - let room_id = room_id!("!roomid:example.org"); - let req = Request { - room_id, - from: "token", - to: Some("token2"), - dir: Direction::Backward, - limit: uint!(0), - filter: Some(RoomEventFilter::default()), - }; - - let request: http::Request> = req - .try_into_http_request( - "https://homeserver.tld", - SendAccessToken::IfRequired("auth_tok"), - ) - .unwrap(); - assert_eq!( - "from=token&to=token2&dir=b&limit=0&filter=%7B%7D", - request.uri().query().unwrap(), - ); - } } diff --git a/crates/ruma-client-api/src/r0/search/search_events.rs b/crates/ruma-client-api/src/r0/search/search_events.rs index 2751b892..77ec4053 100644 --- a/crates/ruma-client-api/src/r0/search/search_events.rs +++ b/crates/ruma-client-api/src/r0/search/search_events.rs @@ -87,8 +87,8 @@ pub struct Criteria<'a> { pub keys: Option<&'a [SearchKeys]>, /// A `Filter` to apply to the search. - #[serde(skip_serializing_if = "Option::is_none")] - pub filter: Option>, + #[serde(skip_serializing_if = "RoomEventFilter::is_empty")] + pub filter: RoomEventFilter<'a>, /// The order in which to search for results. #[serde(skip_serializing_if = "Option::is_none")] @@ -113,7 +113,7 @@ impl<'a> Criteria<'a> { Self { search_term, keys: None, - filter: None, + filter: RoomEventFilter::default(), order_by: None, event_context: Default::default(), include_state: None,