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
Raw Normal View History

2020-06-22 18:55:24 +02:00
//! # List of unread conversations
2021-03-05 11:58:31 +01:00
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;
2020-06-22 18:55:24 +02:00
#[derive(Serialize)]
pub struct UnreadConversationAPI {
2021-03-05 11:58:31 +01:00
conv: ConversationAPI,
message: ConversationMessageAPI,
2020-06-22 18:55:24 +02:00
}
impl UnreadConversationAPI {
/// Construct a new instance
2021-03-05 11:58:31 +01:00
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(),
})
2020-06-22 18:55:24 +02:00
}
/// Turn a list of unread conversation into API conversations
2021-03-05 11:58:31 +01:00
pub fn for_list(l: &Vec<ConvID>) -> Res<Vec<UnreadConversationAPI>> {
2023-05-31 19:10:05 +02:00
l.iter().map(|row| Self::new(row.clone())).collect()
2020-06-22 18:55:24 +02:00
}
2023-05-31 19:10:05 +02:00
}