summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib.rs b/src/lib.rs
index c994a57..4c481aa 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -26,8 +26,6 @@ use leptos::{
tachys::{dom::document, reactive_graph::bind::GetValue},
task::{spawn, spawn_local},
};
-use leptos_meta::Stylesheet;
-use leptos_use::{UseTextareaAutosizeReturn, use_textarea_autosize};
use reactive_stores::{ArcStore, Store, StoreField};
use stylance::import_style;
use thiserror::Error;
@@ -484,7 +482,7 @@ impl OpenChatsPanel {
#[derive(Store)]
pub struct UserPresences {
#[store(key: JID = |(jid, _)| jid.clone())]
- user_presences: HashMap<JID, RwSignal<Presences>>,
+ user_presences: HashMap<JID, ArcRwSignal<Presences>>,
}
impl UserPresences {
@@ -495,13 +493,13 @@ impl UserPresences {
}
// TODO: should be a bare jid
- pub fn get_user_presences(&mut self, user: &JID) -> RwSignal<Presences> {
+ pub fn get_user_presences(&mut self, user: &JID) -> ArcRwSignal<Presences> {
if let Some(presences) = self.user_presences.get(user) {
- *presences
+ presences.clone()
} else {
let presences = Presences::new();
- let signal = RwSignal::new(presences);
- self.user_presences.insert(user.clone(), signal);
+ let signal = ArcRwSignal::new(presences);
+ self.user_presences.insert(user.clone(), signal.clone());
signal
}
}
@@ -671,7 +669,7 @@ fn Macaw(
if let Some(resource) = from.resourcepart {
let mut presences = Presences::new();
presences.update_presence(resource, presence);
- user_presences.write().user_presences.insert(bare_jid, RwSignal::new(presences));
+ user_presences.write().user_presences.insert(bare_jid, ArcRwSignal::new(presences));
}
}
}
@@ -859,7 +857,7 @@ pub fn AvatarWithPresence(user: RwSignal<User>) -> impl IntoView {
view! {
<Transition fallback=|| view! { <img class="avatar" src=NO_AVATAR /> } >
<div class="avatar-with-presence">
- <img class="avatar" src=move || avatar.read().as_deref().map(|avatar| avatar.clone()).unwrap_or_default() />
+ <img class="avatar" src=move || avatar.get() />
{move || if let Some(icon) = show_icon() {
view!{
<IconComponent icon=icon class:presence-show-icon=true />
@@ -1191,7 +1189,7 @@ pub fn Message(message: MacawMessage, major: bool, r#final: bool) -> impl IntoVi
<div class:final=r#final class="chat-message major">
<div class="left">
<Transition fallback=|| view! { <img class="avatar" src=NO_AVATAR /> } >
- <img class="avatar" src=move || avatar.read().as_deref().map(|avatar| avatar.clone()).unwrap_or_default() />
+ <img class="avatar" src=move || avatar.get() />
</Transition>
</div>
<div class="middle">