diff options
Diffstat (limited to 'server/src/routes/ui/assets.rs')
-rw-r--r-- | server/src/routes/ui/assets.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/server/src/routes/ui/assets.rs b/server/src/routes/ui/assets.rs index 4b5c64a..c00749f 100644 --- a/server/src/routes/ui/assets.rs +++ b/server/src/routes/ui/assets.rs @@ -31,15 +31,23 @@ pub async fn r_item_assets( db: &State<Database>, ) -> Result<(ContentType, CacheControlFile), MyError> { let node = db.node.get(&id)?.ok_or(anyhow!("node does not exist"))?; - let path = match role { + let mut asset = match role { AssetRole::Backdrop => node.private.backdrop, AssetRole::Poster => node.private.poster, - } - .map(|e| e.path()) - .unwrap_or_else(|| { - CONF.asset_path - .join(PathBuf::from_str("fallback.jpeg").unwrap()) - }); + }; + if let None = asset { + if let Some(parent) = &node.public.parent { + let parent = db.node.get(parent)?.ok_or(anyhow!("node does not exist"))?; + asset = match role { + AssetRole::Backdrop => parent.private.backdrop, + AssetRole::Poster => parent.private.poster, + }; + } + }; + let asset = asset.unwrap_or(AssetLocation::Assets( + PathBuf::from_str("fallback.jpeg").unwrap(), + )); + let path = asset.path(); info!("loading asset from {path:?}"); let ext = path .extension() |