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