File tree Expand file tree Collapse file tree
src/lib/features/awesome-privacy/components Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1313 let { service, class : klass, ... props }: ServiceLogoProps = $props ();
1414
1515 let error = $state (false );
16+ let loading = $state (true );
1617
1718 const fallback = $derived (` https://icon.horse/icon/${service .url } ` );
1819 </script >
1920
21+ {#if loading }
22+ <span class ={cn (' size-5 animate-pulse rounded-sm bg-base-300' , klass )}></span >
23+ {/if }
24+
2025{#if error }
2126 <Icons .fallback class ={cn (' shrink-0' , klass )} />
2227{:else }
2530 src ={service .icon ?? fallback }
2631 onerror ={(e ) => {
2732 const target = e .target as HTMLImageElement ;
33+ loading = false ;
2834
2935 if (target .src !== fallback ) {
3036 target .src = fallback ;
3137 } else if (target .src === fallback ) {
3238 error = true ;
3339 }
3440 }}
41+ onload ={() => {
42+ loading = false ;
43+ error = false ;
44+ }}
3545 alt ={service .name }
36- class ={cn (' shrink-0 object-contain' , klass )}
46+ class ={cn (' shrink-0 object-contain' , loading && ' hidden ' , klass )}
3747 {...props }
3848 />
3949{/if }
You can’t perform that action at this time.
0 commit comments