Fix typos

This commit is contained in:
Mo 2023-02-25 21:35:20 +01:00
parent f36f8c7a7c
commit 411f4ee792
5 changed files with 27 additions and 27 deletions

View file

@ -7,13 +7,13 @@ use crate::config::CustomField;
/// Fields of the contact form that persist after a redirection /// Fields of the contact form that persist after a redirection
/// (example after failed server side validation). /// (example after failed server side validation).
#[derive(Deserialize)] #[derive(Deserialize)]
pub struct PersistantFieldContents { pub struct PersistentFieldContents {
pub name: String, pub name: String,
pub email: String, pub email: String,
pub custom: Vec<String>, pub custom: Vec<String>,
} }
impl PersistantFieldContents { impl PersistentFieldContents {
pub fn new_empty(custom_fields: &[CustomField]) -> Self { pub fn new_empty(custom_fields: &[CustomField]) -> Self {
Self { Self {
name: String::default(), name: String::default(),
@ -29,7 +29,7 @@ pub struct ContactForm {
/// The id for the captcha. /// The id for the captcha.
pub id: u16, pub id: u16,
#[serde(flatten)] #[serde(flatten)]
pub persistant_field_contents: PersistantFieldContents, pub persistent_field_contents: PersistentFieldContents,
pub captcha_answer: String, pub captcha_answer: String,
} }
@ -64,7 +64,7 @@ impl ContactForm {
Ok(Self { Ok(Self {
id, id,
persistant_field_contents: PersistantFieldContents { persistent_field_contents: PersistentFieldContents {
name, name,
email, email,
custom, custom,

View file

@ -11,7 +11,7 @@ use tracing::info;
use crate::{ use crate::{
config::{Config, StateConfig}, config::{Config, StateConfig},
forms::PersistantFieldContents, forms::PersistentFieldContents,
}; };
type ASmtpTransport = AsyncSmtpTransport<Tokio1Executor>; type ASmtpTransport = AsyncSmtpTransport<Tokio1Executor>;
@ -66,14 +66,14 @@ impl Mailer {
/// Sends a mail with data from the contact form. /// Sends a mail with data from the contact form.
pub async fn send( pub async fn send(
&self, &self,
persistant_field_contents: &PersistantFieldContents, persistent_field_contents: &PersistentFieldContents,
config: &StateConfig, config: &StateConfig,
) -> Result<()> { ) -> Result<()> {
let name = persistant_field_contents.name.trim().to_string(); let name = persistent_field_contents.name.trim().to_string();
let subject = config.strings.message_from.clone() + &name; let subject = config.strings.message_from.clone() + &name;
let reply_to = Mailbox::new( let reply_to = Mailbox::new(
Some(name), Some(name),
persistant_field_contents persistent_field_contents
.email .email
.parse() .parse()
.context("Failed to parse the email from the form to an address!")?, .context("Failed to parse the email from the form to an address!")?,
@ -82,16 +82,16 @@ impl Mailer {
let default_fields_content = format!( let default_fields_content = format!(
"{}: {}\n\n{}: {}\n\n\n", "{}: {}\n\n{}: {}\n\n\n",
config.strings.name_field.label, config.strings.name_field.label,
persistant_field_contents.name, persistent_field_contents.name,
config.strings.email_field.label, config.strings.email_field.label,
persistant_field_contents.email persistent_field_contents.email
); );
let body = config let body = config
.custom_fields .custom_fields
.iter() .iter()
.map(|field| &field.label) .map(|field| &field.label)
.zip( .zip(
persistant_field_contents persistent_field_contents
.custom .custom
.iter() .iter()
.map(|content| content.trim()), .map(|content| content.trim()),

View file

@ -14,7 +14,7 @@ use crate::{
captcha_solutions::CaptchaSolutions, captcha_solutions::CaptchaSolutions,
config::StateConfig, config::StateConfig,
errors::AppError, errors::AppError,
forms::{ContactForm, PersistantFieldContents}, forms::{ContactForm, PersistentFieldContents},
mailer::Mailer, mailer::Mailer,
templates, templates,
}; };
@ -23,7 +23,7 @@ use crate::{
pub struct ContactFormParams<'a> { pub struct ContactFormParams<'a> {
config: Arc<StateConfig>, config: Arc<StateConfig>,
captcha_solutions: Arc<Mutex<CaptchaSolutions>>, captcha_solutions: Arc<Mutex<CaptchaSolutions>>,
persistant_field_contents: Option<PersistantFieldContents>, persistent_field_contents: Option<PersistentFieldContents>,
error_message: Option<&'a str>, error_message: Option<&'a str>,
} }
@ -43,12 +43,12 @@ pub fn render_contact_form(params: ContactFormParams<'_>) -> Result<Response, Ap
lang: &params.config.lang, lang: &params.config.lang,
path_prefix: &params.config.path_prefix, path_prefix: &params.config.path_prefix,
}, },
was_validated: params.persistant_field_contents.is_some(), was_validated: params.persistent_field_contents.is_some(),
id, id,
// Default is empty fields. // Default is empty fields.
persistant_field_contents: params persistent_field_contents: params
.persistant_field_contents .persistent_field_contents
.unwrap_or_else(|| PersistantFieldContents::new_empty(&params.config.custom_fields)), .unwrap_or_else(|| PersistentFieldContents::new_empty(&params.config.custom_fields)),
captcha: captcha_base64, captcha: captcha_base64,
error_message: params.error_message.unwrap_or_default(), error_message: params.error_message.unwrap_or_default(),
strings: &params.config.strings, strings: &params.config.strings,
@ -68,7 +68,7 @@ pub async fn index(
render_contact_form(ContactFormParams { render_contact_form(ContactFormParams {
config, config,
captcha_solutions, captcha_solutions,
persistant_field_contents: None, persistent_field_contents: None,
error_message: None, error_message: None,
}) })
} }
@ -93,18 +93,18 @@ pub async fn submit(
return render_contact_form(ContactFormParams { return render_contact_form(ContactFormParams {
config: Arc::clone(&config), config: Arc::clone(&config),
captcha_solutions, captcha_solutions,
persistant_field_contents: Some(form.persistant_field_contents), persistent_field_contents: Some(form.persistent_field_contents),
error_message: Some(&config.strings.error_messages.captcha_error), error_message: Some(&config.strings.error_messages.captcha_error),
}); });
} }
if let Err(e) = mailer.send(&form.persistant_field_contents, &config).await { if let Err(e) = mailer.send(&form.persistent_field_contents, &config).await {
error!("{e:?}"); error!("{e:?}");
return render_contact_form(ContactFormParams { return render_contact_form(ContactFormParams {
config: Arc::clone(&config), config: Arc::clone(&config),
captcha_solutions, captcha_solutions,
persistant_field_contents: Some(form.persistant_field_contents), persistent_field_contents: Some(form.persistent_field_contents),
error_message: Some(&config.strings.error_messages.email_error), error_message: Some(&config.strings.error_messages.email_error),
}); });
} }

View file

@ -2,7 +2,7 @@ use askama::Template;
use crate::{ use crate::{
config::{self, CustomField}, config::{self, CustomField},
forms::PersistantFieldContents, forms::PersistentFieldContents,
}; };
/// Base template. /// Base template.
@ -18,14 +18,14 @@ pub struct ContactForm<'a> {
pub base: Base<'a>, pub base: Base<'a>,
pub was_validated: bool, pub was_validated: bool,
pub id: u16, pub id: u16,
pub persistant_field_contents: PersistantFieldContents, pub persistent_field_contents: PersistentFieldContents,
pub captcha: String, pub captcha: String,
pub error_message: &'a str, pub error_message: &'a str,
pub strings: &'a config::Strings, pub strings: &'a config::Strings,
pub custom_fields: &'a Vec<CustomField>, pub custom_fields: &'a Vec<CustomField>,
} }
/// Sucessful contact form submission template. /// Successful contact form submission template.
#[derive(Template)] #[derive(Template)]
#[template(path = "success.askama.html")] #[template(path = "success.askama.html")]
pub struct Success<'a> { pub struct Success<'a> {

View file

@ -16,7 +16,7 @@
<label for="name" class="form-label">{{ strings.name_field.label }}</label> <label for="name" class="form-label">{{ strings.name_field.label }}</label>
<input type="text" <input type="text"
name="name" name="name"
value="{{ persistant_field_contents.name }}" value="{{ persistent_field_contents.name }}"
class="form-control" class="form-control"
id="exampleInputEmail1" id="exampleInputEmail1"
required> required>
@ -26,7 +26,7 @@
<label for="email" class="form-label">{{ strings.email_field.label }}</label> <label for="email" class="form-label">{{ strings.email_field.label }}</label>
<input type="email" <input type="email"
name="email" name="email"
value="{{ persistant_field_contents.email }}" value="{{ persistent_field_contents.email }}"
class="form-control" class="form-control"
id="email" id="email"
required> required>
@ -35,7 +35,7 @@
{% for custom_field in custom_fields %} {% for custom_field in custom_fields %}
<div class="mb-3"> <div class="mb-3">
{% let value = persistant_field_contents.custom[loop.index0] %} {% let value = persistent_field_contents.custom[loop.index0] %}
{% let required = custom_field.required_feedback.is_some() %} {% let required = custom_field.required_feedback.is_some() %}
<label for="{{ custom_field.key }}" class="form-label">{{ custom_field.label }}</label> <label for="{{ custom_field.key }}" class="form-label">{{ custom_field.label }}</label>