add user session check to profile icon
This commit is contained in:
parent
6c74220458
commit
8556aa21ff
33
src/app.rs
33
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::playbar::PlayBar;
|
||||||
use crate::playstatus::PlayStatus;
|
use crate::playstatus::PlayStatus;
|
||||||
use crate::queue::Queue;
|
use crate::queue::Queue;
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use leptos_meta::*;
|
use leptos_meta::*;
|
||||||
use leptos_router::*;
|
use leptos_router::*;
|
||||||
use crate::pages::login::*;
|
use leptos::leptos_dom::*;
|
||||||
use crate::pages::signup::*;
|
|
||||||
use crate::error_template::{AppError, ErrorTemplate};
|
|
||||||
|
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn App() -> impl IntoView {
|
pub fn App() -> impl IntoView {
|
||||||
@ -42,19 +42,38 @@ pub fn App() -> impl IntoView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use crate::components::sidebar::*;
|
|
||||||
use crate::components::dashboard::*;
|
use crate::components::dashboard::*;
|
||||||
use crate::components::search::*;
|
|
||||||
use crate::components::personal::*;
|
use crate::components::personal::*;
|
||||||
|
use crate::components::search::*;
|
||||||
|
use crate::components::sidebar::*;
|
||||||
|
|
||||||
/// Renders the home page of your application.
|
/// Renders the home page of your application.
|
||||||
#[component]
|
#[component]
|
||||||
fn HomePage() -> impl IntoView {
|
fn HomePage() -> impl IntoView {
|
||||||
|
use crate::auth::check_auth;
|
||||||
|
|
||||||
let play_status = PlayStatus::default();
|
let play_status = PlayStatus::default();
|
||||||
let play_status = create_rw_signal(play_status);
|
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);
|
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! {
|
view! {
|
||||||
<div class="home-container">
|
<div class="home-container">
|
||||||
<Sidebar setter=set_dashboard_open active=dashboard_open />
|
<Sidebar setter=set_dashboard_open active=dashboard_open />
|
||||||
@ -64,7 +83,7 @@ fn HomePage() -> impl IntoView {
|
|||||||
>
|
>
|
||||||
<Dashboard />
|
<Dashboard />
|
||||||
</Show>
|
</Show>
|
||||||
<Personal />
|
<Personal logged_in=logged_in/>
|
||||||
<PlayBar status=play_status/>
|
<PlayBar status=play_status/>
|
||||||
<Queue status=play_status/>
|
<Queue status=play_status/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,17 +2,20 @@ use leptos::leptos_dom::*;
|
|||||||
use leptos::*;
|
use leptos::*;
|
||||||
use leptos_icons::*;
|
use leptos_icons::*;
|
||||||
|
|
||||||
|
use crate::auth::check_auth;
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn Personal() -> impl IntoView {
|
pub fn Personal(logged_in: ReadSignal<bool>) -> impl IntoView {
|
||||||
view! {
|
view! {
|
||||||
<div class=" personal-container">
|
<div class=" personal-container">
|
||||||
<Profile />
|
<Profile logged_in=logged_in/>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[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 (dropdown_open, set_dropdown_open) = create_signal(false);
|
||||||
|
|
||||||
let open_dropdown = move |_| {
|
let open_dropdown = move |_| {
|
||||||
@ -25,7 +28,13 @@ pub fn Profile() -> impl IntoView {
|
|||||||
<Icon icon=icondata::CgProfile />
|
<Icon icon=icondata::CgProfile />
|
||||||
</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"}}>
|
||||||
<DropDownNotLoggedIn />
|
<Show
|
||||||
|
when=move || {logged_in() == true}
|
||||||
|
fallback=move || view!{<DropDownNotLoggedIn />}
|
||||||
|
>
|
||||||
|
<h1>Hello</h1>
|
||||||
|
</Show>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user