diff --git a/src/routes/admin.rs b/src/routes/admin.rs
index d56ee22..793f8b0 100644
--- a/src/routes/admin.rs
+++ b/src/routes/admin.rs
@@ -4,7 +4,7 @@ mod logout;
mod newsletters;
mod posts;
-use crate::{routes::error_chain_fmt, templates::ErrorTemplate};
+use crate::{routes::error_chain_fmt, templates::MessageTemplate};
use askama::Template;
use axum::{
Json,
@@ -20,7 +20,7 @@ use reqwest::StatusCode;
#[derive(thiserror::Error)]
pub enum AdminError {
- #[error("Something went wrong.")]
+ #[error("Something went wrong while performing an admin action.")]
UnexpectedError(#[from] anyhow::Error),
#[error("Trying to access admin dashboard without authentication.")]
NotAuthenticated,
@@ -62,14 +62,14 @@ impl IntoResponse for AdminError {
(StatusCode::SEE_OTHER, headers).into_response()
}
AdminError::ChangePassword(e) => {
- let template = ErrorTemplate {
- error_message: e.to_owned(),
+ let template = MessageTemplate::Error {
+ message: e.to_owned(),
};
Html(template.render().unwrap()).into_response()
}
AdminError::Publish(e) => {
- let template = ErrorTemplate {
- error_message: e.to_string(),
+ let template = MessageTemplate::Error {
+ message: e.to_string(),
};
Html(template.render().unwrap()).into_response()
}
diff --git a/src/routes/admin/change_password.rs b/src/routes/admin/change_password.rs
index 6e73354..d4ff9cd 100644
--- a/src/routes/admin/change_password.rs
+++ b/src/routes/admin/change_password.rs
@@ -2,7 +2,7 @@ use crate::{
authentication::{self, AuthenticatedUser, Credentials, validate_credentials},
routes::AdminError,
startup::AppState,
- templates::SuccessTemplate,
+ templates::MessageTemplate,
};
use askama::Template;
use axum::{
@@ -47,8 +47,8 @@ pub async fn change_password(
authentication::change_password(user_id, form.new_password, &connection_pool)
.await
.map_err(|e| AdminError::ChangePassword(e.to_string()))?;
- let template = SuccessTemplate {
- success_message: "Your password has been changed.".to_string(),
+ let template = MessageTemplate::Success {
+ message: "Your password has been changed.".to_string(),
};
Ok(Html(template.render().unwrap()).into_response())
}
diff --git a/src/routes/admin/newsletters.rs b/src/routes/admin/newsletters.rs
index a90e02e..62190f7 100644
--- a/src/routes/admin/newsletters.rs
+++ b/src/routes/admin/newsletters.rs
@@ -3,7 +3,7 @@ use crate::{
idempotency::{IdempotencyKey, save_response, try_processing},
routes::AdminError,
startup::AppState,
- templates::SuccessTemplate,
+ templates::MessageTemplate,
};
use anyhow::Context;
use askama::Template;
@@ -98,11 +98,11 @@ pub async fn publish_newsletter(
.await
.context("Failed to enqueue delivery tasks.")?;
- let success_message = format!(
+ let message = format!(
r#"The newsletter issue "{}" has been published!"#,
form.title
);
- let template = SuccessTemplate { success_message };
+ let template = MessageTemplate::Success { message };
let response = Html(template.render().unwrap()).into_response();
save_response(transaction, &idempotency_key, user_id, response)
.await
diff --git a/src/routes/admin/posts.rs b/src/routes/admin/posts.rs
index 2d2d3d0..549376d 100644
--- a/src/routes/admin/posts.rs
+++ b/src/routes/admin/posts.rs
@@ -3,7 +3,7 @@ use crate::{
idempotency::{IdempotencyKey, save_response, try_processing},
routes::{AdminError, enqueue_delivery_tasks, insert_newsletter_issue},
startup::AppState,
- templates::SuccessTemplate,
+ templates::MessageTemplate,
};
use anyhow::Context;
use askama::Template;
@@ -68,8 +68,8 @@ pub async fn create_post(
// Send emails with unique identifiers that contains link to blog post with special param
// Get handpoint that returns the post and mark the email as opened
- let template = SuccessTemplate {
- success_message: "Your new post has been saved. Subscribers will be notified.".into(),
+ let template = MessageTemplate::Success {
+ message: "Your new post has been saved. Subscribers will be notified.".into(),
};
let response = Html(template.render().unwrap()).into_response();
save_response(transaction, &idempotency_key, user_id, response)
diff --git a/src/routes/login.rs b/src/routes/login.rs
index 7f8b588..78cb367 100644
--- a/src/routes/login.rs
+++ b/src/routes/login.rs
@@ -3,7 +3,7 @@ use crate::{
routes::error_chain_fmt,
session_state::TypedSession,
startup::AppState,
- templates::ErrorTemplate,
+ templates::MessageTemplate,
};
use askama::Template;
use axum::{
@@ -47,8 +47,8 @@ impl IntoResponse for LoginError {
)
.into_response(),
LoginError::AuthError(e) => {
- let template = ErrorTemplate {
- error_message: e.to_string(),
+ let template = MessageTemplate::Error {
+ message: e.to_string(),
};
Html(template.render().unwrap()).into_response()
}
diff --git a/src/routes/subscriptions.rs b/src/routes/subscriptions.rs
index 4fd5966..e4d60ed 100644
--- a/src/routes/subscriptions.rs
+++ b/src/routes/subscriptions.rs
@@ -2,7 +2,7 @@ use crate::{
domain::{NewSubscriber, SubscriberEmail},
email_client::EmailClient,
startup::AppState,
- templates::{ErrorTemplate, SuccessTemplate},
+ templates::MessageTemplate,
};
use anyhow::Context;
use askama::Template;
@@ -74,7 +74,7 @@ impl IntoResponse for SubscribeError {
)
.into_response(),
SubscribeError::ValidationError(e) => {
- let template = ErrorTemplate { error_message: e };
+ let template = MessageTemplate::Error { message: e };
Html(template.render().unwrap()).into_response()
}
}
@@ -126,8 +126,8 @@ pub async fn subscribe(
.commit()
.await
.context("Failed to commit the database transaction to store a new subscriber.")?;
- let template = SuccessTemplate {
- success_message: "A confirmation email has been sent.".to_string(),
+ let template = MessageTemplate::Success {
+ message: "A confirmation email has been sent.".to_string(),
};
Ok(Html(template.render().unwrap()).into_response())
}
diff --git a/src/templates.rs b/src/templates.rs
index 3112ff8..5c12bc2 100644
--- a/src/templates.rs
+++ b/src/templates.rs
@@ -1,13 +1,9 @@
use askama::Template;
#[derive(Template)]
-#[template(path = "../templates/success.html")]
-pub struct SuccessTemplate {
- pub success_message: String,
-}
-
-#[derive(Template)]
-#[template(path = "../templates/error.html")]
-pub struct ErrorTemplate {
- pub error_message: String,
+pub enum MessageTemplate {
+ #[template(path = "../templates/success.html")]
+ Success { message: String },
+ #[template(path = "../templates/error.html")]
+ Error { message: String },
}
diff --git a/templates/error.html b/templates/error.html
index fcbcc87..3275f3e 100644
--- a/templates/error.html
+++ b/templates/error.html
@@ -4,6 +4,6 @@
- {{ error_message }}
+ {{ message }}
diff --git a/templates/success.html b/templates/success.html
index 6dd9bbf..895cc87 100644
--- a/templates/success.html
+++ b/templates/success.html
@@ -4,6 +4,6 @@
- {{ success_message }}
+ {{ message }}