diff options
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> } |
