Page Title Updates on Playing Song
This commit is contained in:
parent
20a3c0c7df
commit
2bb9b3bdd7
@ -1,4 +1,5 @@
|
|||||||
use crate::playbar::PlayBar;
|
use crate::playbar::PlayBar;
|
||||||
|
use crate::playbar::CustomTitle;
|
||||||
use crate::playstatus::PlayStatus;
|
use crate::playstatus::PlayStatus;
|
||||||
use crate::queue::Queue;
|
use crate::queue::Queue;
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
@ -24,7 +25,7 @@ pub fn App() -> impl IntoView {
|
|||||||
<Stylesheet id="leptos" href="/pkg/libretunes.css"/>
|
<Stylesheet id="leptos" href="/pkg/libretunes.css"/>
|
||||||
|
|
||||||
// sets the document title
|
// sets the document title
|
||||||
<Title text="LibreTunes"/>
|
<CustomTitle play_status=play_status/>
|
||||||
|
|
||||||
// content for this welcome page
|
// content for this welcome page
|
||||||
<Router fallback=|| {
|
<Router fallback=|| {
|
||||||
|
@ -5,6 +5,7 @@ use crate::api::songs;
|
|||||||
use leptos::ev::MouseEvent;
|
use leptos::ev::MouseEvent;
|
||||||
use leptos::html::{Audio, Div};
|
use leptos::html::{Audio, Div};
|
||||||
use leptos::leptos_dom::*;
|
use leptos::leptos_dom::*;
|
||||||
|
use leptos_meta::Title;
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use leptos_icons::*;
|
use leptos_icons::*;
|
||||||
use leptos_use::{utils::Pausable, use_interval_fn};
|
use leptos_use::{utils::Pausable, use_interval_fn};
|
||||||
@ -460,6 +461,22 @@ fn QueueToggle(status: RwSignal<PlayStatus>) -> impl IntoView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Renders the title of the page based on the currently playing song
|
||||||
|
#[component]
|
||||||
|
pub fn CustomTitle(play_status: RwSignal<PlayStatus>) -> impl IntoView {
|
||||||
|
let title = create_memo(move |_| {
|
||||||
|
play_status.with(|play_status| {
|
||||||
|
match play_status.queue.front() {
|
||||||
|
Some(song_data) => song_data.title.clone(),
|
||||||
|
None => "LibreTunes".to_owned(),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
view! {
|
||||||
|
<Title text=title />
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The main play bar component, containing the progress bar, media info, play controls, and play duration
|
/// The main play bar component, containing the progress bar, media info, play controls, and play duration
|
||||||
#[component]
|
#[component]
|
||||||
pub fn PlayBar(status: RwSignal<PlayStatus>) -> impl IntoView {
|
pub fn PlayBar(status: RwSignal<PlayStatus>) -> impl IntoView {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user