commit cb91fbe80c07ac11a0792795961e322a1cbecce9
parent 53b6a479a96fc3707fdd08c402109e2ee5a60b66
Author: Silas Brack <silasbrack@gmail.com>
Date: Tue, 9 Jun 2026 20:07:21 +0200
chore: remove dead HTMX code
Remove unused HtmxRequest extractor and HX-Preloaded cache control
middleware left over from the HTMX-to-Datastar migration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Diffstat:
2 files changed, 1 insertion(+), 52 deletions(-)
diff --git a/src/extractors.rs b/src/extractors.rs
@@ -1,23 +0,0 @@
-use axum::{
- extract::FromRequestParts,
- http::{request::Parts, StatusCode},
-};
-
-/// Extractor that checks if the request is an HTMX request.
-/// Returns true if HX-Request header is present OR HX-History-Restore-Request is present.
-#[allow(dead_code)]
-pub struct HtmxRequest(pub bool);
-
-impl<S> FromRequestParts<S> for HtmxRequest
-where
- S: Send + Sync,
-{
- type Rejection = (StatusCode, &'static str);
-
- async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result<Self, Self::Rejection> {
- let is_hx_request = parts.headers.get("HX-Request").is_some();
- let is_hx_history_restore = parts.headers.get("HX-History-Restore-Request").is_some();
-
- Ok(HtmxRequest(is_hx_request || is_hx_history_restore))
- }
-}
diff --git a/src/main.rs b/src/main.rs
@@ -1,13 +1,6 @@
-use axum::{
- body::Body,
- http::{Request, Response},
- middleware::{self, Next},
-};
-
mod config;
mod db;
mod error;
-mod extractors;
mod handlers;
mod routes;
mod state;
@@ -18,26 +11,6 @@ mod trailbase_types;
use config::Config;
use state::AppState;
-/// Middleware that sets Cache-Control for preloaded HTMX requests
-async fn cache_control_middleware(request: Request<Body>, next: Next) -> Response<Body> {
- let is_preloaded = request
- .headers()
- .get("HX-Preloaded")
- .map(|v| v == "true")
- .unwrap_or(false);
-
- let mut response = next.run(request).await;
-
- if is_preloaded {
- response.headers_mut().insert(
- "Cache-Control",
- "private, max-age=60".parse().unwrap(),
- );
- }
-
- response
-}
-
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = Config::from_env();
@@ -47,8 +20,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let state = AppState::new(&config);
- let app = routes::create_router(state)
- .layer(middleware::from_fn(cache_control_middleware));
+ let app = routes::create_router(state);
let addr = format!("0.0.0.0:{}", config.port);
let listener = tokio::net::TcpListener::bind(&addr).await?;