summary refs log tree commit diff stats
path: root/src/components/async_fetch.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/async_fetch.rs')
-rw-r--r--src/components/async_fetch.rs32
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>
         }