diff options
Diffstat (limited to 'server/src/routes')
-rw-r--r-- | server/src/routes/ui/account/mod.rs | 2 | ||||
-rw-r--r-- | server/src/routes/ui/player.rs | 78 | ||||
-rw-r--r-- | server/src/routes/ui/style/player.css | 3 |
3 files changed, 41 insertions, 42 deletions
diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs index b778b64..0e4e0cc 100644 --- a/server/src/routes/ui/account/mod.rs +++ b/server/src/routes/ui/account/mod.rs @@ -206,7 +206,7 @@ pub fn format_form_error<T>(form: Form<Contextual<T>>) -> MyError { } MyError(anyhow!(k)) } - + pub fn hash_password(username: &str, password: &str) -> Vec<u8> { Argon2::default() .hash_password( diff --git a/server/src/routes/ui/player.rs b/server/src/routes/ui/player.rs index 050a164..5a995ce 100644 --- a/server/src/routes/ui/player.rs +++ b/server/src/routes/ui/player.rs @@ -12,6 +12,7 @@ use crate::{ }, }; use jellycommon::SourceTrackKind; +use markup::DynRender; use rocket::{get, FromForm, State}; use std::{ path::{Path, PathBuf}, @@ -38,10 +39,6 @@ pub fn r_player( conf: PlayerConfig, ) -> MyResult<DynLayoutPage<'_>> { let item = library.nested_path(&path)?.get_item()?; - if conf.a.is_none() && conf.v.is_none() && conf.s.is_none() { - return player_conf(item); - } - let tracks = [] .into_iter() .chain(conf.v.into_iter()) @@ -53,12 +50,15 @@ pub fn r_player( title: item.info.title.to_owned(), class: Some("player"), content: markup::new! { - video[src=stream_uri(&item.lib_path, &tracks, true), controls]; + @if conf.a.is_some() || conf.v.is_some() || conf.s.is_some() { + video[src=stream_uri(&item.lib_path, &tracks, true), controls]{} + } + @player_conf(item.clone()) }, }) } -pub fn player_conf<'a>(item: Arc<Item>) -> MyResult<DynLayoutPage<'a>> { +pub fn player_conf<'a>(item: Arc<Item>) -> DynRender<'a> { let mut audio_tracks = vec![]; let mut video_tracks = vec![]; let mut sub_tracks = vec![]; @@ -70,46 +70,42 @@ pub fn player_conf<'a>(item: Arc<Item>) -> MyResult<DynLayoutPage<'a>> { } } - Ok(LayoutPage { - title: "Configure Player".to_string(), - content: markup::new! { - // img.backdrop[src=uri!(r_item_assets(&item.lib_path)).to_string()]; - form.playerconf[method = "GET", action = ""] { - h2 { "Select tracks for " @item.info.title } + markup::new! { + // img.backdrop[src=uri!(r_item_assets(&item.lib_path)).to_string()]; + form.playerconf[method = "GET", action = ""] { + h2 { "Select tracks for " @item.info.title } - fieldset.video { - legend { "Video" } - @for (i, (tid, track)) in video_tracks.iter().enumerate() { - input[type="radio", id=tid, name="v", value=tid, checked=i==0]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="v-none", name="v", value=""]; - label[for="v-none"] { "No video" } + fieldset.video { + legend { "Video" } + @for (i, (tid, track)) in video_tracks.iter().enumerate() { + input[type="radio", id=tid, name="v", value=tid, checked=i==0]; + label[for=tid] { @format!("{track}") } br; } + input[type="radio", id="v-none", name="v", value=""]; + label[for="v-none"] { "No video" } + } - fieldset.audio { - legend { "Audio" } - @for (i, (tid, track)) in audio_tracks.iter().enumerate() { - input[type="radio", id=tid, name="a", value=tid, checked=i==0]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="a-none", name="a", value=""]; - label[for="a-none"] { "No audio" } + fieldset.audio { + legend { "Audio" } + @for (i, (tid, track)) in audio_tracks.iter().enumerate() { + input[type="radio", id=tid, name="a", value=tid, checked=i==0]; + label[for=tid] { @format!("{track}") } br; } + input[type="radio", id="a-none", name="a", value=""]; + label[for="a-none"] { "No audio" } + } - fieldset.subtitles { - legend { "Subtitles" } - @for (_i, (tid, track)) in sub_tracks.iter().enumerate() { - input[type="radio", id=tid, name="s", value=tid]; - label[for=tid] { @format!("{track}") } br; - } - input[type="radio", id="s-none", name="s", value="", checked=true]; - label[for="s-none"] { "No subtitles" } + fieldset.subtitles { + legend { "Subtitles" } + @for (_i, (tid, track)) in sub_tracks.iter().enumerate() { + input[type="radio", id=tid, name="s", value=tid]; + label[for=tid] { @format!("{track}") } br; } - - input[type="submit", value="Start playback"]; + input[type="radio", id="s-none", name="s", value="", checked=true]; + label[for="s-none"] { "No subtitles" } } - }, - ..Default::default() - }) + + input[type="submit", value="Start playback"]; + } + } } diff --git a/server/src/routes/ui/style/player.css b/server/src/routes/ui/style/player.css index deff065..bd65a4b 100644 --- a/server/src/routes/ui/style/player.css +++ b/server/src/routes/ui/style/player.css @@ -55,6 +55,9 @@ fieldset label:hover { color: var(--accent-light); } +.playerconf { + margin: 2em; +} .playerconf h2 { grid-area: h; text-align: center; |