diff options
Diffstat (limited to '')
-rw-r--r-- | src/components/message_history_buffer.rs | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/src/components/message_history_buffer.rs b/src/components/message_history_buffer.rs index 632209d..5622f3e 100644 --- a/src/components/message_history_buffer.rs +++ b/src/components/message_history_buffer.rs @@ -12,10 +12,6 @@ use crate::{chat::MacawChat, client::Client, components::message::Message, messa #[component] pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { let (messages, set_messages) = arc_signal(IndexMap::new()); - let chat_chat: Store<Chat> = - <ArcStore<filamento::chat::Chat> as Clone>::clone(&chat.chat).into(); - let chat_user: Store<User> = - <ArcStore<filamento::user::User> as Clone>::clone(&chat.user).into(); let load_set_messages = set_messages.clone(); let load_messages = LocalResource::new(move || { @@ -23,7 +19,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { async move { let client = use_context::<Client>().expect("client not in context"); let messages = client - .get_messages_with_users(chat_chat.correspondent().get()) + .get_messages_with_users(chat.chat.get().unwrap().correspondent().get()) .await .map_err(|e| e.to_string()); match messages { @@ -57,23 +53,22 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { load_messages.await; let (sub_id, mut new_messages) = new_messages_signal .write() - .subscribe_chat(chat_chat.correspondent().get()); + .subscribe_chat(chat.chat.get().unwrap().correspondent().get()); set_sub_id.set(Some(sub_id)); while let Some(new_message) = new_messages.recv().await { debug!("got new message in let message buffer"); let mut messages = load_new_messages_set.write(); if let Some((_, last)) = messages.last() { - if *<ArcStore<filamento::chat::Message> as Clone>::clone(&last.message) + if *last.message.get().unwrap() .timestamp() .read() - < *<ArcStore<filamento::chat::Message> as Clone>::clone(&new_message.message) + < *new_message.message.get().unwrap() .timestamp() .read() { messages.insert( - <ArcStore<filamento::chat::Message> as Clone>::clone( - &new_message.message, - ) + + new_message.message.get().unwrap() .id() .get(), new_message, @@ -81,13 +76,11 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { debug!("set the new message in message buffer"); } else { let index = match messages.binary_search_by(|_, value| { - <ArcStore<filamento::chat::Message> as Clone>::clone(&value.message) + value.message.get().unwrap() .timestamp() .read() .cmp( - &<ArcStore<filamento::chat::Message> as Clone>::clone( - &new_message.message, - ) + &new_message.message.get().unwrap() .timestamp() .read(), ) @@ -98,9 +91,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { messages.insert_before( // TODO: check if this logic is correct index, - <ArcStore<filamento::chat::Message> as Clone>::clone( - &new_message.message, - ) + new_message.message.get().unwrap() .id() .get(), new_message, @@ -109,7 +100,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { } } else { messages.insert( - <ArcStore<filamento::chat::Message> as Clone>::clone(&new_message.message) + new_message.message.get().unwrap() .id() .get(), new_message, @@ -123,7 +114,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { if let Some(sub_id) = sub_id.get() { new_messages_signal .write() - .unsubscribe_chat(sub_id, chat_chat.correspondent().get_untracked()); + .unsubscribe_chat(sub_id, chat.chat.get().unwrap().correspondent().get_untracked()); } }); @@ -135,7 +126,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { .into_iter() .map(|(id, message)| { let message_timestamp = - <ArcStore<filamento::chat::Message> as Clone>::clone(&message.message) + message.message.get().unwrap() .timestamp() .read() .naive_local(); @@ -143,7 +134,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { // if message_timestamp.date() > last_timestamp.date() { // messages_view = messages_view.push(date(message_timestamp.date())); // } - let major = if last_user.as_ref() != Some(&message.message.read().from) + let major = if last_user.as_ref() != Some(&message.message.get().unwrap().read().from) || message_timestamp - last_timestamp > TimeDelta::minutes(3) { true @@ -151,7 +142,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { false }; last_user = Some( - <ArcStore<filamento::chat::Message> as Clone>::clone(&message.message) + message.message.get().unwrap() .from() .get(), ); |