diff options
| author | 2025-05-10 05:12:31 +0100 | |
|---|---|---|
| committer | 2025-05-10 05:12:31 +0100 | |
| commit | cf6e64da8dfb78dd103727066fa494d79912fe2a (patch) | |
| tree | a789e7b12a69a1f360145232a6300e4659b5d117 /src | |
| parent | cf2ffc5ecb2eefbb425a4d05583d3e4d9645bf2b (diff) | |
| download | macaw-web-cf6e64da8dfb78dd103727066fa494d79912fe2a.tar.gz macaw-web-cf6e64da8dfb78dd103727066fa494d79912fe2a.tar.bz2 macaw-web-cf6e64da8dfb78dd103727066fa494d79912fe2a.zip  | |
chore: update leptos to 0.8.2
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 66 | 
1 files changed, 31 insertions, 35 deletions
@@ -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; @@ -485,7 +483,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 { @@ -496,13 +494,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          }      } @@ -670,7 +668,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));                          }                      }                  } @@ -680,7 +678,7 @@ fn Macaw(                      debug!("after got message");                      spawn_local(async move {                          message_subscriptions -                            .write_untracked() +                            .write()                              .broadcast(to, new_message)                              .await                      }); @@ -857,18 +855,16 @@ pub fn AvatarWithPresence(user: Store<User>) -> impl IntoView {      }).unwrap_or_default();      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() /> -            {move || if let Some(icon) = show_icon() { -                view!{ -                    <IconComponent icon=icon class:presence-show-icon=true /> -                }.into_any() -            } else { -                view! {}.into_any() -            }} -            </div> -        </Transition> +        <div class="avatar-with-presence"> +        <img class="avatar" src=move || avatar.get() /> +        {move || if let Some(icon) = show_icon() { +            view!{ +                <IconComponent icon=icon class:presence-show-icon=true /> +            }.into_any() +        } else { +            view! {}.into_any() +        }} +        </div>      }  } @@ -903,7 +899,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {          async move {              let client = use_context::<Client>().expect("client not in context");              let messages = client -                .get_messages_with_users(chat_chat.correspondent().get_untracked()) +                .get_messages_with_users(chat_chat.correspondent().get())                  .await                  .map_err(|e| e.to_string());              match messages { @@ -937,7 +933,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {              load_messages.await;              let (sub_id, mut new_messages) = new_messages_signal                  .write() -                .subscribe_chat(chat_chat.correspondent().get_untracked()); +                .subscribe_chat(chat_chat.correspondent().get());              set_sub_id.set(Some(sub_id));              while let Some(new_message) = new_messages.recv().await {                  debug!("got new message in let message buffer"); @@ -945,17 +941,17 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {                  if let Some((_, last)) = messages.last() {                      if *<ArcStore<filamento::chat::Message> as Clone>::clone(&last.message)                          .timestamp() -                        .read_untracked() +                        .read()                          < *<ArcStore<filamento::chat::Message> as Clone>::clone(&new_message)                              .timestamp() -                            .read_untracked() +                            .read()                      {                          messages.insert(                              <ArcStore<filamento::chat::Message> as Clone>::clone(                                  &new_message.message,                              )                              .id() -                            .get_untracked(), +                            .get(),                              new_message,                          );                          debug!("set the new message in message buffer"); @@ -963,13 +959,13 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {                          let index = match messages.binary_search_by(|_, value| {                              <ArcStore<filamento::chat::Message> as Clone>::clone(&value.message)                                  .timestamp() -                                .read_untracked() +                                .read()                                  .cmp(                                      &<ArcStore<filamento::chat::Message> as Clone>::clone(                                          &new_message.message,                                      )                                      .timestamp() -                                    .read_untracked(), +                                    .read(),                                  )                          }) {                              Ok(i) => i, @@ -982,7 +978,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {                                  &new_message.message,                              )                              .id() -                            .get_untracked(), +                            .get(),                              new_message,                          );                          debug!("set the new message in message buffer"); @@ -991,7 +987,7 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView {                      messages.insert(                          <ArcStore<filamento::chat::Message> as Clone>::clone(&new_message.message)                              .id() -                            .get_untracked(), +                            .get(),                          new_message,                      );                      debug!("set the new message in message buffer"); @@ -1191,7 +1187,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"> @@ -1233,11 +1229,11 @@ pub fn ChatViewMessageComposer(chat: JID) -> impl IntoView {          let value = chat.clone();          spawn_local(async move {              match client -                .read_untracked() +                .read()                  .send_message(                      value,                      Body { -                        body: new_message.get_untracked(), +                        body: new_message.get(),                      },                  )                  .await @@ -1245,7 +1241,7 @@ pub fn ChatViewMessageComposer(chat: JID) -> impl IntoView {                  Ok(_) => {                      new_message.set("".to_string());                      message_input -                        .write_untracked() +                        .write()                          .as_ref()                          .expect("message input div not mounted")                          .set_text_content(Some("")); @@ -1288,7 +1284,7 @@ pub fn ChatViewMessageComposer(chat: JID) -> impl IntoView {                  on:keydown=move |ev| {                      match ev.key_code() {                          16 => set_shift_pressed.set(true), -                        13 => if !shift_pressed.get_untracked() { +                        13 => if !shift_pressed.get() {                              ev.prevent_default();                              send_message();                          }  | 
