Home page and sidebar update
Home page now shows who is logged in and the sidebar has a button to home
This commit is contained in:
@@ -3,6 +3,12 @@ use wasm_bindgen_futures::spawn_local;
|
||||
use yew::prelude::*;
|
||||
use yew_router::prelude::*;
|
||||
|
||||
macro_rules! dequote {
|
||||
($str:expr) => {
|
||||
$str.trim_matches('"').to_string()
|
||||
};
|
||||
}
|
||||
|
||||
/// The main home page component of the application.
|
||||
///
|
||||
/// This component displays different content based on whether the logged-in user
|
||||
@@ -22,10 +28,9 @@ use yew_router::prelude::*;
|
||||
/// ```
|
||||
#[component(Home)]
|
||||
pub fn home_component() -> Html {
|
||||
let is_admin = use_state(|| None::<bool>);
|
||||
|
||||
let name = use_state(|| "".to_string());
|
||||
{
|
||||
let is_admin = is_admin.clone();
|
||||
let name = name.clone();
|
||||
use_effect_with((), move |_| {
|
||||
spawn_local(async move {
|
||||
let response = Request::get("/api/users/current")
|
||||
@@ -36,28 +41,27 @@ pub fn home_component() -> Html {
|
||||
match response {
|
||||
Ok(resp) if resp.status() == 200 => {
|
||||
let user_data: serde_json::Value = resp.json().await.unwrap_or_default();
|
||||
let admin_value = user_data["data"]["is_admin"].as_bool();
|
||||
is_admin.set(admin_value);
|
||||
let name_value = format!(
|
||||
"{} {}",
|
||||
dequote!(user_data["data"]["first_name"].to_string()),
|
||||
dequote!(user_data["data"]["last_name"].to_string())
|
||||
);
|
||||
name.set(name_value);
|
||||
}
|
||||
_ => is_admin.set(Some(false)),
|
||||
_ => name.set("Unknown".to_string()),
|
||||
}
|
||||
});
|
||||
|| ()
|
||||
});
|
||||
}
|
||||
|
||||
match *is_admin {
|
||||
None => html! { <div>{ "Loading..." }</div> },
|
||||
Some(true) => html! {
|
||||
html! {
|
||||
<div>
|
||||
<crate::utilities::TicketCount/>
|
||||
|
||||
<p>{ "You are logged in as: " }</p>
|
||||
<p>{ &*name }</p>
|
||||
</div>
|
||||
},
|
||||
Some(false) => html! {
|
||||
<div>
|
||||
<crate::utilities::TicketCount/>
|
||||
</div>
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -381,6 +381,7 @@ pub fn sidebar() -> Html {
|
||||
<SidebarStateProvider>
|
||||
<nav class="sidebar user">
|
||||
<ul>
|
||||
<Link<crate::Route> to={crate::Route::Home}>{ "" }</Link<crate::Route>>
|
||||
<TicketMenu/>
|
||||
<li class="logout-item">
|
||||
<button
|
||||
@@ -400,6 +401,7 @@ pub fn sidebar() -> Html {
|
||||
<SidebarStateProvider>
|
||||
<nav class="sidebar admin">
|
||||
<ul>
|
||||
<Link<crate::Route> to={crate::Route::Home}>{ "" }</Link<crate::Route>>
|
||||
<TicketMenu/>
|
||||
<UsersMenu/>
|
||||
<Link<crate::Route> to={crate::Route::Diagnostics}>{ "Statistiken" }</Link<crate::Route>>
|
||||
|
||||
Reference in New Issue
Block a user