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",
|
"unicase",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minimal-lexical"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mio"
|
name = "mio"
|
||||||
version = "0.7.14"
|
version = "0.7.14"
|
||||||
@ -902,6 +908,17 @@ dependencies = [
|
|||||||
"twoway",
|
"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]]
|
[[package]]
|
||||||
name = "ntapi"
|
name = "ntapi"
|
||||||
version = "0.3.6"
|
version = "0.3.6"
|
||||||
@ -1355,6 +1372,31 @@ dependencies = [
|
|||||||
"web-sys",
|
"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]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.85"
|
version = "1.0.85"
|
||||||
@ -1765,6 +1807,7 @@ dependencies = [
|
|||||||
"recipes",
|
"recipes",
|
||||||
"reqwasm",
|
"reqwasm",
|
||||||
"sycamore",
|
"sycamore",
|
||||||
|
"sycamore-router",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ recipes = {path = "../recipes" }
|
|||||||
reqwasm = "0.4.0"
|
reqwasm = "0.4.0"
|
||||||
# This makes debugging panics more tractable.
|
# This makes debugging panics more tractable.
|
||||||
console_error_panic_hook = "0.1.7"
|
console_error_panic_hook = "0.1.7"
|
||||||
|
sycamore-router = "0.7.1"
|
||||||
|
|
||||||
[dependencies.wasm-bindgen]
|
[dependencies.wasm-bindgen]
|
||||||
version = "0.2.79"
|
version = "0.2.79"
|
||||||
|
@ -16,6 +16,7 @@ use reqwasm::http;
|
|||||||
use sycamore::context::{use_context, ContextProvider, ContextProviderProps};
|
use sycamore::context::{use_context, ContextProvider, ContextProviderProps};
|
||||||
use sycamore::futures::spawn_local_in_scope;
|
use sycamore::futures::spawn_local_in_scope;
|
||||||
use sycamore::prelude::*;
|
use sycamore::prelude::*;
|
||||||
|
use sycamore_router::{HistoryIntegration, Route, Router, RouterProps};
|
||||||
|
|
||||||
use recipes::{parse, Recipe};
|
use recipes::{parse, Recipe};
|
||||||
|
|
||||||
@ -92,26 +93,66 @@ 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>)]
|
#[component(UI<G>)]
|
||||||
pub fn ui() -> View<G> {
|
pub fn ui() -> View<G> {
|
||||||
let app_service = AppService::new();
|
let app_service = AppService::new();
|
||||||
console_log!("Starting UI");
|
console_log!("Starting UI");
|
||||||
spawn_local_in_scope({
|
create_effect(cloned!((app_service) => move || {
|
||||||
let mut app_service = app_service.clone();
|
spawn_local_in_scope({
|
||||||
async move {
|
let mut app_service = app_service.clone();
|
||||||
match AppService::fetch_recipes().await {
|
async move {
|
||||||
Ok(recipes) => {
|
match AppService::fetch_recipes().await {
|
||||||
app_service.set_recipes(recipes);
|
Ok(recipes) => {
|
||||||
|
app_service.set_recipes(recipes);
|
||||||
|
}
|
||||||
|
Err(msg) => console_error!("Failed to get recipes {}", msg),
|
||||||
}
|
}
|
||||||
Err(msg) => console_error!("Failed to get recipes {}", msg),
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}));
|
||||||
view! {
|
view! {
|
||||||
div { "hello chefs!" }
|
Router(RouterProps::new(HistoryIntegration::new(), move |routes: ReadSignal<AppRoutes>| {
|
||||||
ContextProvider(ContextProviderProps {
|
let t = create_memo(cloned!((app_service) => move || {
|
||||||
value: app_service,
|
console_debug!("Determining route.");
|
||||||
children: || view! { RecipeList() }
|
let route = routes.get();
|
||||||
})
|
console_debug!("Route {:?}", route);
|
||||||
|
match route.as_ref() {
|
||||||
|
AppRoutes::Root => view! {
|
||||||
|
div { "hello chefs!" }
|
||||||
|
ContextProvider(ContextProviderProps {
|
||||||
|
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