grain.social is a photo sharing platform built on atproto.
at main 1.2 kB view raw
1use anyhow::Result; 2use minijinja::{Environment, context}; 3use std::include_str; 4 5fn create_template_env() -> Environment<'static> { 6 let mut env = Environment::new(); 7 8 // Add adaptive layout template 9 env.add_template( 10 "adaptive_layout.html", 11 include_str!("../templates/adaptive_layout.html"), 12 ) 13 .unwrap(); 14 15 // Add collage layout template 16 env.add_template( 17 "collage_layout.html", 18 include_str!("../templates/collage_layout.html"), 19 ) 20 .unwrap(); 21 22 env 23} 24 25pub fn generate_grid_html_with_uri( 26 gallery_uri: &str, 27 title: String, 28 handle: String, 29 variant: &str, 30) -> Result<String> { 31 let env = create_template_env(); 32 println!( 33 "Using template: {}", 34 match variant { 35 "collage" => "collage_layout.html", 36 _ => "adaptive_layout.html", 37 } 38 ); 39 let template_name = match variant { 40 "collage" => "collage_layout.html", 41 _ => "adaptive_layout.html", // Default to adaptive 42 }; 43 44 let template = env.get_template(template_name)?; 45 46 let html = template.render(context! { 47 gallery_uri => gallery_uri, 48 title => title, 49 handle => handle, 50 })?; 51 52 Ok(html) 53}