diff --git a/src/game.rs b/src/game.rs index e04eaab..8c2c65b 100644 --- a/src/game.rs +++ b/src/game.rs @@ -10,7 +10,7 @@ use axum::{ routing::{get, post}, Form, Router, }; -use axum_extra::extract::PrivateCookieJar; +use axum_extra::extract::{CookieJar, PrivateCookieJar}; use maud::{html, Markup, PreEscaped}; use serde::Deserialize; use std::sync::Arc; @@ -19,18 +19,20 @@ use uuid::Uuid; async fn index( State(backend): State>, cookies: PrivateCookieJar, + lang_cookies: CookieJar, headers: HeaderMap, ) -> Response { - retu(backend, cookies, headers, None).await + retu(backend, cookies, lang_cookies, headers, None).await } async fn retu( backend: Arc, cookies: PrivateCookieJar, + lang_cookies: CookieJar, headers: HeaderMap, message: Option, ) -> Response { - let (cookies, req) = backend.client_full(cookies, &headers).await; + let (cookies, req) = backend.client_full(cookies, &lang_cookies, &headers).await; let client = req.client; rust_i18n::set_locale(&req.lang.to_string()); @@ -107,19 +109,20 @@ async fn retu( async fn game( State(backend): State>, cookies: PrivateCookieJar, + lang_cookies: CookieJar, headers: HeaderMap, Path(uuid): Path, ) -> Response { - let (cookies, req) = backend.client_full(cookies, &headers).await; + let (cookies, req) = backend.client_full(cookies, &lang_cookies, &headers).await; let client = req.client; rust_i18n::set_locale(req.lang.to_locale()); let Ok(uuid) = Uuid::parse_str(&uuid) else { - return not_found(cookies, headers).await.into_response(); + return not_found(lang_cookies, headers).await.into_response(); }; let Some(camera) = backend.get_camera(&uuid).await else { - return not_found(cookies, headers).await.into_response(); + return not_found(lang_cookies, headers).await.into_response(); }; let message = if let Ok(number) = backend.client_found_camera(&client, &camera).await { @@ -132,10 +135,10 @@ async fn game( ) }; - retu(backend, cookies, headers, Some(message)).await + retu(backend, cookies, lang_cookies, headers, Some(message)).await } -async fn not_found(cookies: PrivateCookieJar, headers: HeaderMap) -> Markup { +async fn not_found(cookies: CookieJar, headers: HeaderMap) -> Markup { let lang = language(&cookies, &headers); Page::new(lang).content(html! { h1 { (t!("not_found_title")) } @@ -150,10 +153,11 @@ struct NameForm { async fn set_name( State(backend): State>, cookies: PrivateCookieJar, + lang_cookies: CookieJar, headers: HeaderMap, Form(form): Form, ) -> Response { - let (cookies, req) = backend.client_full(cookies, &headers).await; + let (cookies, req) = backend.client_full(cookies, &lang_cookies, &headers).await; let client = req.client; rust_i18n::set_locale(req.lang.to_locale()); @@ -176,7 +180,7 @@ async fn set_name( ), }; - retu(backend, cookies, headers, Some(message)).await + retu(backend, cookies, lang_cookies, headers, Some(message)).await } pub(super) fn routes() -> Router { diff --git a/src/index.rs b/src/index.rs index 1ab1fcb..a8d7a60 100644 --- a/src/index.rs +++ b/src/index.rs @@ -1,9 +1,9 @@ use crate::{language::language, page::Page}; use axum::http::HeaderMap; -use axum_extra::extract::PrivateCookieJar; +use axum_extra::extract::CookieJar; use maud::{html, Markup, PreEscaped}; -pub(super) async fn index(cookies: PrivateCookieJar, headers: HeaderMap) -> Markup { +pub(super) async fn index(cookies: CookieJar, headers: HeaderMap) -> Markup { let lang = language(&cookies, &headers); rust_i18n::set_locale(lang.to_locale()); diff --git a/src/language.rs b/src/language.rs index 71f44d8..f30f1da 100644 --- a/src/language.rs +++ b/src/language.rs @@ -1,8 +1,8 @@ use crate::Language; use axum::http::HeaderMap; -use axum_extra::extract::PrivateCookieJar; +use axum_extra::extract::CookieJar; -pub(crate) fn language(cookies: &PrivateCookieJar, headers: &HeaderMap) -> Language { +pub(crate) fn language(cookies: &CookieJar, headers: &HeaderMap) -> Language { if let Some(lang_cookie) = cookies.clone().get("language") { // Return existing language cookie lang_cookie.value().to_string().into() diff --git a/src/main.rs b/src/main.rs index 5189258..9ab2d39 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,7 @@ use crate::model::client::Client; use axum::{http::HeaderMap, routing::get, Router}; use axum_extra::extract::{ cookie::{Cookie, Expiration, Key}, - PrivateCookieJar, + CookieJar, PrivateCookieJar, }; use serde::{Deserialize, Serialize}; use sqlx::{pool::PoolOptions, sqlite::SqliteConnectOptions, SqlitePool}; @@ -172,10 +172,11 @@ impl Backend { async fn client_full( &self, cookies: PrivateCookieJar, + lang_cookies: &CookieJar, headers: &HeaderMap, ) -> (PrivateCookieJar, Req) { let (cookies, client) = self.client(cookies).await; - let lang = language::language(&cookies, headers); + let lang = language::language(&lang_cookies, headers); (cookies, Req { client, lang }) }