mentorenwahl/frontend/src/routes/mod.rs
Dominic Grimm ff2b884d42
All checks were successful
continuous-integration/drone/push Build is passing
Agent oriented logged in state
2022-11-05 21:27:49 +01:00

60 lines
1.4 KiB
Rust

use yew::prelude::*;
use yew_router::prelude::*;
use crate::cookie_names;
use crate::layouts;
pub mod home;
pub mod login;
pub mod not_found;
#[derive(Clone, Routable, PartialEq, Eq)]
pub enum Route {
#[at("/")]
Home,
#[at("/login")]
Login,
#[not_found]
#[at("/404")]
NotFound,
}
pub fn switch(routes: &Route) -> Html {
let token = {
let tmp = wasm_cookies::get(cookie_names::TOKEN);
if let Some(x) = tmp {
if let Ok(y) = x {
Some(y)
} else {
wasm_cookies::delete(cookie_names::TOKEN);
None
}
} else {
None
}
};
let logged_in = token.is_some();
match routes {
Route::Home => {
html! {
<layouts::logged_in::LoggedIn {logged_in}>
<layouts::main::Main {logged_in}>
<home::Home token={token.unwrap()} />
</layouts::main::Main>
</layouts::logged_in::LoggedIn>
}
}
Route::Login => html! {
<layouts::main::Main {logged_in}>
<login::Login />
</layouts::main::Main>
},
Route::NotFound => html! {
<layouts::main::Main {logged_in}>
<not_found::NotFound />
</layouts::main::Main>
},
}
}