use filamento::chat::MessageStoreFields; use leptos::prelude::*; use reactive_stores::{ArcStore, Store}; use crate::{message::MacawMessage, user::{get_avatar, get_name, NO_AVATAR}}; use super::icon::Delivery; #[component] pub fn Message(message: MacawMessage, major: bool, r#final: bool) -> impl IntoView { let avatar = LocalResource::new(move || get_avatar(message.user.get().into())); let name = move || get_name(message.user.get().into(), false); // TODO: chrono-humanize? // TODO: if final, show delivery not only on hover. // {move || message_message.delivery().read().map(|delivery| delivery.to_string()).unwrap_or_default()} if major { view! {
} >
{name}
{move || message.get().timestamp().read().format("%H:%M").to_string()}
{move || message.get().body().read().body.clone()}
{move || message.get().delivery().get().map(|delivery| view! { } ) }
}.into_any() } else { view! {
{move || message.get().timestamp().read().format("%H:%M").to_string()}
{move || message.get().body().read().body.clone()}
{move || message.get().delivery().get().map(|delivery| view! { } ) }
}.into_any() } }