forked from
smokesignal.events/smokesignal
i18n+filtering fork - fluent-templates v2
1use anyhow::Result;
2use axum::{extract::State, response::IntoResponse};
3use axum_extra::extract::Cached;
4use axum_htmx::HxBoosted;
5
6use minijinja::context as template_context;
7
8use crate::{
9 create_renderer,
10 http::{
11 context::WebContext, errors::WebError, middleware_auth::Auth, middleware_i18n::Language,
12 },
13};
14
15pub async fn handle_privacy_policy(
16 State(web_context): State<WebContext>,
17 HxBoosted(hx_boosted): HxBoosted,
18 Language(language): Language,
19 Cached(auth): Cached<Auth>,
20) -> Result<impl IntoResponse, WebError> {
21 // Create the template renderer with enhanced context
22 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false);
23
24 let canonical_url = format!("https://{}/privacy-policy", web_context.config.external_base);
25
26 Ok((
27 http::StatusCode::OK,
28 renderer.render_template(
29 "privacy-policy",
30 template_context! {},
31 auth.0.as_ref(),
32 &canonical_url,
33 ),
34 )
35 .into_response())
36}
37
38pub async fn handle_terms_of_service(
39 State(web_context): State<WebContext>,
40 HxBoosted(hx_boosted): HxBoosted,
41 Language(language): Language,
42 Cached(auth): Cached<Auth>,
43) -> Result<impl IntoResponse, WebError> {
44 // Create the template renderer with enhanced context
45 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false);
46
47 let canonical_url = format!("https://{}/terms-of-service", web_context.config.external_base);
48
49 Ok((
50 http::StatusCode::OK,
51 renderer.render_template(
52 "terms-of-service",
53 template_context! {},
54 auth.0.as_ref(),
55 &canonical_url,
56 ),
57 )
58 .into_response())
59}
60
61pub async fn handle_cookie_policy(
62 State(web_context): State<WebContext>,
63 HxBoosted(hx_boosted): HxBoosted,
64 Language(language): Language,
65 Cached(auth): Cached<Auth>,
66) -> Result<impl IntoResponse, WebError> {
67 // Create the template renderer with enhanced context
68 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false);
69
70 let canonical_url = format!("https://{}/cookie-policy", web_context.config.external_base);
71
72 Ok((
73 http::StatusCode::OK,
74 renderer.render_template(
75 "cookie-policy",
76 template_context! {},
77 auth.0.as_ref(),
78 &canonical_url,
79 ),
80 )
81 .into_response())
82}
83
84pub async fn handle_acknowledgement(
85 State(web_context): State<WebContext>,
86 HxBoosted(hx_boosted): HxBoosted,
87 Language(language): Language,
88 Cached(auth): Cached<Auth>,
89) -> Result<impl IntoResponse, WebError> {
90 // Create the template renderer with enhanced context
91 let renderer = create_renderer!(web_context.clone(), Language(language), hx_boosted, false);
92
93 let canonical_url = format!("https://{}/acknowledgement", web_context.config.external_base);
94
95 Ok((
96 http::StatusCode::OK,
97 renderer.render_template(
98 "acknowledgement",
99 template_context! {},
100 auth.0.as_ref(),
101 &canonical_url,
102 ),
103 )
104 .into_response())
105}