From 4c46f78135b4e7ff820779b70449d6c22d108790 Mon Sep 17 00:00:00 2001 From: Daniel Miller Date: Wed, 11 Dec 2024 04:37:11 +0000 Subject: [PATCH] Added songpage component with basic structure and css file --- src/pages/songpage.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ style/songpage.scss | 0 2 files changed, 43 insertions(+) create mode 100644 src/pages/songpage.rs create mode 100644 style/songpage.scss diff --git a/src/pages/songpage.rs b/src/pages/songpage.rs new file mode 100644 index 0000000..525b235 --- /dev/null +++ b/src/pages/songpage.rs @@ -0,0 +1,43 @@ +use leptos::*; +use leptos_router::use_params_map; +use leptos_icons::*; +use server_fn::error::NoCustomError; + +use crate::components::loading::*; +use crate::components::error::*; +use crate::api::song::*; +use crate::models::Song; +use crate::songs::get_song_by_id; + +#[component] +pub fn SongPage() -> impl IntoView { + let params = use_params_map(); + + view! { +
+ {move || params.with(|params| { + match params.get("id").map(|id| id.parse::()) { + Some(Ok(id)) => { + view! { }.into_view() + }, + Some(Err(e)) => { + view! { + + title="Invalid Song ID" + error=e.to_string() + /> + }.into_view() + }, + None => { + view! { + + title="No Song ID" + message="You must specify a song ID to view its page." + /> + }.into_view() + } + } + })} +
+ } +} \ No newline at end of file diff --git a/style/songpage.scss b/style/songpage.scss new file mode 100644 index 0000000..e69de29