mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 16:35:17 +00:00
Gather information to create a new conversation
This commit is contained in:
@ -4,8 +4,42 @@
|
||||
|
||||
use crate::data::http_request_handler::HttpRequestHandler;
|
||||
use crate::controllers::routes::RequestResult;
|
||||
use crate::helpers::user_helper;
|
||||
use crate::data::new_conversation::NewConversation;
|
||||
|
||||
/// Create a new conversation
|
||||
pub fn create(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let name = r.post_string("name")?;
|
||||
let mut members = r.post_numbers_list("users", 1)?;
|
||||
|
||||
// Adapt name
|
||||
let name = match name.as_str() {
|
||||
"false" => None,
|
||||
s => Some(s.to_string())
|
||||
};
|
||||
|
||||
// Check if members exists
|
||||
for user in &members {
|
||||
if !user_helper::exists(user.clone())? {
|
||||
r.not_found(format!("User {} not found!", user))?;
|
||||
}
|
||||
}
|
||||
|
||||
// Add current user ID if required
|
||||
let curr_user_id = r.user_id()? as i64;
|
||||
if !members.contains(&curr_user_id) {
|
||||
members.push(curr_user_id);
|
||||
}
|
||||
|
||||
let conv = NewConversation {
|
||||
owner_id: r.user_id()?,
|
||||
name,
|
||||
owner_following: r.post_bool("follow")?,
|
||||
members,
|
||||
can_everyone_add_members: r.post_bool_opt("canEveryoneAddMembers", true)
|
||||
};
|
||||
|
||||
println!("Conversation to create: {:#?}", conv);
|
||||
|
||||
r.success("create")
|
||||
}
|
Reference in New Issue
Block a user