From 15faa6b95ffb5c64a56e212cf386c29fef56efc8 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Fri, 11 Apr 2025 07:52:11 +0100 Subject: feat(filamento): `get_chats_ordered_with_latest_messages_and_users()` --- filamento/src/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'filamento/src/lib.rs') diff --git a/filamento/src/lib.rs b/filamento/src/lib.rs index 97cc9cd..14b0cae 100644 --- a/filamento/src/lib.rs +++ b/filamento/src/lib.rs @@ -61,6 +61,10 @@ pub enum Command { GetChatsOrdered(oneshot::Sender, DatabaseError>>), // TODO: paging and filtering GetChatsOrderedWithLatestMessages(oneshot::Sender, DatabaseError>>), + // TODO: paging and filtering, nullabillity for latest message + GetChatsOrderedWithLatestMessagesAndUsers( + oneshot::Sender, DatabaseError>>, + ), /// get a specific chat by jid GetChat(JID, oneshot::Sender>), /// get message history for chat (does appropriate mam things) @@ -339,6 +343,22 @@ impl Client { Ok(chats) } + pub async fn get_chats_ordered_with_latest_messages_and_users( + &self, + ) -> Result, CommandError> { + let (send, recv) = oneshot::channel(); + self.send(CoreClientCommand::Command( + Command::GetChatsOrderedWithLatestMessagesAndUsers(send), + )) + .await + .map_err(|e| CommandError::Actor(Into::::into(e)))?; + let chats = timeout(self.timeout, recv) + .await + .map_err(|e| CommandError::Actor(Into::::into(e)))? + .map_err(|e| CommandError::Actor(Into::::into(e)))??; + Ok(chats) + } + pub async fn get_chat(&self, jid: JID) -> Result> { let (send, recv) = oneshot::channel(); self.send(CoreClientCommand::Command(Command::GetChat(jid, send))) -- cgit