From 838e99fd1577c52121e148efabcd624114a8b9ad Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Wed, 11 Jun 2025 02:54:27 +0100 Subject: fmt: everything --- src/components/personal_status.rs | 216 +++++++++++++++++++++++++------------- 1 file changed, 142 insertions(+), 74 deletions(-) (limited to 'src/components/personal_status.rs') diff --git a/src/components/personal_status.rs b/src/components/personal_status.rs index eb7f6e1..59ffa47 100644 --- a/src/components/personal_status.rs +++ b/src/components/personal_status.rs @@ -1,39 +1,57 @@ -use filamento::{presence::{Offline, Online, PresenceType, Show}, user::{User, UserStoreFields}}; +use filamento::{ + presence::{Offline, Online, PresenceType, Show}, + user::{User, UserStoreFields}, +}; use leptos::{html, prelude::*}; use reactive_stores::{ArcStore, Store}; use tracing::{debug, error}; -use crate::{client::Client, components::{avatar::AvatarWithPresence, overlay::Overlay}, user::{get_name, MacawUser}, user_presences::UserPresences, views::{macaw::settings::SettingsPage, AppState}}; +use crate::{ + client::Client, + components::{avatar::AvatarWithPresence, overlay::Overlay}, + user::{MacawUser, get_name}, + user_presences::UserPresences, + views::{AppState, macaw::settings::SettingsPage}, +}; #[component] pub fn PersonalStatus() -> impl IntoView { let user: LocalResource = use_context().expect("no local user in context"); let (open, set_open) = signal(false); - move || if let Some(user) = user.get() { - view! { -
- -
-
- {move || { - let open = open.get(); - debug!("open = {:?}", open); - if open { - view! { - - - - }.into_any() - } else { - view! {}.into_any() - }}} - }.into_any() - } else { - view! {}.into_any() + move || { + if let Some(user) = user.get() { + view! { +
+ +
+
+ {move || { + let open = open.get(); + debug!("open = {:?}", open); + if open { + view! { + + + + } + .into_any() + } else { + view! {}.into_any() + } + }} + } + .into_any() + } else { + view! {}.into_any() + } } } @@ -42,24 +60,30 @@ pub fn PersonalStatusMenu(user: MacawUser, set_open: WriteSignal) -> impl let set_app: WriteSignal = use_context().unwrap(); let show_settings: RwSignal> = use_context().unwrap(); let user_presences: Store = use_context().expect("no user presence store"); - + let client = use_context::().expect("client not in context"); let client1 = client.clone(); let (show_value, set_show_value) = signal({ - let show = match user_presences.write().get_user_presences(&user.get().jid().read()).write().resource_presence(client.resource.read().clone().unwrap_or_default()).presence { - PresenceType::Online(online) => match online.show { - Some(s) => match s { - Show::Away => 3, - Show::Chat => 0, - Show::DoNotDisturb => 2, - Show::ExtendedAway => 4, + let show = match user_presences + .write() + .get_user_presences(&user.get().jid().read()) + .write() + .resource_presence(client.resource.read().clone().unwrap_or_default()) + .presence + { + PresenceType::Online(online) => match online.show { + Some(s) => match s { + Show::Away => 3, + Show::Chat => 0, + Show::DoNotDisturb => 2, + Show::ExtendedAway => 4, + }, + None => 1, }, - None => 1, - }, - PresenceType::Offline(_offline) => 5, - }; - debug!("initial show = {show}"); - show + PresenceType::Offline(_offline) => 5, + }; + debug!("initial show = {show}"); + show }); let show_select: NodeRef = NodeRef::new(); @@ -71,7 +95,7 @@ pub fn PersonalStatusMenu(user: MacawUser, set_open: WriteSignal) -> impl } }); let set_status = Action::new_local(move |show_value: &i32| { - let show_value = show_value.to_owned(); + let show_value = show_value.to_owned(); let client = client1.clone(); async move { if let Err(e) = match show_value { @@ -79,46 +103,71 @@ pub fn PersonalStatusMenu(user: MacawUser, set_open: WriteSignal) -> impl if let Ok(r) = client.connect().await { client.resource.set(Some(r)) }; - client.set_status(Online { show: Some(Show::Chat), ..Default::default() }).await - }, + client + .set_status(Online { + show: Some(Show::Chat), + ..Default::default() + }) + .await + } 1 => { if let Ok(r) = client.connect().await { client.resource.set(Some(r)) }; - client.set_status(Online { show: None, ..Default::default() }).await - }, + client + .set_status(Online { + show: None, + ..Default::default() + }) + .await + } 2 => { if let Ok(r) = client.connect().await { client.resource.set(Some(r)) }; - client.set_status(Online { show: Some(Show::DoNotDisturb), ..Default::default() }).await - }, + client + .set_status(Online { + show: Some(Show::DoNotDisturb), + ..Default::default() + }) + .await + } 3 => { if let Ok(r) = client.connect().await { client.resource.set(Some(r)) }; - client.set_status(Online { show: Some(Show::Away), ..Default::default() }).await - }, + client + .set_status(Online { + show: Some(Show::Away), + ..Default::default() + }) + .await + } 4 => { if let Ok(r) = client.connect().await { client.resource.set(Some(r)) }; - client.set_status(Online { show: Some(Show::ExtendedAway), ..Default::default() }).await - }, + client + .set_status(Online { + show: Some(Show::ExtendedAway), + ..Default::default() + }) + .await + } 5 => { if let Ok(_) = client.disconnect(Offline::default()).await { client.resource.set(None) } set_show_value.set(5); - return + return; } _ => { error!("invalid availability select"); - return + return; } } { error!("show set error: {e}"); - return + return; } set_show_value.set(show_value); } @@ -142,36 +191,55 @@ pub fn PersonalStatusMenu(user: MacawUser, set_open: WriteSignal) -> impl } prop:show_value=move || show_value.get().to_string() > - - - - - - + + + + + +
-