diff options
author | metamuffin <metamuffin@disroot.org> | 2023-06-12 22:54:04 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-06-12 22:54:04 +0200 |
commit | 905ffe80fcd97b1b6b2c194181b2426b601d52d1 (patch) | |
tree | 144608428f7b147934373cad98ef01818740cfb4 /server/src/routes/ui/node.rs | |
parent | 026c72d54f0adfcb20b239f3e76f1938ec644f25 (diff) | |
download | jellything-905ffe80fcd97b1b6b2c194181b2426b601d52d1.tar jellything-905ffe80fcd97b1b6b2c194181b2426b601d52d1.tar.bz2 jellything-905ffe80fcd97b1b6b2c194181b2426b601d52d1.tar.zst |
fallback banner and directory cards
Diffstat (limited to 'server/src/routes/ui/node.rs')
-rw-r--r-- | server/src/routes/ui/node.rs | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index fc57eea..d03173b 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -5,16 +5,18 @@ */ use super::error::MyError; use super::player::player_uri; +use crate::uri; use crate::{ library::{Directory, Item, Library, Node}, routes::ui::{ account::session::Session, layout::{DynLayoutPage, LayoutPage}, }, + CONF, }; -use anyhow::{anyhow, Context}; +use anyhow::Context; use log::info; -use rocket::{get, http::ContentType, uri, State}; +use rocket::{get, http::ContentType, State}; use std::{ops::Deref, path::PathBuf, sync::Arc}; use tokio::fs::File; @@ -44,7 +46,20 @@ markup::define! { } } DirectoryCard(dir: Arc<Directory>) { - div.card.dir { a[href=&uri!(r_library_node(&dir.lib_path)).to_string()] { @dir.info.name } } + div.card.dir { + div.banner { + a[href=uri!(r_library_node(&dir.lib_path))] { + img[src=uri!(r_item_assets(&dir.lib_path))]; + } + div.hover { a[href=uri!(r_library_node(&dir.lib_path))] { "Open" } } + } + p.title { + a[href=uri!(r_library_node(&dir.lib_path))] { + @dir.info.name + } + } + } + // a[href=&uri!(r_library_node(&dir.lib_path))] { @dir.info.name } } } DirectoryPage(dir: Arc<Directory>) { div.page.dir { @@ -62,13 +77,13 @@ markup::define! { ItemCard(item: Arc<Item>) { div.card.item { div.banner { - a[href=uri!(r_library_node(&item.lib_path)).to_string()] { - img[src=uri!(r_item_assets(&item.lib_path)).to_string()]; + a[href=uri!(r_library_node(&item.lib_path))] { + img[src=uri!(r_item_assets(&item.lib_path))]; } div.hover { a[href=&player_uri(&item.lib_path)] { "▶" } } } p.title { - a[href=uri!(r_library_node(&item.lib_path)).to_string()] { + a[href=uri!(r_library_node(&item.lib_path))] { @item.info.title } } @@ -76,10 +91,10 @@ markup::define! { } ItemPage(item: Arc<Item>) { // TODO different image here - img.backdrop[src=uri!(r_item_assets(&item.lib_path)).to_string()]; + img.backdrop[src=uri!(r_item_assets(&item.lib_path))]; div.page.item { div.banner { - img[src=uri!(r_item_assets(&item.lib_path)).to_string()]; + img[src=uri!(r_item_assets(&item.lib_path))]; } div.title { h1 { @item.info.title } @@ -102,15 +117,12 @@ pub async fn r_item_assets( ) -> Result<(ContentType, File), MyError> { let node = library .nested_path(&path) - .context("retrieving library node")? - .get_item()? - .clone(); - let path = node.fs_path.parent().unwrap().join( - node.info - .banner - .clone() - .ok_or(anyhow!("no banner available"))?, - ); + .context("retrieving library node")?; + let path = if let Some(p) = node.banner() { + library.root_path.join(p) + } else { + CONF.asset_path.join("fallback.jpeg") + }; info!("loading asset from {path:?}"); Ok((ContentType::WEBP, File::open(path).await?)) } |