summaryrefslogtreecommitdiffstats
path: root/src/components/message_history_buffer.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/components/message_history_buffer.rs37
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(),
);