mirror of
https://github.com/zaphar/kitchen.git
synced 2025-07-22 19:40:14 -04:00
Gate rendering of the view on having actual recipes available.
This commit is contained in:
parent
22eadb832a
commit
ace489924d
@ -37,19 +37,8 @@ enum AppRoutes {
|
|||||||
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");
|
||||||
create_effect(cloned!((app_service) => move || {
|
// TODO(jwall): We need to ensure that this happens before
|
||||||
spawn_local_in_scope({
|
// we render the UI below.
|
||||||
let mut app_service = app_service.clone();
|
|
||||||
async move {
|
|
||||||
match AppService::fetch_recipes().await {
|
|
||||||
Ok(recipes) => {
|
|
||||||
app_service.set_recipes(recipes);
|
|
||||||
}
|
|
||||||
Err(msg) => console_error!("Failed to get recipes {}", msg),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
view! {
|
view! {
|
||||||
// NOTE(jwall): Set the app_service in our toplevel scope. Children will be able
|
// NOTE(jwall): Set the app_service in our toplevel scope. Children will be able
|
||||||
// to find the service as long as they are a child of this scope.
|
// to find the service as long as they are a child of this scope.
|
||||||
@ -57,32 +46,45 @@ pub fn ui() -> View<G> {
|
|||||||
value: app_service.clone(),
|
value: app_service.clone(),
|
||||||
children: || view! {
|
children: || view! {
|
||||||
Router(RouterProps::new(HistoryIntegration::new(), move |routes: ReadSignal<AppRoutes>| {
|
Router(RouterProps::new(HistoryIntegration::new(), move |routes: ReadSignal<AppRoutes>| {
|
||||||
let t = create_memo(move || {
|
let view = Signal::new(View::empty());
|
||||||
console_debug!("Determining route.");
|
create_effect(cloned!((view) => move || {
|
||||||
let route = routes.get();
|
spawn_local_in_scope(cloned!((routes, view) => {
|
||||||
console_debug!("Route {:?}", route);
|
let mut app_service = app_service.clone();
|
||||||
match route.as_ref() {
|
async move {
|
||||||
AppRoutes::Root => view! {
|
match AppService::fetch_recipes().await {
|
||||||
Start()
|
Ok(recipes) => {
|
||||||
},
|
app_service.set_recipes(recipes);
|
||||||
AppRoutes::Recipe{index:idx} => view! {
|
}
|
||||||
RecipeView(*idx)
|
Err(msg) => console_error!("Failed to get recipes {}", msg),
|
||||||
},
|
}
|
||||||
AppRoutes::Menu => view! {
|
console_debug!("Determining route.");
|
||||||
"TODO!!"
|
let route = routes.get();
|
||||||
},
|
console_debug!("Route {:?}", route);
|
||||||
AppRoutes::NotFound => view! {
|
let t = match route.as_ref() {
|
||||||
"NotFound"
|
AppRoutes::Root => view! {
|
||||||
|
Start()
|
||||||
|
},
|
||||||
|
AppRoutes::Recipe{index:idx} => view! {
|
||||||
|
RecipeView(*idx)
|
||||||
|
},
|
||||||
|
AppRoutes::Menu => view! {
|
||||||
|
"TODO!!"
|
||||||
|
},
|
||||||
|
AppRoutes::NotFound => view! {
|
||||||
|
"NotFound"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
view.set(t);
|
||||||
|
console_debug!("Created our route view effect.");
|
||||||
}
|
}
|
||||||
}
|
}));
|
||||||
});
|
}));
|
||||||
console_debug!("Created our route view memo.");
|
|
||||||
view! {
|
view! {
|
||||||
// NOTE(jwall): The Router component *requires* there to be exactly one node as the root of this view.
|
// NOTE(jwall): The Router component *requires* there to be exactly one node as the root of this view.
|
||||||
// No fragments or missing nodes allowed or it will panic at runtime.
|
// No fragments or missing nodes allowed or it will panic at runtime.
|
||||||
div(class="app") {
|
div(class="app") {
|
||||||
Header()
|
Header()
|
||||||
(t.get().as_ref().clone())
|
(view.get().as_ref().clone())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user