Display user profile picture when logged in instead of generic profile icon

This commit is contained in:
Connor Wittman 2024-10-18 19:30:45 -04:00
parent 2be665c549
commit c2ebd8307f

View File

@ -3,7 +3,6 @@ use leptos::*;
use leptos_icons::*; use leptos_icons::*;
use crate::auth::get_user; use crate::auth::get_user;
use crate::auth::logout; use crate::auth::logout;
use crate::models::User;
#[component] #[component]
pub fn Personal() -> impl IntoView { pub fn Personal() -> impl IntoView {
@ -24,10 +23,26 @@ pub fn Profile() -> impl IntoView {
set_dropdown_open.update(|value| *value = !*value); set_dropdown_open.update(|value| *value = !*value);
}; };
let user_profile_picture = move || {
user.get().map(|user| {
if let Ok(user) = user {
return format!("/assets/images/profile/{}.webp", user.id.unwrap());
} else {
return "".to_string();
}
})
};
view! { view! {
<div class="profile-container"> <div class="profile-container">
<div class="profile-icon" on:click=open_dropdown> <div class="profile-icon" on:click=open_dropdown>
<Show
when=move || logged_in.get().unwrap_or_default()
fallback=|| view!{
<Icon icon=icondata::CgProfile /> <Icon icon=icondata::CgProfile />
}>
<img src=user_profile_picture />
</Show>
</div> </div>
<div class="dropdown-container" style={move || if dropdown_open() {"display: flex"} else {"display: none"}}> <div class="dropdown-container" style={move || if dropdown_open() {"display: flex"} else {"display: none"}}>
<Show <Show