mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-12-27 05:58:51 +00:00
Create first server message for conversations
This commit is contained in:
parent
466cf1903f
commit
8a33980a2d
@ -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()))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user