diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 16:59:29 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 16:59:29 -0400 |
commit | c64a7a640ac8c59eb6339f0a06d2ad2efab3fd11 (patch) | |
tree | 229ccf88da26d5339aadab98013834b6c2af6cbc /webapp/src/main.rs | |
parent | 01753ebd32e4e0fa8adb11fb02a77720773e3018 (diff) |
Start working on authentication
Diffstat (limited to 'webapp/src/main.rs')
-rw-r--r-- | webapp/src/main.rs | 60 |
1 files changed, 27 insertions, 33 deletions
diff --git a/webapp/src/main.rs b/webapp/src/main.rs index 6fcf59f..a3fcebc 100644 --- a/webapp/src/main.rs +++ b/webapp/src/main.rs @@ -1,4 +1,5 @@ -use data::MyMessage; +use std::rc::Rc; + #[allow(unused_imports)] use log::{debug, error, info, warn}; use yew::prelude::*; @@ -6,7 +7,7 @@ use yew_router::prelude::*; pub mod bridge_engine; pub mod card; pub mod components; -use components::Game; +use components::{AppContextProvider, AppContext, Game}; use gloo_net::http::Request; extern crate wee_alloc; @@ -30,48 +31,41 @@ fn main() { #[function_component(App)] pub fn app() -> Html { - let msg = use_state(|| "".to_string()); - { - let msg = msg.clone(); - use_effect_with_deps( - move |_| { - wasm_bindgen_futures::spawn_local(async move { - let m: MyMessage = Request::get("/api/test") - .send() - .await - .unwrap() - .json() - .await - .unwrap(); - msg.set(m.message) - }); - || () - }, - (), - ) + html! { + <> + <AppContextProvider> + <BrowserRouter> + <Switch<Route> render={Switch::render(switch)} /> + </BrowserRouter> + </AppContextProvider> + </> } +} + +#[function_component(Home)] +fn home() -> Html { + let ctx = use_context::<Rc<AppContext>>().unwrap(); - info!("Got message from server: {}", &*msg); + let user = match &ctx.user { + Some(userinfo) => html! { + <p>{ format!("Logged in as {}", userinfo.username) }</p> + }, + None => html! { <p>{ "Not logged in" }</p> }, + }; html! { <> - <BrowserRouter> - <Switch<Route> render={Switch::render(switch)} /> - </BrowserRouter> + { user } + <p> + <Link<Route> to={Route::Playground}>{ "Playground" }</Link<Route>> + </p> </> } } fn switch(routes: &Route) -> Html { match routes { - Route::Home => html! { - <> - <p>{ "Hello!" }</p> - <p> - <Link<Route> to={Route::Playground}>{ "Playground" }</Link<Route>> - </p> - </> - }, + Route::Home => html!{ <Home/> }, Route::Playground => html! { <div class="game-layout"><Game /></div> }, |