From 6ef2a598f0d0e339bca5c157183cbcdc737a4295 Mon Sep 17 00:00:00 2001 From: angrynode Date: Fri, 14 Nov 2025 15:01:19 +0100 Subject: [PATCH 1/2] refactor: Remove category_form from IndexTemplate --- src/routes/index.rs | 4 ---- templates/categories/form.html | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/routes/index.rs b/src/routes/index.rs index c154797..1c2f328 100644 --- a/src/routes/index.rs +++ b/src/routes/index.rs @@ -7,7 +7,6 @@ use snafu::prelude::*; // TUTORIAL: https://github.com/SeaQL/sea-orm/blob/master/examples/axum_example/ use crate::database::category::CategoryOperator; use crate::extractors::user::User; -use crate::routes::category::CategoryForm; use crate::state::{AppState, AppStateContext, error::*}; use std::collections::HashMap; @@ -26,8 +25,6 @@ pub struct IndexTemplate { pub user: Option, /// Categories pub categories: Vec, - /// Category Form Data - pub category_form: Option, } pub async fn index( @@ -49,7 +46,6 @@ pub async fn index( post: HashMap::new(), user, categories, - category_form: None, } .into_response()) } diff --git a/templates/categories/form.html b/templates/categories/form.html index 6fa0999..04109fe 100644 --- a/templates/categories/form.html +++ b/templates/categories/form.html @@ -7,7 +7,10 @@ placeholder="Ex: Movies" name="name" id="name" + {# This is not defined in the homepage modal, when no categories have been created yet #} + {% if category_form is defined %} {% if let Some(category_form) = category_form %} value="{{ category_form.name }}" {% endif %} + {% endif %} /> @@ -19,7 +22,9 @@ placeholder="Ex: /mnt/MyBigHdd/DATA" name="path" id="path" + {% if category_form is defined %} {% if let Some(category_form) = category_form %} value="{{ category_form.path}}" {% endif %} + {% endif %} /> From f499734003151f65a0ae070e50ed4bb033943011 Mon Sep 17 00:00:00 2001 From: angrynode Date: Fri, 14 Nov 2025 15:05:04 +0100 Subject: [PATCH 2/2] feat: Add IndexTemplate constructor and remove unused fields --- src/routes/index.rs | 46 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/src/routes/index.rs b/src/routes/index.rs index 1c2f328..62e83d4 100644 --- a/src/routes/index.rs +++ b/src/routes/index.rs @@ -1,7 +1,6 @@ use askama::Template; use askama_web::WebTemplate; use axum::extract::State; -use axum::response::{IntoResponse, Response}; use snafu::prelude::*; // TUTORIAL: https://github.com/SeaQL/sea-orm/blob/master/examples/axum_example/ @@ -9,43 +8,38 @@ use crate::database::category::CategoryOperator; use crate::extractors::user::User; use crate::state::{AppState, AppStateContext, error::*}; -use std::collections::HashMap; - #[derive(Template, WebTemplate)] #[template(path = "index.html")] pub struct IndexTemplate { /// Global application state (errors/warnings) pub state: AppStateContext, - /// TODO: Submitted values in a POST request - /// - /// This happens when the request was rejected by the handler, but still - /// wants to repopulate form data from submitted values. - pub post: HashMap, /// Logged-in user. pub user: Option, /// Categories pub categories: Vec, } +impl IndexTemplate { + pub async fn new(app_state: AppState, user: Option) -> Result { + let categories: Vec = CategoryOperator::new(app_state.clone(), user.clone()) + .list() + .await + .context(CategorySnafu)? + .into_iter() + .map(|x| x.name) + .collect(); + + Ok(IndexTemplate { + state: app_state.context().await?, + user, + categories, + }) + } +} + pub async fn index( State(app_state): State, user: Option, -) -> Result { - let app_state_context = app_state.context().await?; - - let categories: Vec = CategoryOperator::new(app_state.clone(), user.clone()) - .list() - .await - .context(CategorySnafu)? - .into_iter() - .map(|x| x.name) - .collect(); - - Ok(IndexTemplate { - state: app_state_context, - post: HashMap::new(), - user, - categories, - } - .into_response()) +) -> Result { + IndexTemplate::new(app_state, user).await }