1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-07-11 18:12:49 +00:00
This commit is contained in:
2021-03-05 11:58:31 +01:00
parent fbf4728347
commit 0ae6ffb814
5 changed files with 50 additions and 73 deletions

@ -1,33 +1,34 @@
//! # List of unread conversations
use serde::{Serialize};
use crate::data::unread_conversation::UnreadConversation;
use serde::Serialize;
use crate::api_data::conversation_api::ConversationAPI;
use crate::api_data::conversation_message_api::ConversationMessageAPI;
use crate::data::conversation::ConvID;
use crate::data::error::Res;
use crate::helpers::conversations_helper;
#[derive(Serialize)]
#[allow(non_snake_case)]
pub struct UnreadConversationAPI {
id: u64,
conv_name: String,
last_active: u64,
userID: u64,
message: String
conv: ConversationAPI,
message: ConversationMessageAPI,
}
impl UnreadConversationAPI {
/// Construct a new instance
pub fn new(conv: &UnreadConversation) -> UnreadConversationAPI {
UnreadConversationAPI {
id: conv.id,
conv_name: conv.name.clone().unwrap_or(String::new()),
last_active: conv.last_active,
userID: conv.user_id.id(),
message: conv.message.clone()
}
pub fn new(conv: ConvID) -> Res<UnreadConversationAPI> {
Ok(UnreadConversationAPI {
conv: ConversationAPI::new(&conversations_helper::get_single(conv)?),
message: conversations_helper::get_last_messages(conv, 1)?
.first()
.map(ConversationMessageAPI::new)
.unwrap(),
})
}
/// Turn a list of unread conversation into API conversations
pub fn for_list(l: &Vec<UnreadConversation>) -> Vec<UnreadConversationAPI> {
pub fn for_list(l: &Vec<ConvID>) -> Res<Vec<UnreadConversationAPI>> {
l.iter()
.map(|row| Self::new(row))
.map(|row| Self::new(row.clone()))
.collect()
}
}