#![allow(dead_code, unused_variables)] use leptos::{logging, prelude::*}; use leptos_meta::{Meta, Title}; use leptos_use::use_event_listener; use ssr_safe::{MediaPlayer, MediaPlayerError}; mod ssr_safe; #[component] fn Controls() -> impl IntoView { let player: LocalResource> = expect_context(); Effect::new(move || { let audio_element = if let Some(Ok(p)) = player.get() { Some(p.audio_element()) } else { None }; use_event_listener(audio_element, ssr_safe::media_events::error, |ev| { logging::error!("{:?}", ev); }); }); view! {
// The play/pause/etc button
// The title display
{move || { Ok::<_, MediaPlayerError>(player.get().transpose()?.map(|p| p.get_title())) }}
// The artist display
Artist
} } #[component] pub fn MusicSample() -> impl IntoView { let player = LocalResource::new(MediaPlayer::new); provide_context(player); view! { <section class="hero is-fullheight-with-navbar"> <div class="hero-body p-0">Body</div> <div class="hero-foot"> <Controls /> </div> </section> } }