aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/node.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/node.rs')
-rw-r--r--server/src/routes/ui/node.rs46
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?))
}