summaryrefslogtreecommitdiff
path: root/webapp/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-10-07 16:59:29 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-10-07 16:59:29 -0400
commitc64a7a640ac8c59eb6339f0a06d2ad2efab3fd11 (patch)
tree229ccf88da26d5339aadab98013834b6c2af6cbc /webapp/src/main.rs
parent01753ebd32e4e0fa8adb11fb02a77720773e3018 (diff)
Start working on authentication
Diffstat (limited to 'webapp/src/main.rs')
-rw-r--r--webapp/src/main.rs60
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>
},