mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-29 16:56:28 +00:00
Can update conversation message content
This commit is contained in:
parent
21e68d2c9e
commit
a5c83cc1b4
@ -298,4 +298,18 @@ pub fn delete_conversation(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
conversations_helper::remove_user_from_conversation(r.user_id()?, conv_id)?;
|
||||
|
||||
r.success("The conversation has been deleted")
|
||||
}
|
||||
|
||||
/// Update a single conversation message
|
||||
pub fn update_message(r: &mut HttpRequestHandler) -> RequestResult {
|
||||
let msg_id = r.post_u64("messageID")?;
|
||||
let new_content = r.post_string_opt("content", 3, true)?;
|
||||
|
||||
if !conversations_helper::is_message_owner(r.user_id()?, msg_id)? {
|
||||
r.forbidden("You are not the owner of this message!".to_string())?;
|
||||
}
|
||||
|
||||
conversations_helper::update_message_content(msg_id, &new_content)?;
|
||||
|
||||
r.success("Conversation message content successfully updated")
|
||||
}
|
@ -114,6 +114,8 @@ pub fn get_routes() -> Vec<Route> {
|
||||
|
||||
Route::post("/conversations/delete", Box::new(conversations_controller::delete_conversation)),
|
||||
|
||||
Route::post("/conversations/updateMessage", Box::new(conversations_controller::update_message)),
|
||||
|
||||
|
||||
// Virtual directory controller
|
||||
Route::post("/user/findbyfolder", Box::new(virtual_directory_controller::find_user)),
|
||||
|
@ -293,6 +293,14 @@ pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Update message content
|
||||
pub fn update_message_content(msg_id: u64, new_content: &str) -> ResultBoxError<()> {
|
||||
database::UpdateInfo::new(CONV_MESSAGES_TABLE)
|
||||
.cond_u64("id", msg_id)
|
||||
.set_str("message", new_content)
|
||||
.exec()
|
||||
}
|
||||
|
||||
/// Remove a message from a conversation
|
||||
pub fn delete_message(msg: &ConversationMessage) -> ResultBoxError<()> {
|
||||
|
||||
@ -394,6 +402,15 @@ pub fn delete_member(user_id: UserID, conv_id: u64) -> ResultBoxError<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Check out whether a user is the owner of a message or not
|
||||
pub fn is_message_owner(user_id: UserID, message_id: u64) -> ResultBoxError<bool> {
|
||||
database::QueryInfo::new(CONV_MESSAGES_TABLE)
|
||||
.cond_u64("id", message_id)
|
||||
.cond_user_id("user_id", user_id)
|
||||
.exec_count()
|
||||
.map(|r| r > 0)
|
||||
}
|
||||
|
||||
/// Turn a database entry into a ConversationInfo object
|
||||
fn db_to_conversation_info(row: &database::RowResult) -> ResultBoxError<Conversation> {
|
||||
let conv_id = row.get_u64("id")?;
|
||||
|
@ -651,6 +651,12 @@ impl UpdateInfo {
|
||||
self
|
||||
}
|
||||
|
||||
/// Set a new string
|
||||
pub fn set_str(mut self, name: &str, val: &str) -> Self {
|
||||
self.set.insert(name.to_string(), Value::from(val));
|
||||
self
|
||||
}
|
||||
|
||||
/// Set an new optional string
|
||||
///
|
||||
/// None => Empty string
|
||||
|
Loading…
Reference in New Issue
Block a user