diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-21 12:09:59 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-21 12:09:59 +0100 |
| commit | 276da3a082333b2287eca2e0fb2127fc6d1619e5 (patch) | |
| tree | d0240b797455d571ceb39c1d57dd27d98ea955aa /ui/src/components | |
| parent | 356bc5fe6913e85b18a2cb355f30019cdfd6b146 (diff) | |
| download | jellything-276da3a082333b2287eca2e0fb2127fc6d1619e5.tar jellything-276da3a082333b2287eca2e0fb2127fc6d1619e5.tar.bz2 jellything-276da3a082333b2287eca2e0fb2127fc6d1619e5.tar.zst | |
person fallback images
Diffstat (limited to 'ui/src/components')
| -rw-r--r-- | ui/src/components/node_card.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/ui/src/components/node_card.rs b/ui/src/components/node_card.rs index 1b8fd67..eb00ccc 100644 --- a/ui/src/components/node_card.rs +++ b/ui/src/components/node_card.rs @@ -10,7 +10,7 @@ use crate::{ }; use jellycommon::{ jellyobject::Object, - routes::{u_image, u_node_slug, u_node_slug_player}, + routes::{u_image, u_image_fallback_person, u_node_slug, u_node_slug_player}, *, }; @@ -22,7 +22,7 @@ markup::define! { div[class=cls] { .poster { a[href=u_node_slug(&slug)] { - img[src=u_image(node.get(NO_PICTURES).unwrap_or_default().get(PICT_COVER).unwrap_or_default(), 512), loading="lazy"]; + img[src=cover_image(&node, 512), loading="lazy"]; } .cardhover.item { @if node.has(NO_TRACK.0) { @@ -49,7 +49,7 @@ markup::define! { div[class="node card widecard poster"] { div[class=&format!("poster {}", aspect_class(node))] { a[href=u_node_slug(&slug)] { - img[src=u_image(node.get(NO_PICTURES).unwrap_or_default().get(PICT_COVER).unwrap_or_default(), 512), loading="lazy"]; + img[src=cover_image(&node, 512), loading="lazy"]; } .cardhover.item { @if node.has(NO_TRACK.0) { @@ -65,3 +65,15 @@ markup::define! { } } } + +fn cover_image(node: &Object, size: usize) -> String { + if let Some(cover) = node.get(NO_PICTURES).unwrap_or_default().get(PICT_COVER) { + return u_image(cover, size); + } + if let Some(title) = node.get(NO_TITLE) + && node.get(NO_KIND) == Some(KIND_PERSON) + { + return u_image_fallback_person(title, 512); + } + return String::new(); +} |