diff --git a/src/components/personal.rs b/src/components/personal.rs index e9fb5ea..c790b87 100644 --- a/src/components/personal.rs +++ b/src/components/personal.rs @@ -1,8 +1,8 @@ use leptos::leptos_dom::*; use leptos::*; use leptos_icons::*; -use crate::auth::get_user; use crate::auth::logout; +use crate::util::state::GlobalState; #[component] pub fn Personal() -> impl IntoView { @@ -16,54 +16,66 @@ pub fn Personal() -> impl IntoView { #[component] pub fn Profile() -> impl IntoView { let (dropdown_open, set_dropdown_open) = create_signal(false); - let (image_error, set_image_error) = create_signal(false); - let user = create_local_resource(move || dropdown_open.get(), |_| async move { get_user().await }); - - let open_dropdown = move |_| { + let user = GlobalState::logged_in_user(); + + let open_dropdown = move |_| { set_dropdown_open.update(|value| *value = !*value); }; let user_profile_picture = move || { user.get().and_then(|user| { - user.ok().map(|user| format!("/assets/images/profile/{}.webp", user.id.unwrap())) + if let Some(user) = user { + if user.id.is_none() { + return None; + } + Some(format!("/assets/images/profile/{}.webp", user.id.unwrap())) + } else { + None + } }) }; view! {
- Not Logged In }> -

{move || user.get().map(|user| user.map(|user| user.username).unwrap_or_default())}

-
+ Not Logged In + }> +

{move || user.get().map(|user| user.map(|user| user.username))}

+
+
- } - > - } - > - - - + }> + } + > + + + + +
} @@ -87,6 +99,8 @@ pub fn DropDownLoggedIn() -> impl IntoView { if let Err(err) = result { log!("Error logging out: {:?}", err); } else { + let user = GlobalState::logged_in_user(); + user.refetch(); log!("Logged out successfully"); } }); diff --git a/style/personal.scss b/style/personal.scss index e655db9..5a84aac 100644 --- a/style/personal.scss +++ b/style/personal.scss @@ -34,7 +34,7 @@ height: 45; width: 45; margin-left: auto; - img { + .profile-image { width: 100%; height: 100%; border-radius: 50%;