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() | 
