1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-03-13 01:12:37 +00:00
comunicapiv3/src/api_data/list_unread_conversations_api.rs

33 lines
1.0 KiB
Rust

//! # List of unread conversations
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)]
pub struct UnreadConversationAPI {
conv: ConversationAPI,
message: ConversationMessageAPI,
}
impl UnreadConversationAPI {
/// Construct a new instance
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<ConvID>) -> Res<Vec<UnreadConversationAPI>> {
l.iter().map(|row| Self::new(row.clone())).collect()
}
}