|
|
|
|
@ -2262,11 +2262,13 @@ pub fn search_users_route(
@@ -2262,11 +2262,13 @@ pub fn search_users_route(
|
|
|
|
|
db: State<'_, Database>, |
|
|
|
|
body: Ruma<search_users::Request>, |
|
|
|
|
) -> ConduitResult<search_users::Response> { |
|
|
|
|
Ok(search_users::Response { |
|
|
|
|
results: db |
|
|
|
|
.users |
|
|
|
|
.iter() |
|
|
|
|
.filter_map(|user_id| { |
|
|
|
|
let limit = if let Some(limit) = body.limit { |
|
|
|
|
u64::from(limit) |
|
|
|
|
} else { |
|
|
|
|
10 |
|
|
|
|
} as usize; |
|
|
|
|
|
|
|
|
|
let mut users = db.users.iter().filter_map(|user_id| { |
|
|
|
|
// Filter out buggy users (they should not exist, but you never know...)
|
|
|
|
|
let user_id = user_id.ok()?; |
|
|
|
|
if db.users.is_deactivated(&user_id).ok()? { |
|
|
|
|
@ -2290,11 +2292,12 @@ pub fn search_users_route(
@@ -2290,11 +2292,12 @@ pub fn search_users_route(
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Some(user) |
|
|
|
|
}) |
|
|
|
|
.collect(), |
|
|
|
|
limited: false, |
|
|
|
|
} |
|
|
|
|
.into()) |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
let results = users.by_ref().take(limit).collect(); |
|
|
|
|
let limited = users.next().is_some(); |
|
|
|
|
|
|
|
|
|
Ok(search_users::Response { results, limited }.into()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[cfg_attr(
|
|
|
|
|
|