diff --git a/src/routes.rs b/src/routes.rs index e9d122f..60a69b4 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -16,6 +16,7 @@ use crate::{ templates, }; +/// Parameters to render the contact form. pub struct ContactFormParams<'a> { config: Arc, captcha_solutions: Arc>, @@ -35,10 +36,9 @@ pub async fn index( persistant_fields: None, error_message: None, }) - .await } -pub async fn render_contact_form(params: ContactFormParams<'_>) -> Result { +pub fn render_contact_form(params: ContactFormParams<'_>) -> Result { let captcha = captcha::by_name(captcha::Difficulty::Easy, captcha::CaptchaName::Lucy); let captcha_base64 = captcha.as_base64().context("Failed to create a captcha!")?; @@ -62,22 +62,6 @@ pub async fn render_contact_form(params: ContactFormParams<'_>) -> Result, - captcha_solutions: Arc>, - error_message: &str, - form: ContactForm, -) -> Result { - let params = ContactFormParams { - config, - captcha_solutions, - persistant_fields: Some(form.persistant_fields), - error_message: Some(error_message), - }; - - render_contact_form(params).await -} - pub async fn submit( State(config): State>, State(captcha_solutions): State>>, @@ -92,13 +76,12 @@ pub async fn submit( if !right_captcha_answer { info!("Wrong CAPTCHA"); - return failed_submission( - Arc::clone(&config), + return render_contact_form(ContactFormParams { + config: Arc::clone(&config), captcha_solutions, - &config.error_messages.captcha_error, - form, - ) - .await; + persistant_fields: Some(form.persistant_fields), + error_message: Some(&config.error_messages.captcha_error), + }); } match mailer @@ -114,20 +97,19 @@ pub async fn submit( Err(e) => { error!("{e:?}"); - return failed_submission( - Arc::clone(&config), + return render_contact_form(ContactFormParams { + config: Arc::clone(&config), captcha_solutions, - &config.error_messages.email_error, - form, - ) - .await; + persistant_fields: Some(form.persistant_fields), + error_message: Some(&config.error_messages.email_error), + }); } } - success(config).await + success(config) } -pub async fn success(config: Arc) -> Result { +pub fn success(config: Arc) -> Result { info!("Successful contact form submission"); let template = templates::Success {