From 8a2b618648c76a0fa1fea6e93baff2b27db50055 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Mon, 15 Jun 2020 14:30:01 +0200 Subject: [PATCH] Can change conversation name --- src/controllers/conversations_controller.rs | 20 ++++++++++++++++++++ src/helpers/conversations_helper.rs | 8 ++++++++ src/helpers/database.rs | 9 +++++++++ 3 files changed, 37 insertions(+) diff --git a/src/controllers/conversations_controller.rs b/src/controllers/conversations_controller.rs index c2391a9..c2de980 100644 --- a/src/controllers/conversations_controller.rs +++ b/src/controllers/conversations_controller.rs @@ -98,5 +98,25 @@ pub fn update_settings(r: &mut HttpRequestHandler) -> RequestResult { conversations_helper::set_members(conv_id, &members, is_moderator)?; } + // Change moderator settings + if r.has_post_parameter("name") || r.has_post_parameter("canEveryoneAddMembers") { + if !is_moderator { + r.forbidden("You are not allowed to perform changes on this conversation!".to_string())?; + } + + // Change conversation name + if r.has_post_parameter("name") { + let name = r.post_string_opt("name", 0, true)?; + let name = if name.eq("false") || name.is_empty() { + None + } else { + // TODO : remove HTML nodes + Some(name) + }; + + conversations_helper::set_name(conv_id, name)?; + } + } + r.success("Conversation information successfully updated!") } \ No newline at end of file diff --git a/src/helpers/conversations_helper.rs b/src/helpers/conversations_helper.rs index 4028267..446c158 100644 --- a/src/helpers/conversations_helper.rs +++ b/src/helpers/conversations_helper.rs @@ -167,6 +167,14 @@ pub fn set_members(conv_id: u64, new_list: &Vec, can_delete: bool) -> Re Ok(()) } +/// Set a new name to the conversation +pub fn set_name(conv_id: u64, name: Option) -> ResultBoxError<()> { + database::UpdateInfo::new(CONV_LIST_TABLE) + .cond_u64("id", conv_id) + .set_opt_str("name", name) + .exec() +} + /// Turn a database entry into a ConversationInfo object fn db_to_conversation_info(row: &database::RowResult) -> ResultBoxError { let conv_id = row.get_u64("id")?; diff --git a/src/helpers/database.rs b/src/helpers/database.rs index 6319207..8fe3ed5 100644 --- a/src/helpers/database.rs +++ b/src/helpers/database.rs @@ -574,6 +574,15 @@ impl UpdateInfo { self } + /// Set an new optional string + /// + /// None => Empty string + /// Some => The string + pub fn set_opt_str(mut self, name: &str, val: Option) -> UpdateInfo { + self.set.insert(name.to_string(), Value::from(val.unwrap_or(String::new()))); + self + } + /// Set a new legacy boolean pub fn set_legacy_bool(mut self, name: &str, val: bool) -> UpdateInfo { let num = match val {