aboutsummaryrefslogtreecommitdiff
path: root/ui/src/components
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-21 12:09:59 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-21 12:09:59 +0100
commit276da3a082333b2287eca2e0fb2127fc6d1619e5 (patch)
treed0240b797455d571ceb39c1d57dd27d98ea955aa /ui/src/components
parent356bc5fe6913e85b18a2cb355f30019cdfd6b146 (diff)
downloadjellything-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.rs18
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();
+}