use actix_web::{web, HttpResponse}; use mime_guess2::MimeGuess; pub async fn serve_frontend(path: web::Path) -> HttpResponse { let path = path.into_inner(); let path = if path.is_empty() || path == "/" { "index.html" } else { &path }; match frontend::get_frontend_asset(path) { Some(data) => { let mime = MimeGuess::from_path(path).first_or_octet_stream(); HttpResponse::Ok() .content_type(mime.as_ref()) .body(data.to_vec()) } None => { // Fallback to index.html for SPA routing match frontend::get_frontend_asset("index.html") { Some(data) => HttpResponse::Ok() .content_type("text/html") .body(data.to_vec()), None => HttpResponse::NotFound().finish(), } } } }