diff options
author | 2025-05-24 17:30:07 +0100 | |
---|---|---|
committer | 2025-05-24 17:30:07 +0100 | |
commit | 39e6a0da29bd7129c572d56590bdb7acd6a580b9 (patch) | |
tree | dcb62c9484300a8eb37190e0bfed00148bf332bf /src | |
parent | ce05e5de6461d95703e6c8c971638bcee484c5fe (diff) | |
download | macaw-web-39e6a0da29bd7129c572d56590bdb7acd6a580b9.tar.gz macaw-web-39e6a0da29bd7129c572d56590bdb7acd6a580b9.tar.bz2 macaw-web-39e6a0da29bd7129c572d56590bdb7acd6a580b9.zip |
feat: show chat for messaging oneself as "Note to self"
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -1015,7 +1015,7 @@ pub fn PersonalStatusMenu(user: Store<User>, set_open: WriteSignal<bool>) -> imp <div class="user"> <AvatarWithPresence user=user /> <div class="user-info"> - <div class="nick">{move || get_name(user)}</div> + <div class="nick">{move || get_name(user, false)}</div> <div class="jid">{move || user.jid().with(|jid| jid.to_string())}</div> </div> </div> @@ -1237,7 +1237,7 @@ pub fn AvatarWithPresence(user: Store<User>) -> impl IntoView { #[component] pub fn ChatViewHeader(chat: MacawChat) -> impl IntoView { let chat_user = <ArcStore<filamento::user::User> as Clone>::clone(&chat.user).into(); - let name = move || get_name(chat_user); + let name = move || get_name(chat_user, true); let jid = move || chat_user.jid().read().to_string(); view! { @@ -1574,7 +1574,7 @@ pub fn Message(message: MacawMessage, major: bool, r#final: bool) -> impl IntoVi <ArcStore<filamento::chat::Message> as Clone>::clone(&message.message).into(); let message_user = <ArcStore<filamento::user::User> as Clone>::clone(&message.user).into(); let avatar = LocalResource::new(move || get_avatar(message_user)); - let name = move || get_name(message_user); + let name = move || get_name(message_user, false); // TODO: chrono-humanize? // TODO: if final, show delivery not only on hover. @@ -2505,7 +2505,7 @@ fn RosterListItem(contact: MacawContact) -> impl IntoView { let contact_contact: Store<Contact> = contact.contact; let contact_user: Store<User> = <ArcStore<filamento::user::User> as Clone>::clone(&contact.user).into(); - let name = move || get_name(contact_user); + let name = move || get_name(contact_user, false); let open_chats: Store<OpenChatsPanel> = use_context().expect("no open chats panel store in context"); @@ -2568,8 +2568,14 @@ pub async fn get_avatar(user: Store<User>) -> String { } } -pub fn get_name(user: Store<User>) -> String { +pub fn get_name(user: Store<User>, note_to_self: bool) -> String { let roster: Store<Roster> = use_context().expect("no roster in context"); + if note_to_self { + let client: Client = use_context().expect("no client in context"); + if *client.jid == *user.jid().read() { + return "Note to self".to_string() + } + } if let Some(name) = roster .contacts() .read() @@ -2618,7 +2624,7 @@ fn ChatsListItem(chat: MacawChat, message: MacawMessage) -> impl IntoView { let chat_user: Store<User> = <ArcStore<filamento::user::User> as Clone>::clone(&chat.user).into(); let message_message: Store<Message> = <ArcStore<Message> as Clone>::clone(&message.message).into(); - let name = move || get_name(chat_user); + let name = move || get_name(chat_user, true); // TODO: store fine-grained reactivity let latest_message_body = move || message_message.body().get().body; |