chat_ui_components/components/
message_item.rs

1use dioxus::prelude::*;
2use chat_core::history::types::ChatMessage;
3
4#[component]
5pub fn MessageItem(msg: ChatMessage, is_local: bool) -> Element {
6    let time = {
7        let secs = (msg.timestamp / 1000.0) as i64;
8        let mins = (secs / 60) % 60;
9        let hours = (secs / 3600) % 24;
10        format!("{:02}:{:02}:{:02}", hours, mins, secs % 60)
11    };
12
13    let sender = if is_local { "You" } else { &msg.nickname };
14    let msg_class = if is_local { "chat-message local" } else { "chat-message" };
15
16    rsx! {
17        div {
18            class: msg_class,
19            span {
20                class: "msg-time",
21                "[{time}] "
22            }
23            span {
24                class: "msg-sender",
25                "{sender}: "
26            }
27            span {
28                class: "msg-content",
29                "{msg.content}"
30            }
31        }
32    }
33}