Refactor MessageTemplate initialization to use Context directly instead of Tr and user parameters

This commit is contained in:
Greg Burri 2025-04-30 11:26:53 +02:00
parent c8e0aa918c
commit 710a134966
4 changed files with 49 additions and 151 deletions

View file

@ -4,7 +4,7 @@ use crate::{
app::Context, app::Context,
data::{db, model}, data::{db, model},
log::Log, log::Log,
translation::{self, Sentence, Tr}, translation::{self, Sentence},
}; };
pub struct Recipes { pub struct Recipes {
@ -84,29 +84,9 @@ pub struct MessageTemplate<'a> {
} }
impl<'a> MessageTemplate<'a> { impl<'a> MessageTemplate<'a> {
pub fn new(message: &'a str, tr: Tr) -> MessageTemplate<'a> { pub fn new(message: &'a str, context: Context) -> MessageTemplate<'a> {
MessageTemplate { MessageTemplate {
context: Context { context,
user: None,
tr,
dark_theme: false,
},
message,
as_code: false,
}
}
pub fn new_with_user(
message: &'a str,
tr: Tr,
user: Option<model::User>,
) -> MessageTemplate<'a> {
MessageTemplate {
context: Context {
user,
tr,
dark_theme: false,
},
message, message,
as_code: false, as_code: false,
} }

View file

@ -98,14 +98,7 @@ pub async fn dev_panel(
} else { } else {
Ok(( Ok((
StatusCode::UNAUTHORIZED, StatusCode::UNAUTHORIZED,
Html( Html(MessageTemplate::new(consts::NOT_AUTHORIZED_MESSAGE, context).render()?),
MessageTemplate::new_with_user(
consts::NOT_AUTHORIZED_MESSAGE,
context.tr,
context.user,
)
.render()?,
),
) )
.into_response()) .into_response())
} }
@ -152,14 +145,7 @@ pub async fn logs(
} else { } else {
Ok(( Ok((
StatusCode::UNAUTHORIZED, StatusCode::UNAUTHORIZED,
Html( Html(MessageTemplate::new(consts::NOT_AUTHORIZED_MESSAGE, context).render()?),
MessageTemplate::new_with_user(
consts::NOT_AUTHORIZED_MESSAGE,
context.tr,
context.user,
)
.render()?,
),
) )
.into_response()) .into_response())
} }
@ -171,6 +157,6 @@ pub async fn logs(
pub async fn not_found(Extension(context): Extension<Context>) -> Result<impl IntoResponse> { pub async fn not_found(Extension(context): Extension<Context>) -> Result<impl IntoResponse> {
Ok(( Ok((
StatusCode::NOT_FOUND, StatusCode::NOT_FOUND,
Html(MessageTemplate::new_with_user("404: Not found", context.tr, context.user).render()?), Html(MessageTemplate::new("404: Not found", context).render()?),
)) ))
} }

View file

@ -27,7 +27,7 @@ pub async fn create(
.into_response()) .into_response())
} else { } else {
Ok( Ok(
Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context.tr).render()?) Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context).render()?)
.into_response(), .into_response(),
) )
} }
@ -59,24 +59,20 @@ pub async fn edit(
.into_response()) .into_response())
} else { } else {
Ok(Html( Ok(Html(
MessageTemplate::new( MessageTemplate::new(context.tr.t(Sentence::RecipeNotAllowedToEdit), context)
context.tr.t(Sentence::RecipeNotAllowedToEdit), .render()?,
context.tr,
)
.render()?,
) )
.into_response()) .into_response())
} }
} else { } else {
Ok(Html( Ok(Html(
MessageTemplate::new(context.tr.t(Sentence::RecipeNotFound), context.tr) MessageTemplate::new(context.tr.t(Sentence::RecipeNotFound), context).render()?,
.render()?,
) )
.into_response()) .into_response())
} }
} else { } else {
Ok( Ok(
Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context.tr).render()?) Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context).render()?)
.into_response(), .into_response(),
) )
} }
@ -94,12 +90,11 @@ pub async fn view(
&& (context.user.is_none() || recipe.user_id != context.user.as_ref().unwrap().id) && (context.user.is_none() || recipe.user_id != context.user.as_ref().unwrap().id)
{ {
return Ok(Html( return Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(
&context &context
.tr .tr
.tp(Sentence::RecipeNotAllowedToView, &[Box::new(recipe_id)]), .tp(Sentence::RecipeNotAllowedToView, &[Box::new(recipe_id)]),
context.tr, context,
context.user,
) )
.render()?, .render()?,
) )
@ -123,12 +118,7 @@ pub async fn view(
.into_response()) .into_response())
} }
None => Ok(Html( None => Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::RecipeNotFound), context).render()?,
context.tr.t(Sentence::RecipeNotFound),
context.tr,
context.user,
)
.render()?,
) )
.into_response()), .into_response()),
} }

