MCPcopy Create free account
hub / github.com/Moosync/Moosync / ProviderIcon

Function ProviderIcon

src/components/provider_icon.rs:28–73  ·  view source on GitHub ↗
(#[prop()] extension: String)

Source from the content-addressed store, hash-verified

26#[tracing::instrument(level = "debug", skip(extension))]
27#[component]
28pub fn ProviderIcon(#[prop()] extension: String) -> impl IntoView {
29 let provider_icon = RwSignal::new(String::new());
30 let extension_clone = extension.clone();
31 spawn_local(async move {
32 if !extension_clone.is_empty()
33 && extension_clone != "youtube"
34 && extension_clone != "spotify"
35 {
36 let res = get_extension_icon(PackageNameArgs {
37 package_name: extension_clone,
38 })
39 .await;
40
41 if let Ok(res) = res {
42 provider_icon.set(res);
43 } else {
44 tracing::error!("Failed to get provider icon {:?}", res);
45 }
46 }
47 });
48 view! {
49 <div class="d-flex provider-icon">
50 {move || {
51 let extension = extension.as_str();
52 if extension == "youtube" {
53 view! { <YoutubeIcon /> }.into_any()
54 } else if extension == "spotify" {
55 view! { <SpotifyIcon /> }.into_any()
56 } else {
57 view! {
58 <img
59 style:display=if provider_icon.get().is_empty() {
60 "none"
61 } else {
62 "block"
63 }
64 referrerpolicy="no-referrer"
65 src=move || provider_icon.get()
66 />
67 }
68 .into_any()
69 }
70 }}
71 </div>
72 }
73}

Callers

nothing calls this directly

Calls 2

cloneMethod · 0.80
setMethod · 0.80

Tested by

no test coverage detected