mentorenwahl/frontend/src/routes/mod.rs

81 lines
2 KiB
Rust
Raw Normal View History

2022-11-04 20:23:36 +00:00
use yew::prelude::*;
use yew_router::prelude::*;
2022-11-23 19:17:14 +00:00
use crate::cookies;
2022-11-04 20:23:36 +00:00
use crate::layouts;
pub mod home;
pub mod login;
pub mod not_found;
2022-11-21 18:48:53 +00:00
pub mod settings;
2022-11-04 20:23:36 +00:00
2022-11-05 20:27:49 +00:00
#[derive(Clone, Routable, PartialEq, Eq)]
2022-11-04 20:23:36 +00:00
pub enum Route {
#[at("/")]
Home,
2022-11-21 18:48:53 +00:00
#[at("/settings")]
Settings,
2022-11-04 20:23:36 +00:00
#[at("/login")]
Login,
#[not_found]
#[at("/404")]
NotFound,
}
pub fn switch(routes: &Route) -> Html {
2022-11-05 20:27:49 +00:00
let token = {
2022-11-23 19:17:14 +00:00
let tmp = wasm_cookies::get(cookies::TOKEN);
2022-11-05 20:27:49 +00:00
if let Some(x) = tmp {
if let Ok(y) = x {
Some(y)
} else {
2022-11-23 19:17:14 +00:00
wasm_cookies::delete(cookies::TOKEN);
2022-11-05 20:27:49 +00:00
None
}
} else {
None
}
};
let logged_in = token.is_some();
2022-11-23 19:17:14 +00:00
let admin = {
let tmp = wasm_cookies::get(cookies::ADMIN);
if let Some(x) = tmp {
if let Ok(_) = x {
true
} else {
wasm_cookies::delete(cookies::ADMIN);
false
}
} else {
false
}
};
2022-11-05 20:27:49 +00:00
2022-11-04 20:23:36 +00:00
match routes {
2022-11-05 20:27:49 +00:00
Route::Home => {
html! {
<layouts::logged_in::LoggedIn {logged_in}>
2022-11-21 18:48:53 +00:00
<layouts::main::Main token={token.to_owned()} {logged_in}>
2022-11-12 21:50:06 +00:00
<home::Home {token} />
2022-11-05 20:27:49 +00:00
</layouts::main::Main>
</layouts::logged_in::LoggedIn>
}
2022-11-04 20:23:36 +00:00
}
2022-11-21 18:48:53 +00:00
Route::Settings => {
html! {
<layouts::logged_in::LoggedIn {logged_in}>
<layouts::main::Main token={token.to_owned()} {logged_in}>
2022-11-23 19:17:14 +00:00
<settings::Settings {token} {admin} />
2022-11-21 18:48:53 +00:00
</layouts::main::Main>
</layouts::logged_in::LoggedIn>
}
}
2022-11-05 20:27:49 +00:00
Route::Login => html! {
2022-11-25 22:21:21 +00:00
<login::Login {token} {logged_in} />
2022-11-05 20:27:49 +00:00
},
Route::NotFound => html! {
2022-11-25 22:21:21 +00:00
<not_found::NotFound {token} {logged_in} />
2022-11-05 20:27:49 +00:00
},
2022-11-04 20:23:36 +00:00
}
}