1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-07-15 19:58:05 +00:00

Can open new conversations

This commit is contained in:
2020-06-18 14:15:17 +02:00
parent 479caa3945
commit e7de23e995
8 changed files with 156 additions and 4 deletions

@ -0,0 +1,42 @@
//! # Conversation message API
//!
//! API representation of a conversation message
//!
//! @author Pierre HUBERT
use serde::Serialize;
use crate::data::conversation_message::ConversationMessage;
use crate::utils::user_data_utils::user_data_url;
#[derive(Serialize)]
#[allow(non_snake_case)]
pub struct ConversationMessageAPI {
ID: u64,
convID: u64,
ID_user: u64,
time_insert: u64,
message: String,
image_path: Option<String>,
}
impl ConversationMessageAPI {
/// Turn a conversation message into an API entry
pub fn new(msg: &ConversationMessage) -> ConversationMessageAPI {
ConversationMessageAPI {
ID: msg.id,
convID: msg.conv_id,
ID_user: msg.user_id as u64,
time_insert: msg.time_sent,
message: msg.message.clone().unwrap_or(String::new()),
image_path: msg.image_path.as_ref().map(|f| user_data_url(f)),
}
}
/// Turn a list of conversation messages into API entries
pub fn for_list(l: &Vec<ConversationMessage>) -> Vec<ConversationMessageAPI> {
l.iter()
.map(|m| ConversationMessageAPI::new(m))
.collect()
}
}

@ -0,0 +1,37 @@
//! # Conversation refresh result
//!
//! Note : this structure is now deprecated and should no longer be used for further developments
//!
//! @author Pierre Hubert
use std::collections::HashMap;
use serde::Serialize;
use crate::api_data::conversation_message_api::ConversationMessageAPI;
use crate::data::conversation_message::ConversationMessage;
#[derive(Serialize)]
#[allow(non_snake_case)]
pub struct ConversationRefreshResultAPI {
#[serde(flatten)]
list: HashMap<String, Vec<ConversationMessageAPI>>,
}
impl ConversationRefreshResultAPI {
/// Create a new list
pub fn new(list: HashMap<u64, Vec<ConversationMessage>>) -> ConversationRefreshResultAPI {
let list = list
.iter()
.map(|v| (
format!("conversation-{}", v.0),
ConversationMessageAPI::for_list(v.1)
))
.collect();
ConversationRefreshResultAPI {
list
}
}
}

@ -17,4 +17,6 @@ pub mod res_find_virtual_directory;
pub mod res_create_conversation;
pub mod conversation_api;
mod legacy_api_bool;
pub mod res_find_private_conversations;
pub mod res_find_private_conversations;
pub mod conversation_message_api;
pub mod conversations_refresh_api;