diff --git a/backend/scss/main.scss b/backend/scss/main.scss index b8398cb..c890dc3 100644 --- a/backend/scss/main.scss +++ b/backend/scss/main.scss @@ -73,9 +73,6 @@ body { margin: consts.$margin; } - // .create-recipe { - // } - #select-website-language { margin: consts.$margin; padding: consts.$margin; diff --git a/backend/src/html_templates.rs b/backend/src/html_templates.rs index 4e71a2b..f946d0c 100644 --- a/backend/src/html_templates.rs +++ b/backend/src/html_templates.rs @@ -2,7 +2,7 @@ use askama::Template; use crate::{ Context, - data::model, + data::{db, model}, translation::{self, Sentence, Tr}, }; @@ -13,6 +13,24 @@ pub struct Recipes { } impl Recipes { + pub async fn new( + connection: db::Connection, + user: &Option, + lang: &str, + ) -> Result { + Ok(Recipes { + public: connection + .get_all_public_recipe_titles(lang, user.as_ref().map(|u| u.id)) + .await?, + private: if let Some(user) = user { + connection.get_all_private_recipe_titles(user.id).await? + } else { + vec![] + }, + current_id: None, + }) + } + pub fn is_current(&self, id: &&i64) -> bool { self.current_id == Some(**id) } diff --git a/backend/src/services/fragments.rs b/backend/src/services/fragments.rs index a7f440c..e89822b 100644 --- a/backend/src/services/fragments.rs +++ b/backend/src/services/fragments.rs @@ -20,21 +20,12 @@ pub async fn recipes_list_fragments( current_recipe: Query, Extension(context): Extension, ) -> Result { - let recipes = Recipes { - public: connection - .get_all_public_recipe_titles( - context.tr.current_lang_code(), - context.user.as_ref().map(|u| u.id), - ) - .await?, - private: if let Some(user) = context.user.as_ref() { - connection.get_all_private_recipe_titles(user.id).await? - } else { - vec![] - }, - current_id: current_recipe.current_recipe_id, - }; Ok(Html( - RecipesListFragmentTemplate { context, recipes }.render()?, + RecipesListFragmentTemplate { + recipes: Recipes::new(connection, &context.user, context.tr.current_lang_code()) + .await?, + context, + } + .render()?, )) } diff --git a/backend/src/services/mod.rs b/backend/src/services/mod.rs index d303423..138d1f9 100644 --- a/backend/src/services/mod.rs +++ b/backend/src/services/mod.rs @@ -50,22 +50,31 @@ pub async fn home_page( State(connection): State, Extension(context): Extension, ) -> Result { - let recipes = Recipes { - public: connection - .get_all_public_recipe_titles( - context.tr.current_lang_code(), - context.user.as_ref().map(|u| u.id), - ) - .await?, - private: if let Some(user) = context.user.as_ref() { - connection.get_all_private_recipe_titles(user.id).await? - } else { - vec![] - }, - current_id: None, - }; + Ok(Html( + HomeTemplate { + recipes: Recipes::new(connection, &context.user, context.tr.current_lang_code()) + .await?, + context, + } + .render()?, + )) +} - Ok(Html(HomeTemplate { context, recipes }.render()?)) +///// DEV_PANEL ///// + +#[debug_handler] +pub async fn dev_panel( + State(connection): State, + Extension(context): Extension, +) -> Result { + Ok(Html( + HomeTemplate { + recipes: Recipes::new(connection, &context.user, context.tr.current_lang_code()) + .await?, + context, + } + .render()?, + )) } ///// 404 ///// diff --git a/backend/src/services/recipe.rs b/backend/src/services/recipe.rs index 02116f7..017825d 100644 --- a/backend/src/services/recipe.rs +++ b/backend/src/services/recipe.rs @@ -43,20 +43,15 @@ pub async fn edit( if let Some(ref user) = context.user { if let Some(recipe) = connection.get_recipe(recipe_id, false).await? { if model::can_user_edit_recipe(user, &recipe) { - let recipes = Recipes { - public: connection - .get_all_public_recipe_titles(context.tr.current_lang_code(), Some(user.id)) - .await?, - private: connection - .get_all_private_recipe_titles(user.id) - .await?, - current_id: Some(recipe_id), - }; - Ok(Html( RecipeEditTemplate { + recipes: Recipes::new( + connection, + &context.user, + context.tr.current_lang_code(), + ) + .await?, context, - recipes, recipe, } .render()?, @@ -111,27 +106,15 @@ pub async fn view( .into_response()); } - let recipes = Recipes { - public: connection - .get_all_public_recipe_titles( - context.tr.current_lang_code(), - context.user.as_ref().map(|u| u.id), - ) - .await?, - private: if let Some(user) = context.user.as_ref() { - connection - .get_all_private_recipe_titles(user.id) - .await? - } else { - vec![] - }, - current_id: Some(recipe_id), - }; - Ok(Html( RecipeViewTemplate { + recipes: Recipes::new( + connection, + &context.user, + context.tr.current_lang_code(), + ) + .await?, context, - recipes, recipe, } .render()?,