From 90bd4874e3936873bda2a1ca61a064126d3b10d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Sat, 17 Oct 2020 23:06:52 +0200 Subject: [PATCH] Remove Option wrapper around directory filters --- .../src/r0/directory/get_public_rooms_filtered.rs | 4 ++-- ruma-common/src/directory.rs | 6 ++++++ .../src/directory/get_public_rooms_filtered/v1.rs | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ruma-client-api/src/r0/directory/get_public_rooms_filtered.rs b/ruma-client-api/src/r0/directory/get_public_rooms_filtered.rs index 9ee5204b..d96e3c02 100644 --- a/ruma-client-api/src/r0/directory/get_public_rooms_filtered.rs +++ b/ruma-client-api/src/r0/directory/get_public_rooms_filtered.rs @@ -35,8 +35,8 @@ ruma_api! { pub since: Option<&'a str>, /// Filter to apply to the results. - #[serde(skip_serializing_if = "Option::is_none")] - pub filter: Option>, + #[serde(default, skip_serializing_if = "Filter::is_empty")] + pub filter: Filter<'a>, /// Network to fetch the public room lists from. #[serde(flatten, skip_serializing_if = "ruma_serde::is_default")] diff --git a/ruma-common/src/directory.rs b/ruma-common/src/directory.rs index 70bd31e4..eb2c1d95 100644 --- a/ruma-common/src/directory.rs +++ b/ruma-common/src/directory.rs @@ -98,6 +98,7 @@ impl From for PublicRoomsChunk { /// A filter for public rooms lists #[derive(Clone, Debug, Default, Outgoing, Serialize)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] +#[incoming_derive(Default)] pub struct Filter<'a> { /// A string to search for in the room metadata, e.g. name, topic, canonical alias etc. #[serde(skip_serializing_if = "Option::is_none")] @@ -109,6 +110,11 @@ impl Filter<'_> { pub fn new() -> Self { Default::default() } + + /// Returns `true` if the filter is empty. + pub fn is_empty(&self) -> bool { + self.generic_search_term.is_none() + } } /// Information about which networks/protocols from application services on the diff --git a/ruma-federation-api/src/directory/get_public_rooms_filtered/v1.rs b/ruma-federation-api/src/directory/get_public_rooms_filtered/v1.rs index 506531fd..14532190 100644 --- a/ruma-federation-api/src/directory/get_public_rooms_filtered/v1.rs +++ b/ruma-federation-api/src/directory/get_public_rooms_filtered/v1.rs @@ -27,8 +27,8 @@ ruma_api! { pub since: Option<&'a str>, /// Filter to apply to the results. - #[serde(skip_serializing_if = "Option::is_none")] - pub filter: Option>, + #[serde(default, skip_serializing_if = "Filter::is_empty")] + pub filter: Filter<'a>, /// Network to fetch the public room lists from. #[serde(flatten, skip_serializing_if = "ruma_serde::is_default")]