diff options
Diffstat (limited to 'src/components/message_history_buffer.rs')
-rw-r--r-- | src/components/message_history_buffer.rs | 67 |
1 files changed, 24 insertions, 43 deletions
diff --git a/src/components/message_history_buffer.rs b/src/components/message_history_buffer.rs index dc93054..cf4c328 100644 --- a/src/components/message_history_buffer.rs +++ b/src/components/message_history_buffer.rs @@ -1,5 +1,8 @@ use chrono::{NaiveDateTime, TimeDelta}; -use filamento::{chat::{Chat, ChatStoreFields, MessageStoreFields}, user::User}; +use filamento::{ + chat::{Chat, ChatStoreFields, MessageStoreFields}, + user::User, +}; use indexmap::IndexMap; use jid::BareJID; use leptos::prelude::*; @@ -7,7 +10,13 @@ use reactive_stores::{ArcStore, Store}; use tracing::{debug, error}; use uuid::Uuid; -use crate::{chat::MacawChat, client::Client, components::message::Message, message::{ArcMacawMessage, MacawMessage}, message_subscriptions::MessageSubscriptions}; +use crate::{ + chat::MacawChat, + client::Client, + components::message::Message, + message::{ArcMacawMessage, MacawMessage}, + message_subscriptions::MessageSubscriptions, +}; #[component] pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { @@ -26,7 +35,10 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { Ok(m) => { let mut messages = IndexMap::new(); for (message, message_user) in m { - messages.insert(message.id, ArcMacawMessage::got_message_and_user(message, message_user).await); + messages.insert( + message.id, + ArcMacawMessage::got_message_and_user(message, message_user).await, + ); } load_set_messages.set(messages); } @@ -54,30 +66,16 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { debug!("got new message in let message buffer"); let mut messages = load_new_messages_set.write(); if let Some((_, last)) = messages.last() { - if *last.get() - .timestamp() - .read() - < *new_message.get() - .timestamp() - .read() - { - messages.insert( - new_message.get() - .id() - .get(), - new_message, - ); + if *last.get().timestamp().read() < *new_message.get().timestamp().read() { + messages.insert(new_message.get().id().get(), new_message); debug!("set the new message in message buffer"); } else { let index = match messages.binary_search_by(|_, value| { - value.get() + value + .get() .timestamp() .read() - .cmp( - &new_message.get() - .timestamp() - .read(), - ) + .cmp(&new_message.get().timestamp().read()) }) { Ok(i) => i, Err(i) => i, @@ -85,21 +83,13 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { messages.insert_before( // TODO: check if this logic is correct index, - - new_message.get() - .id() - .get(), + new_message.get().id().get(), new_message, ); debug!("set the new message in message buffer"); } } else { - messages.insert( - new_message.get() - .id() - .get(), - new_message, - ); + messages.insert(new_message.get().id().get(), new_message); debug!("set the new message in message buffer"); } } @@ -120,11 +110,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { .get() .into_iter() .map(|(id, message)| { - let message_timestamp = - message.message.get() - .timestamp() - .read() - .naive_local(); + let message_timestamp = message.message.get().timestamp().read().naive_local(); // TODO: mark new day // if message_timestamp.date() > last_timestamp.date() { // messages_view = messages_view.push(date(message_timestamp.date())); @@ -136,11 +122,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { } else { false }; - last_user = Some( - message.get() - .from() - .get(), - ); + last_user = Some(message.get().from().get()); last_timestamp = message_timestamp; (id, (message, major, false)) }) @@ -159,4 +141,3 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { </div> } } - |