From f6a3fb9c4d8dd86f78c9f75a23c1ac35bf35d4eb Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Thu, 19 Mar 2026 07:45:14 +0100 Subject: feat(treewide): Commit MVP --- src/pages/products.rs | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/pages/products.rs (limited to 'src/pages/products.rs') diff --git a/src/pages/products.rs b/src/pages/products.rs new file mode 100644 index 0000000..5c5b885 --- /dev/null +++ b/src/pages/products.rs @@ -0,0 +1,68 @@ +use leptos::{ + IntoView, component, + prelude::{ClassAttribute, ElementChild}, + view, +}; +use rocie_client::models::{Product, ProductParent}; + +use crate::{ + api::{ + product_parents_toplevel_wrapped, product_parents_under_404_wrapped, + products_by_product_parent_id_direct_wrapped, + products_by_product_parent_id_indirect_wrapped, products_without_product_parent_wrapped, + }, + components::{ + async_fetch::{AsyncFetch, AsyncResource}, + catch_errors::CatchErrors, + login_wall::LoginWall, + site_header::SiteHeader, + }, + pages::mk_render_parents, +}; + +#[component] +pub fn Products() -> impl IntoView { + view! { + + + + +
    + { + AsyncFetch! { + @map_error_in_producer + from_resource = AsyncResource!( + () -> Result<(Vec, Vec), leptos::error::Error> { + Ok(( + product_parents_toplevel_wrapped().await?, + products_without_product_parent_wrapped().await? + )) + } + ), + producer = |(parents, toplevel_products)| render_product_parents(Some(parents), Some(toplevel_products)), + } + } +
+
+
+ } +} + +mk_render_parents!( + self = render_product_parents, + parent_type = ProductParent, + item_type = Product, + value_renderer = render_products, + under_parent_fetcher = product_parents_under_404_wrapped, + indirect_fetcher = products_by_product_parent_id_indirect_wrapped, + direct_fetcher = products_by_product_parent_id_direct_wrapped, +); + +fn render_products(products: Vec) -> impl IntoView { + products + .into_iter() + .map(|product| { + view! {
  • {product.name}
  • } + }) + .collect::>() +} -- cgit 1.4.1