add user session check to profile icon
This commit is contained in:
parent
6c74220458
commit
8556aa21ff
37
src/app.rs
37
src/app.rs
@ -1,13 +1,13 @@
|
||||
use crate::error_template::{AppError, ErrorTemplate};
|
||||
use crate::pages::login::*;
|
||||
use crate::pages::signup::*;
|
||||
use crate::playbar::PlayBar;
|
||||
use crate::playstatus::PlayStatus;
|
||||
use crate::queue::Queue;
|
||||
use leptos::*;
|
||||
use leptos_meta::*;
|
||||
use leptos_router::*;
|
||||
use crate::pages::login::*;
|
||||
use crate::pages::signup::*;
|
||||
use crate::error_template::{AppError, ErrorTemplate};
|
||||
|
||||
use leptos::leptos_dom::*;
|
||||
|
||||
#[component]
|
||||
pub fn App() -> impl IntoView {
|
||||
@ -42,29 +42,48 @@ pub fn App() -> impl IntoView {
|
||||
}
|
||||
}
|
||||
|
||||
use crate::components::sidebar::*;
|
||||
use crate::components::dashboard::*;
|
||||
use crate::components::search::*;
|
||||
use crate::components::personal::*;
|
||||
use crate::components::search::*;
|
||||
use crate::components::sidebar::*;
|
||||
|
||||
/// Renders the home page of your application.
|
||||
#[component]
|
||||
fn HomePage() -> impl IntoView {
|
||||
use crate::auth::check_auth;
|
||||
|
||||
let play_status = PlayStatus::default();
|
||||
let play_status = create_rw_signal(play_status);
|
||||
|
||||
|
||||
let (logged_in, set_logged_in) = create_signal(false);
|
||||
|
||||
let (dashboard_open, set_dashboard_open) = create_signal(true);
|
||||
|
||||
create_effect(move |_| {
|
||||
spawn_local(async move {
|
||||
let auth_result = check_auth().await;
|
||||
if let Err(err) = auth_result {
|
||||
log!("Error checking auth: {:?}", err);
|
||||
} else if let Ok(true) = auth_result {
|
||||
log!("User is logged in");
|
||||
set_logged_in.update(|value| *value = true);
|
||||
} else if let Ok(false) = auth_result {
|
||||
log!("User is not logged in");
|
||||
set_logged_in.update(|value| *value = false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
view! {
|
||||
<div class="home-container">
|
||||
<Sidebar setter=set_dashboard_open active=dashboard_open />
|
||||
<Show
|
||||
<Show
|
||||
when=move || {dashboard_open() == true}
|
||||
fallback=move || view! { <Search /> }
|
||||
>
|
||||
<Dashboard />
|
||||
</Show>
|
||||
<Personal />
|
||||
<Personal logged_in=logged_in/>
|
||||
<PlayBar status=play_status/>
|
||||
<Queue status=play_status/>
|
||||
</div>
|
||||
|
@ -2,17 +2,20 @@ use leptos::leptos_dom::*;
|
||||
use leptos::*;
|
||||
use leptos_icons::*;
|
||||
|
||||
use crate::auth::check_auth;
|
||||
|
||||
#[component]
|
||||
pub fn Personal() -> impl IntoView {
|
||||
pub fn Personal(logged_in: ReadSignal<bool>) -> impl IntoView {
|
||||
view! {
|
||||
<div class=" personal-container">
|
||||
<Profile />
|
||||
<Profile logged_in=logged_in/>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn Profile() -> impl IntoView {
|
||||
pub fn Profile(logged_in: ReadSignal<bool>) -> impl IntoView {
|
||||
|
||||
let (dropdown_open, set_dropdown_open) = create_signal(false);
|
||||
|
||||
let open_dropdown = move |_| {
|
||||
@ -25,7 +28,13 @@ pub fn Profile() -> impl IntoView {
|
||||
<Icon icon=icondata::CgProfile />
|
||||
</div>
|
||||
<div class="dropdown-container" style={move || if dropdown_open() {"display: flex"} else {"display: none"}}>
|
||||
<DropDownNotLoggedIn />
|
||||
<Show
|
||||
when=move || {logged_in() == true}
|
||||
fallback=move || view!{<DropDownNotLoggedIn />}
|
||||
>
|
||||
<h1>Hello</h1>
|
||||
</Show>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user