From 36e87b708ed3a2b0d6f2e932509b0fdf10fe0089 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Sat, 7 Jun 2025 17:36:22 +0100 Subject: fix: avatar flashing from avatar load --- src/components/avatar.rs | 9 ++-- src/components/chat_header.rs | 3 +- src/components/chats_list.rs | 22 ++++----- src/components/chats_list/chats_list_item.rs | 3 +- src/components/message.rs | 3 +- src/components/message_history_buffer.rs | 13 ++---- src/components/new_chat.rs | 15 +++++-- src/components/personal_status.rs | 12 ++--- src/components/roster_list.rs | 7 ++- src/components/roster_list/roster_list_item.rs | 62 +++++++++++++++++++------- 10 files changed, 90 insertions(+), 59 deletions(-) (limited to 'src/components') diff --git a/src/components/avatar.rs b/src/components/avatar.rs index 9265ef7..292173e 100644 --- a/src/components/avatar.rs +++ b/src/components/avatar.rs @@ -2,13 +2,12 @@ use filamento::{presence::PresenceType, user::User}; use leptos::prelude::*; use reactive_stores::Store; -use crate::{components::icon::{show_to_icon, IconComponent}, icon::Icon, user::get_avatar, user_presences::UserPresences}; +use crate::{components::icon::{show_to_icon, IconComponent}, icon::Icon, user::{get_avatar, MacawUser}, user_presences::UserPresences}; #[component] -pub fn AvatarWithPresence(user: Store) -> impl IntoView { - let avatar = LocalResource::new(move || get_avatar(user)); +pub fn AvatarWithPresence(user: MacawUser) -> impl IntoView { let user_presences: Store = use_context().expect("no user presences in context"); - let presence = move || user_presences.write().get_user_presences(&user.read().jid).read().presence(); + let presence = move || user_presences.write().get_user_presences(&user.get().read().jid).read().presence(); let show_icon = move || presence().map(|(_, presence)| { match presence.presence { PresenceType::Online(online) => if let Some(show) = online.show { @@ -22,7 +21,7 @@ pub fn AvatarWithPresence(user: Store) -> impl IntoView { view! {
- + {move || if let Some(icon) = show_icon() { view!{ diff --git a/src/components/chat_header.rs b/src/components/chat_header.rs index 51906aa..fe4e8d9 100644 --- a/src/components/chat_header.rs +++ b/src/components/chat_header.rs @@ -12,9 +12,8 @@ pub fn ChatViewHeader(chat: MacawChat) -> impl IntoView { view! {
{move || { - let user = chat.user.get().into(); view! { - + } }}