1- use std:: sync:: Arc ;
2-
3- use leptos:: prelude:: * ;
4- use tracing:: debug;
1+ use leptos:: { either:: Either , prelude:: * } ;
2+ use leptos_router:: components:: A ;
3+ use shield_leptos:: integration:: LeptosUser ;
54
65#[ server]
7- pub async fn user ( ) -> Result < Option < Arc < dyn shield :: User > > , ServerFnError > {
6+ pub async fn user ( ) -> Result < Option < LeptosUser > , ServerFnError > {
87 use shield_leptos:: context:: extract_user;
98
10- let user = extract_user ( ) . await ;
11- debug ! ( "action {:?}" , user. as_ref( ) . map( |user| user. id( ) ) ) ;
12-
13- Ok ( user)
9+ Ok ( extract_user ( ) . await )
1410}
1511
1612#[ component]
@@ -20,35 +16,26 @@ pub fn HomePage() -> impl IntoView {
2016 view ! {
2117 <h1>"Shield Leptos Axum Example" </h1>
2218
23- { move || match user. get( ) {
24- Some ( user) => {
25- debug!( "{:?}" , user) ;
26- match user {
27- Ok ( user) => view! {
28- { user. as_ref( ) . map( |user| user. id( ) ) }
29- } . into_any( ) ,
30- Err ( err) => view! {
31- { err. to_string( ) }
32- } . into_any( ) ,
33- }
34- } . into_any( ) ,
35- None => view! { "Loading..." } . into_any( ) ,
36- } }
37-
38- // <Suspense fallback=move || view! { "Loading..." }>
39- // {move || Suspend::new(async move {
40- // let user = user.await;
41- // debug!("view {:?}", user);
42-
43- // match user {
44- // Ok(user) => Either::Left(view! {
45- // {user.as_ref().map(|user| user.id())}
46- // }),
47- // Err(err) => Either::Right(view! {
48- // {err.to_string()}
49- // })
50- // }
51- // })}
52- // </Suspense>
19+ <Suspense fallback=|| view! { "Loading..." } >
20+ { move || Suspend :: new( async move { match user. await {
21+ Ok ( user) => Either :: Left ( match user {
22+ Some ( user) => Either :: Left ( view! {
23+ { user. id}
24+
25+ <A href="/auth/sign-out" >
26+ <button>"Sign out" </button>
27+ </A >
28+ } ) ,
29+ None => Either :: Right ( view! {
30+ <A href="/auth/sign-in" >
31+ <button>"Sign in" </button>
32+ </A >
33+ } ) ,
34+ } ) ,
35+ Err ( err) => Either :: Right ( view! {
36+ { err. to_string( ) }
37+ } )
38+ } } ) }
39+ </Suspense >
5340 }
5441}
0 commit comments