blob: 7bf44a04598026974481fa345114b1bee92f9d6f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
macro_rules! AsyncResource {
(
(
$(
$input_name:ident : $input_type:ty = $input:expr
),*
) -> $output:ty $fetcher:block
) => {{
async fn fetcher($($input_name : $input_type),*) -> $output $fetcher
leptos::prelude::LocalResource::new(move || fetcher($($input),*))
}}
}
pub(crate) use AsyncResource;
macro_rules! AsyncFetch {
(
@map_error_in_producer
fetcher = $fetcher:expr,
producer = $producer:expr $(,)?
) => {{
AsyncFetch! {
@map_error_in_producer
from_resource = leptos::prelude::LocalResource::new(move || $fetcher),
producer = $producer
}
}};
(
@map_error_in_producer
from_resource = $resource:expr,
producer = $producer:expr $(,)?
) => {{
use leptos::prelude::{ElementChild, Suspend, Transition};
leptos::view! {
<Transition fallback=|| {
view! { <p>"Loading..."</p> }
}>
{move || Suspend::new(async move {
$resource
.await
.map($producer)
})}
</Transition>
}
}};
}
pub(crate) use AsyncFetch;
|