diff --git a/src/app.rs b/src/app.rs index 946b4c2..2d78867 100644 --- a/src/app.rs +++ b/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! {
- } > - +
diff --git a/src/components/personal.rs b/src/components/personal.rs index 889a780..0f8132c 100644 --- a/src/components/personal.rs +++ b/src/components/personal.rs @@ -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) -> impl IntoView { view! {
- +
} } #[component] -pub fn Profile() -> impl IntoView { +pub fn Profile(logged_in: ReadSignal) -> impl IntoView { + let (dropdown_open, set_dropdown_open) = create_signal(false); let open_dropdown = move |_| { @@ -25,7 +28,13 @@ pub fn Profile() -> impl IntoView { }