From fa3bc56ef4b7eea2e12d3efc687aeea3c353c735 Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Tue, 25 May 2021 15:03:49 +0100 Subject: [PATCH] Channels: Add option to return users in message query. --- src/routes/channels/message_query.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/routes/channels/message_query.rs b/src/routes/channels/message_query.rs index 903d811..3206f23 100644 --- a/src/routes/channels/message_query.rs +++ b/src/routes/channels/message_query.rs @@ -1,3 +1,5 @@ +use std::collections::HashSet; + use crate::database::*; use crate::util::result::{Error, Result}; @@ -26,6 +28,7 @@ pub struct Options { #[validate(length(min = 26, max = 26))] after: Option<String>, sort: Option<Sort>, + include_users: Option<bool> } #[get("/<target>/messages?<options..>")] @@ -87,5 +90,19 @@ pub async fn req(user: User, target: Ref, options: Form<Options>) -> Result<Json } } - Ok(json!(messages)) + if options.include_users.unwrap_or_else(|| false) { + let mut ids = HashSet::new(); + for message in &messages { + ids.insert(message.author.clone()); + } + + let user_ids = ids.into_iter().collect(); + + Ok(json!({ + "messages": messages, + "users": user.fetch_multiple_users(user_ids).await? + })) + } else { + Ok(json!(messages)) + } } -- GitLab