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
|
|
|
}
|