summaryrefslogtreecommitdiffstats
path: root/src/components/chats_list/chats_list_item.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/chats_list/chats_list_item.rs')
-rw-r--r--src/components/chats_list/chats_list_item.rs48
1 files changed, 35 insertions, 13 deletions
diff --git a/src/components/chats_list/chats_list_item.rs b/src/components/chats_list/chats_list_item.rs
index ae01288..e61bf45 100644
--- a/src/components/chats_list/chats_list_item.rs
+++ b/src/components/chats_list/chats_list_item.rs
@@ -1,12 +1,21 @@
use std::ops::Deref;
use chrono::Local;
-use filamento::{chat::{Chat, ChatStoreFields, Message, MessageStoreFields}, user::User};
+use filamento::{
+ chat::{Chat, ChatStoreFields, Message, MessageStoreFields},
+ user::User,
+};
use leptos::prelude::*;
use reactive_stores::{ArcStore, Store};
use tracing::debug;
-use crate::{chat::MacawChat, components::{avatar::AvatarWithPresence, sidebar::Open}, message::MacawMessage, open_chats::{OpenChatsPanel, OpenChatsPanelStoreFields}, user::get_name};
+use crate::{
+ chat::MacawChat,
+ components::{avatar::AvatarWithPresence, sidebar::Open},
+ message::MacawMessage,
+ open_chats::{OpenChatsPanel, OpenChatsPanelStoreFields},
+ user::get_name,
+};
#[component]
pub fn ChatsListItem(chat: MacawChat, message: MacawMessage) -> impl IntoView {
@@ -44,23 +53,36 @@ pub fn ChatsListItem(chat: MacawChat, message: MacawMessage) -> impl IntoView {
let date = move || message.get().timestamp().read().naive_local();
let now = move || Local::now().naive_local();
- let timeinfo = move || if date().date() == now().date() {
- // TODO: localisation/config
- date().time().format("%H:%M").to_string()
- } else {
- date().date().format("%d/%m").to_string()
+ let timeinfo = move || {
+ if date().date() == now().date() {
+ // TODO: localisation/config
+ date().time().format("%H:%M").to_string()
+ } else {
+ date().date().format("%d/%m").to_string()
+ }
};
view! {
- <div class="chats-list-item" class:open=move || open() class:focused=move || focused() on:click=open_chat>
+ <div
+ class="chats-list-item"
+ class:open=move || open()
+ class:focused=move || focused()
+ on:click=open_chat
+ >
{move || {
- view! {
- <AvatarWithPresence user=chat.user />
- }
+ view! { <AvatarWithPresence user=chat.user /> }
}}
<div class="item-info">
- <div class="main-info"><p class="name">{name}</p><p class="timestamp">{timeinfo}</p></div>
- <div class="sub-info"><p class="message-preview">{latest_message_body}</p><p><!-- "TODO: delivery or unread state" --></p></div>
+ <div class="main-info">
+ <p class="name">{name}</p>
+ <p class="timestamp">{timeinfo}</p>
+ </div>
+ <div class="sub-info">
+ <p class="message-preview">{latest_message_body}</p>
+ <p>
+ <!-- "TODO: delivery or unread state" -->
+ </p>
+ </div>
</div>
</div>
}