started development

This commit is contained in:
FantasyPvP
2024-12-02 03:41:18 +00:00
commit 0ae26d46bf
35 changed files with 9749 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
use yew::prelude::*;
use yew_router::prelude::*;
use gloo::storage::{LocalStorage, Storage};
mod hooks {
pub mod websocket;
}
mod components {
pub mod chat;
pub mod signup;
pub mod login;
}
use components::{
chat::Chat,
login::Login,
signup::Signup,
};
#[derive(Clone, Routable, PartialEq)]
enum Route {
#[at("/")]
Root,
#[at("/login")]
Login,
#[at("/signup")]
Signup,
#[at("/chat")]
Chat,
#[not_found]
#[at("/404")]
NotFound,
}
fn switch(route: Route) -> Html {
match route {
Route::Root => html! { <Redirect<Route> to={Route::Login}/> },
Route::Login => html! { <Login /> },
Route::Signup => html! { <Signup /> },
Route::Chat => {
if let Ok(token) = LocalStorage::get::<String>("auth_token") {
html! { <Chat /> }
} else {
html! { <Redirect<Route> to={Route::Login}/> }
}
}
Route::NotFound => html! { <h1>{"404 Not Found"}</h1> },
}
}
#[function_component(App)]
fn app() -> Html {
html! {
<BrowserRouter>
<Switch<Route> render={switch} />
</BrowserRouter>
}
}
fn main() {
yew::Renderer::<App>::new().render();
}