View file

@ -52,15 +52,10 @@ pub async fn sign_up_get(
) )
.into_response()) .into_response())
} else { } else {
Ok(Html( Ok(
MessageTemplate::new_with_user( Html(MessageTemplate::new(context.tr.t(Sentence::SignUpClosed), context).render()?)
context.tr.t(Sentence::SignUpClosed), .into_response(),
context.tr,
context.user,
)
.render()?,
) )
.into_response())
} }
} }
@ -130,12 +125,7 @@ pub async fn sign_up_post(
if !connection.get_new_user_registration_enabled().await? { if !connection.get_new_user_registration_enabled().await? {
return Ok(Html( return Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::SignUpClosed), context).render()?,
context.tr.t(Sentence::SignUpClosed),
context.tr,
context.user,
)
.render()?,
) )
.into_response()); .into_response());
} }
@ -186,12 +176,8 @@ pub async fn sign_up_post(
.await .await
{ {
Ok(()) => Ok(Html( Ok(()) => Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::SignUpEmailSent), context)
context.tr.t(Sentence::SignUpEmailSent), .render()?,
context.tr,
context.user,
)
.render()?,
) )
.into_response()), .into_response()),
Err(_) => error_response(SignUpError::UnableSendEmail, &form_data, context), Err(_) => error_response(SignUpError::UnableSendEmail, &form_data, context),
@ -218,12 +204,8 @@ pub async fn sign_up_validation(
return Ok(( return Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::ValidationUserAlreadyExists), context)
context.tr.t(Sentence::ValidationUserAlreadyExists), .render()?,
context.tr,
context.user,
)
.render()?,
), ),
)); ));
} }
@ -248,10 +230,9 @@ pub async fn sign_up_validation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::SignUpEmailValidationSuccess), context.tr.t(Sentence::SignUpEmailValidationSuccess),
context.tr, Context { user, ..context },
user,
) )
.render()?, .render()?,
), ),
@ -262,10 +243,9 @@ pub async fn sign_up_validation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::SignUpValidationExpired), context.tr.t(Sentence::SignUpValidationExpired),
context.tr, context,
context.user,
) )
.render()?, .render()?,
), ),
@ -276,10 +256,9 @@ pub async fn sign_up_validation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::SignUpValidationErrorTryAgain), context.tr.t(Sentence::SignUpValidationErrorTryAgain),
context.tr, context,
context.user,
) )
.render()?, .render()?,
), ),
@ -292,12 +271,8 @@ pub async fn sign_up_validation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::ValidationError), context)
context.tr.t(Sentence::ValidationError), .render()?,
context.tr,
context.user,
)
.render()?,
), ),
)) ))
} }
@ -414,10 +389,9 @@ pub async fn sign_out(
pub async fn ask_reset_password_get(Extension(context): Extension<Context>) -> Result<Response> { pub async fn ask_reset_password_get(Extension(context): Extension<Context>) -> Result<Response> {
if context.user.is_some() { if context.user.is_some() {
Ok(Html( Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::AskResetAlreadyLoggedInError), context.tr.t(Sentence::AskResetAlreadyLoggedInError),
context.tr, context,
context.user,
) )
.render()?, .render()?,
) )
@ -532,12 +506,8 @@ pub async fn ask_reset_password_post(
.await .await
{ {
Ok(()) => Ok(Html( Ok(()) => Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::AskResetEmailSent), context)
context.tr.t(Sentence::AskResetEmailSent), .render()?,
context.tr,
context.user,
)
.render()?,
) )
.into_response()), .into_response()),
Err(_) => { Err(_) => {
@ -588,23 +558,14 @@ pub async fn reset_password_get(
.into_response()) .into_response())
} else { } else {
Ok(Html( Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::AskResetTokenMissing), context)
context.tr.t(Sentence::AskResetTokenMissing), .render()?,
context.tr,
context.user,
)
.render()?,
) )
.into_response()) .into_response())
} }
} else { } else {
Ok(Html( Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::AskResetTokenMissing), context).render()?,
context.tr.t(Sentence::AskResetTokenMissing),
context.tr,
context.user,
)
.render()?,
) )
.into_response()) .into_response())
} }
@ -692,12 +653,7 @@ pub async fn reset_password_post(
.await .await
{ {
Ok(db::user::ResetPasswordResult::Ok) => Ok(Html( Ok(db::user::ResetPasswordResult::Ok) => Ok(Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::PasswordReset), context).render()?,
context.tr.t(Sentence::PasswordReset),
context.tr,
context.user,
)
.render()?,
) )
.into_response()), .into_response()),
Ok(db::user::ResetPasswordResult::ResetTokenExpired) => { Ok(db::user::ResetPasswordResult::ResetTokenExpired) => {
@ -726,7 +682,7 @@ pub async fn edit_user_get(Extension(context): Extension<Context>) -> Result<Res
) )
.into_response() .into_response()
} else { } else {
Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context.tr).render()?) Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context).render()?)
.into_response() .into_response()
}) })
} }
@ -904,7 +860,7 @@ pub async fn edit_user_post(
.into_response()) .into_response())
} else { } else {
Ok( Ok(
Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context.tr).render()?) Html(MessageTemplate::new(context.tr.t(Sentence::NotLoggedIn), context).render()?)
.into_response(), .into_response(),
) )
} }
@ -923,12 +879,8 @@ pub async fn email_revalidation(
return Ok(( return Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(context.tr.t(Sentence::ValidationUserAlreadyExists), context)
context.tr.t(Sentence::ValidationUserAlreadyExists), .render()?,
context.tr,
context.user,
)
.render()?,
), ),
)); ));
} }
@ -953,10 +905,9 @@ pub async fn email_revalidation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::ValidationSuccessful), context.tr.t(Sentence::ValidationSuccessful),
context.tr, Context { user, ..context },
user,
) )
.render()?, .render()?,
), ),
@ -967,10 +918,9 @@ pub async fn email_revalidation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::ValidationExpired), context.tr.t(Sentence::ValidationExpired),
context.tr, context,
context.user,
) )
.render()?, .render()?,
), ),
@ -981,10 +931,9 @@ pub async fn email_revalidation(
Ok(( Ok((
jar, jar,
Html( Html(
MessageTemplate::new_with_user( MessageTemplate::new(
context.tr.t(Sentence::ValidationErrorTryToSignUpAgain), context.tr.t(Sentence::ValidationErrorTryToSignUpAgain),
context.tr, context,
context.user,
) )
.render()?, .render()?,
), ),
@ -994,14 +943,7 @@ pub async fn email_revalidation(
} }
None => Ok(( None => Ok((
jar, jar,
Html( Html(MessageTemplate::new(context.tr.t(Sentence::ValidationError), context).render()?),
MessageTemplate::new_with_user(
context.tr.t(Sentence::ValidationError),
context.tr,
context.user,
)
.render()?,
),
)), )),
} }
} }