From 29383dfd49717b804fd946a657c70e31b7aa8979 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Tue, 2 Dec 2025 17:51:51 +0100 Subject: [PATCH] Add a template function to compute the avatar color hash same as Compound Web --- crates/templates/src/functions.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/templates/src/functions.rs b/crates/templates/src/functions.rs index 9d764e032..cb4603de0 100644 --- a/crates/templates/src/functions.rs +++ b/crates/templates/src/functions.rs @@ -41,6 +41,7 @@ pub fn register( env.add_filter("simplify_url", filter_simplify_url); env.add_filter("add_slashes", filter_add_slashes); env.add_filter("parse_user_agent", filter_parse_user_agent); + env.add_filter("id_color_hash", filter_id_color_hash); env.add_function("add_params_to_url", function_add_params_to_url); env.add_function("counter", || Ok(Value::from_object(Counter::default()))); if let Some(vite_manifest) = vite_manifest { @@ -138,6 +139,12 @@ fn filter_simplify_url(url: &str, kwargs: Kwargs) -> Result u32 { + input.chars().fold(0, |hash, c| hash + c as u32) % 6 + 1 +} + /// Filter which parses a user-agent string fn filter_parse_user_agent(user_agent: String) -> Value { let user_agent = mas_data_model::UserAgent::parse(user_agent);