mirror of
https://github.com/zaphar/kitchen.git
synced 2025-07-22 19:40:14 -04:00
Functioning routing skeleton
This commit is contained in:
parent
8bae558140
commit
dc0e79a4d8
43
Cargo.lock
generated
43
Cargo.lock
generated
@ -862,6 +862,12 @@ dependencies = [
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.7.14"
|
||||
@ -902,6 +908,17 @@ dependencies = [
|
||||
"twoway",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "7.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"minimal-lexical",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ntapi"
|
||||
version = "0.3.6"
|
||||
@ -1355,6 +1372,31 @@ dependencies = [
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sycamore-router"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cace57b69d923ef7ac5a1291bee73fa62e7d75b1f3a713db70d30ab0ee032185"
|
||||
dependencies = [
|
||||
"sycamore",
|
||||
"sycamore-router-macro",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sycamore-router-macro"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a1f83a4862484dba897a6dc64c4a72b5c808c9af05573f7a55133b4f110ac66"
|
||||
dependencies = [
|
||||
"nom",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.85"
|
||||
@ -1765,6 +1807,7 @@ dependencies = [
|
||||
"recipes",
|
||||
"reqwasm",
|
||||
"sycamore",
|
||||
"sycamore-router",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
|
@ -10,6 +10,7 @@ recipes = {path = "../recipes" }
|
||||
reqwasm = "0.4.0"
|
||||
# This makes debugging panics more tractable.
|
||||
console_error_panic_hook = "0.1.7"
|
||||
sycamore-router = "0.7.1"
|
||||
|
||||
[dependencies.wasm-bindgen]
|
||||
version = "0.2.79"
|
||||
|
@ -16,6 +16,7 @@ use reqwasm::http;
|
||||
use sycamore::context::{use_context, ContextProvider, ContextProviderProps};
|
||||
use sycamore::futures::spawn_local_in_scope;
|
||||
use sycamore::prelude::*;
|
||||
use sycamore_router::{HistoryIntegration, Route, Router, RouterProps};
|
||||
|
||||
use recipes::{parse, Recipe};
|
||||
|
||||
@ -92,10 +93,23 @@ fn recipe_list() -> View<G> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Route, Debug)]
|
||||
enum AppRoutes {
|
||||
#[to("/ui")]
|
||||
Root,
|
||||
#[to("/ui/recipe/<index>")]
|
||||
Recipe { index: usize },
|
||||
#[to("/ui/menu")]
|
||||
Menu,
|
||||
#[not_found]
|
||||
NotFound,
|
||||
}
|
||||
|
||||
#[component(UI<G>)]
|
||||
pub fn ui() -> View<G> {
|
||||
let app_service = AppService::new();
|
||||
console_log!("Starting UI");
|
||||
create_effect(cloned!((app_service) => move || {
|
||||
spawn_local_in_scope({
|
||||
let mut app_service = app_service.clone();
|
||||
async move {
|
||||
@ -107,11 +121,38 @@ pub fn ui() -> View<G> {
|
||||
}
|
||||
}
|
||||
});
|
||||
}));
|
||||
view! {
|
||||
Router(RouterProps::new(HistoryIntegration::new(), move |routes: ReadSignal<AppRoutes>| {
|
||||
let t = create_memo(cloned!((app_service) => move || {
|
||||
console_debug!("Determining route.");
|
||||
let route = routes.get();
|
||||
console_debug!("Route {:?}", route);
|
||||
match route.as_ref() {
|
||||
AppRoutes::Root => view! {
|
||||
div { "hello chefs!" }
|
||||
ContextProvider(ContextProviderProps {
|
||||
value: app_service,
|
||||
value: app_service.clone(),
|
||||
children: || view! { RecipeList() }
|
||||
})
|
||||
},
|
||||
AppRoutes::Recipe{index:_idx} => view! {
|
||||
"TODO!!"
|
||||
},
|
||||
AppRoutes::Menu => view! {
|
||||
"TODO!!"
|
||||
},
|
||||
AppRoutes::NotFound => view! {
|
||||
"NotFound"
|
||||
}
|
||||
}
|
||||
}));
|
||||
console_debug!("Created our route view memo.");
|
||||
view! {
|
||||
div(class="app") {
|
||||
(t.get().as_ref().clone())
|
||||
}
|
||||
}
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user