diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-05 22:55:33 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-05 22:55:33 +0200 |
commit | cc6d2ba0174da28533f51fe3915872110c242b1e (patch) | |
tree | 67ccdb4f2b83b8af3e7a0a6980d2ed3d6240c353 /server/src/routes/ui/assets.rs | |
parent | 986e365dddab00928576f633b0068f068988f074 (diff) | |
download | jellything-cc6d2ba0174da28533f51fe3915872110c242b1e.tar jellything-cc6d2ba0174da28533f51fe3915872110c242b1e.tar.bz2 jellything-cc6d2ba0174da28533f51fe3915872110c242b1e.tar.zst |
use parent assets as fallback
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() |