From 276da3a082333b2287eca2e0fb2127fc6d1619e5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 21 Feb 2026 12:09:59 +0100 Subject: person fallback images --- server/src/routes.rs | 3 ++- server/src/ui/assets.rs | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'server') diff --git a/server/src/routes.rs b/server/src/routes.rs index 4a875f4..334fb39 100644 --- a/server/src/routes.rs +++ b/server/src/routes.rs @@ -18,7 +18,7 @@ use crate::{ log::{r_admin_log, r_admin_log_stream}, r_admin_dashboard, }, - assets::r_image, + assets::{r_image, r_image_fallback_person}, error::{r_api_catch, r_catch}, home::r_home, node::r_node, @@ -95,6 +95,7 @@ pub(super) fn build_rocket(state: Arc) -> Rocket { // r_admin_users, // r_items, r_image, + r_image_fallback_person, r_assets_font, r_assets_js_map, r_assets_js, diff --git a/server/src/ui/assets.rs b/server/src/ui/assets.rs index 91bb5e2..5903b83 100644 --- a/server/src/ui/assets.rs +++ b/server/src/ui/assets.rs @@ -6,7 +6,10 @@ use super::error::MyResult; use crate::{request_info::RequestInfo, responders::cache::CacheControlImage}; use anyhow::Context; -use rocket::{get, http::ContentType}; +use jellycache::HashKey; +use jellycommon::routes::u_image; +use jellyimport::generate_person_fallback; +use rocket::{get, http::ContentType, response::Redirect}; use std::path::PathBuf; use tokio::task::spawn_blocking; @@ -34,6 +37,21 @@ pub async fn r_image( Ok((ContentType::AVIF, CacheControlImage(encoded))) } +#[get("/image_fallback/person/?")] +pub async fn r_image_fallback_person( + ri: RequestInfo<'_>, + name: &str, + size: Option, +) -> MyResult { + let path = ri + .state + .cache + .store(format!("fallback/person/{}.image", HashKey(name)), || { + generate_person_fallback(name) + })?; + Ok(Redirect::found(u_image(&path, size.unwrap_or(2048)))) +} + // #[get("/n//image/?")] // pub async fn r_item_poster( // session: A, -- cgit v1.3