diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-10-23 02:24:29 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-10-23 02:24:29 +0200 |
| commit | 427ce16023613536b8176e6dee7c1580a5980c97 (patch) | |
| tree | ab39dffcf89eacbcb19a251d540c46d9ee5b38d0 /src/components/async_fetch.rs | |
| parent | feat(buy): Provide basic buy interface (diff) | |
| download | web-client-427ce16023613536b8176e6dee7c1580a5980c97.zip | |
feat(treewide): Make usage more intuitive
Diffstat (limited to 'src/components/async_fetch.rs')
| -rw-r--r-- | src/components/async_fetch.rs | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/src/components/async_fetch.rs b/src/components/async_fetch.rs index f24e3a5..7bf44a0 100644 --- a/src/components/async_fetch.rs +++ b/src/components/async_fetch.rs @@ -15,31 +15,21 @@ pub(crate) use AsyncResource; macro_rules! AsyncFetch { ( - fetcher = $fetcher:block - producer = |$bound_variable:pat_param| $producer:block + @map_error_in_producer + fetcher = $fetcher:expr, + producer = $producer:expr $(,)? ) => {{ - use leptos::{ - prelude::{ElementChild, LocalResource, Suspend, Transition}, - view, - }; - - view! { - <Transition fallback=|| { - view! { <p>"Loading..."</p> } - }> - {move || Suspend::new(async move { - let resource = { LocalResource::new(move || $fetcher) }; - resource - .await - .map(|$bound_variable| $producer) - })} - </Transition> + AsyncFetch! { + @map_error_in_producer + from_resource = leptos::prelude::LocalResource::new(move || $fetcher), + producer = $producer } }}; + ( @map_error_in_producer - from_resource = $resource:ident - producer = |$bound_variable:pat_param| $producer:block + from_resource = $resource:expr, + producer = $producer:expr $(,)? ) => {{ use leptos::prelude::{ElementChild, Suspend, Transition}; @@ -50,7 +40,7 @@ macro_rules! AsyncFetch { {move || Suspend::new(async move { $resource .await - .map(|$bound_variable| $producer) + .map($producer) })} </Transition> } |
