mentorenwahl/frontend/src/routes/mod.rs
Dominic Grimm 8055a5e4db
Some checks failed
continuous-integration/drone/push Build is failing
Update
2023-01-17 06:56:19 +01:00

98 lines
2.3 KiB
Rust

use yew::prelude::*;
use yew_router::prelude::*;
use crate::cookies;
use crate::layouts;
pub mod home;
pub mod index;
pub mod info;
pub mod login;
pub mod not_found;
pub mod settings;
#[derive(Clone, Routable, PartialEq, Eq)]
pub enum Route {
#[at("/")]
Index,
#[at("/home")]
Home,
#[at("/settings")]
Settings,
#[at("/info")]
Info,
#[at("/login")]
Login,
#[not_found]
#[at("/404")]
NotFound,
}
pub fn switch(routes: Route) -> Html {
let token = {
let tmp = wasm_cookies::get(cookies::names::TOKEN);
if let Some(x) = tmp {
if let Ok(y) = x {
Some(y)
} else {
wasm_cookies::delete(cookies::names::TOKEN);
None
}
} else {
None
}
};
let admin = {
let tmp = wasm_cookies::get(cookies::names::ADMIN);
if let Some(x) = tmp {
if let Ok(_) = x {
true
} else {
wasm_cookies::delete(cookies::names::ADMIN);
false
}
} else {
false
}
};
match routes {
Route::Index => {
html! {
<index::Index token={token.to_owned()}/>
}
}
Route::Home => {
html! {
<layouts::logged_in::LoggedIn>
<layouts::main::Main token={token.to_owned()}>
<home::Home {token} />
</layouts::main::Main>
</layouts::logged_in::LoggedIn>
}
}
Route::Settings => {
html! {
<layouts::logged_in::LoggedIn>
<layouts::main::Main token={token.to_owned()}>
<settings::Settings {token} {admin} />
</layouts::main::Main>
</layouts::logged_in::LoggedIn>
}
}
Route::Info => {
html! {
<layouts::main::Main token={token.to_owned()}>
<info::Info />
</layouts::main::Main>
}
}
Route::Login => html! {
<login::Login {token} />
},
Route::NotFound => html! {
<not_found::NotFound {token} />
},
}
}