mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-30 23:24:42 +00:00 
			
		
		
		
	Create first server message for conversations
This commit is contained in:
		| @@ -49,7 +49,7 @@ pub fn create(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|         can_everyone_add_members: r.post_bool_opt("canEveryoneAddMembers", true), | ||||
|         color: r.post_color_opt("color")?, | ||||
|         group_id: None, | ||||
|         logo: None,// TODO : add support for logo | ||||
|         logo: None, | ||||
|     }; | ||||
|  | ||||
|     // Create the conversation | ||||
| @@ -285,8 +285,6 @@ pub fn get_older_messages(r: &mut HttpRequestHandler) -> RequestResult { | ||||
| pub fn send_message(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     let conv = r.post_conv("conversationID")?; | ||||
|  | ||||
|     // TODO : add support for other files type | ||||
|  | ||||
|     // Get associated file | ||||
|     let file = match r.post_parameter_opt("file") { | ||||
|         Some(RequestValue::File(file)) => { | ||||
|   | ||||
| @@ -12,5 +12,18 @@ pub struct NewConversationMessage { | ||||
|     pub conv_id: ConvID, | ||||
|     pub message: Option<String>, | ||||
|     pub file: Option<ConversationMessageFile>, | ||||
|     pub server_message: Option<ConversationServerMessageType> | ||||
|     pub server_message: Option<ConversationServerMessageType>, | ||||
| } | ||||
|  | ||||
| impl NewConversationMessage { | ||||
|     /// Create a new server message | ||||
|     pub fn new_server_message(conv_id: ConvID, message: ConversationServerMessageType) -> Self { | ||||
|         Self { | ||||
|             user_id: None, | ||||
|             conv_id, | ||||
|             message: None, | ||||
|             file: None, | ||||
|             server_message: Some(message), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -4,7 +4,7 @@ | ||||
|  | ||||
| use crate::constants::database_tables_names::{CONV_LIST_TABLE, CONV_MEMBERS_TABLE, CONV_MESSAGES_TABLE}; | ||||
| use crate::data::conversation::{Conversation, ConversationMember, ConvID, NewConversationSettings}; | ||||
| use crate::data::conversation_message::{ConversationMessage, ConversationMessageFile, ConversationServerMessageType}; | ||||
| use crate::data::conversation_message::{ConversationMessage, ConversationMessageFile, ConversationServerMessageType, UserAddedAnotherUserToConversation}; | ||||
| use crate::data::error::{ExecError, Res, ResultBoxError}; | ||||
| use crate::data::new_conversation::NewConversation; | ||||
| use crate::data::new_conversation_message::NewConversationMessage; | ||||
| @@ -48,7 +48,7 @@ pub fn create(conv: &NewConversation) -> Res<ConvID> { | ||||
| } | ||||
|  | ||||
| /// Add a member to a conversation | ||||
| pub fn add_member(conv_id: ConvID, user_id: &UserID, following: bool, admin: bool, _adder: &UserID) -> Res { | ||||
| pub fn add_member(conv_id: ConvID, user_id: &UserID, following: bool, admin: bool, adder: &UserID) -> Res { | ||||
|     InsertQuery::new(CONV_MEMBERS_TABLE) | ||||
|         .add_conv_id("conv_id", conv_id) | ||||
|         .add_user_id("user_id", user_id) | ||||
| @@ -58,7 +58,18 @@ pub fn add_member(conv_id: ConvID, user_id: &UserID, following: bool, admin: boo | ||||
|         .add_u64("last_message_seen", 0) | ||||
|         .insert()?; | ||||
|  | ||||
|     // TODO : create a message | ||||
|     // Create a message | ||||
|     if adder != user_id { | ||||
|         send_message( | ||||
|             &NewConversationMessage::new_server_message( | ||||
|                 conv_id, | ||||
|                 ConversationServerMessageType::UserAddedAnotherUserToConversation(UserAddedAnotherUserToConversation { | ||||
|                     user_who_added: adder.clone(), | ||||
|                     user_added: user_id.clone() | ||||
|                 }) | ||||
|             ) | ||||
|         )?; | ||||
|     } | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
| @@ -276,7 +287,7 @@ pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> { | ||||
|     // Insert the message in the database | ||||
|     let mut msg_request = database::InsertQuery::new(CONV_MESSAGES_TABLE) | ||||
|         .add_conv_id("conv_id", msg.conv_id) | ||||
|         .add_u64("user_id", msg.user_id.as_ref().map(|u| u.id()).unwrap_or(0)) | ||||
|         .add_opt_user_id("user_id", msg.user_id.clone()) | ||||
|         .add_u64("time_sent", t); | ||||
|  | ||||
|     if let Some(server_msg) = &msg.server_message { | ||||
|   | ||||
| @@ -615,7 +615,12 @@ impl InsertQuery { | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     /// Add an optional number. If None, Null will be inserted | ||||
|     /// Add an optional user ID. If None, Null will be inserted | ||||
|     pub fn add_opt_user_id(self, key: &str, value: Option<UserID>) -> InsertQuery { | ||||
|         self.add_opt_u64(key, value.map(|u| u.id())) | ||||
|     } | ||||
|  | ||||
|     /// Add an optional group ID. If None, Null will be inserted | ||||
|     pub fn add_opt_group_id(self, key: &str, value: Option<GroupID>) -> InsertQuery { | ||||
|         self.add_opt_u64(key, value.map(|u| u.id())) | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user