Dispaly a user message when a recipe is successfully deleted
This commit is contained in:
parent
d86c8ab6fe
commit
ec36391ec8
6 changed files with 182 additions and 166 deletions
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
* Rust: https://www.rust-lang.org/
|
* Rust: https://www.rust-lang.org/
|
||||||
* Trunk: https://trunkrs.dev/
|
* Trunk: https://trunkrs.dev/
|
||||||
* Nushell: https://www.nushell.sh/ (*nu* need to be in *PATH*)
|
* Nushell: https://www.nushell.sh/ (*nu* needs to be in *PATH*)
|
||||||
* Sass: https://sass-lang.com/ (*sass* or *sass.bat* need to be in *PATH*)
|
* Sass: https://sass-lang.com/ (*sass* or *sass.bat* needs to be in *PATH*)
|
||||||
|
|
||||||
# Run in debug mode
|
# Run in debug mode
|
||||||
|
|
||||||
|
|
@ -13,7 +13,8 @@
|
||||||
|
|
||||||
Then browse http://127.0.0.1:8082
|
Then browse http://127.0.0.1:8082
|
||||||
|
|
||||||
At first launch the configuration file `backend/conf.ron` is created. It contains the port the server will listen to and information about the SMTP server which will be used to send email when a user sign up or change its password.
|
At first launch the configuration file `backend/conf.ron` is created.
|
||||||
|
It contains the port the server will listen to and information about the SMTP server which will be used to send email when a user sign up or change its password.
|
||||||
|
|
||||||
## Autoreload
|
## Autoreload
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
use std::{borrow::Borrow, fs::File, sync::LazyLock};
|
use std::{borrow::Borrow, fs::File, sync::LazyLock};
|
||||||
|
|
||||||
use chrono::Weekday;
|
use chrono::Weekday;
|
||||||
|
pub use common::translation::Sentence;
|
||||||
use common::utils;
|
use common::utils;
|
||||||
use ron::de::from_reader;
|
use ron::de::from_reader;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
@ -9,164 +10,6 @@ use tracing::warn;
|
||||||
|
|
||||||
use crate::consts;
|
use crate::consts;
|
||||||
|
|
||||||
#[repr(i64)]
|
|
||||||
#[derive(Debug, Clone, EnumCount, Deserialize)]
|
|
||||||
pub enum Sentence {
|
|
||||||
MainTitle = 0,
|
|
||||||
CreateNewRecipe,
|
|
||||||
PrivateRecipes,
|
|
||||||
UntitledRecipe,
|
|
||||||
|
|
||||||
Name,
|
|
||||||
EmailAddress,
|
|
||||||
Password,
|
|
||||||
|
|
||||||
SignOut,
|
|
||||||
Save,
|
|
||||||
NotLoggedIn,
|
|
||||||
|
|
||||||
ActionNotAuthorized,
|
|
||||||
|
|
||||||
DatabaseError,
|
|
||||||
TemplateError,
|
|
||||||
|
|
||||||
// Sign in page.
|
|
||||||
SignInMenu,
|
|
||||||
SignInTitle,
|
|
||||||
SignInButton,
|
|
||||||
SignInSuccess,
|
|
||||||
WrongEmailOrPassword,
|
|
||||||
|
|
||||||
// Sign up page.
|
|
||||||
SignUpMenu,
|
|
||||||
SignUpTitle,
|
|
||||||
SignUpButton,
|
|
||||||
SignUpEmailSent,
|
|
||||||
SignUpEmailTitle,
|
|
||||||
SignUpFollowEmailLink,
|
|
||||||
SignUpEmailValidationSuccess,
|
|
||||||
SignUpValidationExpired,
|
|
||||||
SignUpValidationErrorTryAgain,
|
|
||||||
SignUpClosed,
|
|
||||||
ChooseAPassword,
|
|
||||||
ReEnterPassword,
|
|
||||||
|
|
||||||
AccountMustBeValidatedFirst,
|
|
||||||
InvalidEmail,
|
|
||||||
PasswordDontMatch,
|
|
||||||
InvalidPassword,
|
|
||||||
EmailAlreadyTaken,
|
|
||||||
UnableToSendEmail,
|
|
||||||
|
|
||||||
// Validation.
|
|
||||||
ValidationSuccessful,
|
|
||||||
ValidationExpired,
|
|
||||||
ValidationErrorTryToSignUpAgain,
|
|
||||||
ValidationError,
|
|
||||||
ValidationUserAlreadyExists,
|
|
||||||
|
|
||||||
// Reset password page.
|
|
||||||
LostPassword,
|
|
||||||
AskResetChooseNewPassword,
|
|
||||||
AskResetButton,
|
|
||||||
AskResetAlreadyLoggedInError,
|
|
||||||
AskResetEmailAlreadyResetError,
|
|
||||||
AskResetEmailTitle,
|
|
||||||
AskResetFollowEmailLink,
|
|
||||||
AskResetEmailSent,
|
|
||||||
AskResetTokenMissing,
|
|
||||||
AskResetTokenExpired,
|
|
||||||
PasswordReset,
|
|
||||||
EmailUnknown,
|
|
||||||
UnableToSendResetEmail,
|
|
||||||
|
|
||||||
// Profile
|
|
||||||
ProfileTitle,
|
|
||||||
ProfileEmail,
|
|
||||||
ProfileDefaultServings,
|
|
||||||
ProfileFirstDayOfWeek,
|
|
||||||
ProfileNewPassword,
|
|
||||||
ProfileFollowEmailTitle,
|
|
||||||
ProfileFollowEmailLink,
|
|
||||||
ProfileEmailSent,
|
|
||||||
ProfileSaved,
|
|
||||||
|
|
||||||
// Recipe.
|
|
||||||
RecipeNotAllowedToEdit,
|
|
||||||
RecipeNotAllowedToView,
|
|
||||||
RecipeNotFound,
|
|
||||||
RecipeTitle,
|
|
||||||
RecipeDescription,
|
|
||||||
RecipeServings,
|
|
||||||
RecipeEstimatedTime,
|
|
||||||
RecipeDifficulty,
|
|
||||||
RecipeDifficultyEasy,
|
|
||||||
RecipeDifficultyMedium,
|
|
||||||
RecipeDifficultyHard,
|
|
||||||
RecipeTags,
|
|
||||||
RecipeLanguage,
|
|
||||||
RecipeIsPublic,
|
|
||||||
RecipeDelete,
|
|
||||||
RecipeAddAGroup,
|
|
||||||
RecipeRemoveGroup,
|
|
||||||
RecipeGroupName,
|
|
||||||
RecipeGroupComment,
|
|
||||||
RecipeAddAStep,
|
|
||||||
RecipeRemoveStep,
|
|
||||||
RecipeStepAction,
|
|
||||||
RecipeAddAnIngredient,
|
|
||||||
RecipeRemoveIngredient,
|
|
||||||
RecipeIngredientName,
|
|
||||||
RecipeIngredientQuantity,
|
|
||||||
RecipeIngredientUnit,
|
|
||||||
RecipeIngredientComment,
|
|
||||||
RecipeDeleteConfirmation,
|
|
||||||
RecipeGroupDeleteConfirmation,
|
|
||||||
RecipeStepDeleteConfirmation,
|
|
||||||
RecipeIngredientDeleteConfirmation,
|
|
||||||
|
|
||||||
// View Recipe.
|
|
||||||
RecipeOneServing,
|
|
||||||
RecipeSomeServings,
|
|
||||||
RecipeEstimatedTimeMinAbbreviation,
|
|
||||||
|
|
||||||
// Calendar.
|
|
||||||
CalendarMonday,
|
|
||||||
CalendarTuesday,
|
|
||||||
CalendarWednesday,
|
|
||||||
CalendarThursday,
|
|
||||||
CalendarFriday,
|
|
||||||
CalendarSaturday,
|
|
||||||
CalendarSunday,
|
|
||||||
CalendarMondayAbbreviation,
|
|
||||||
CalendarTuesdayAbbreviation,
|
|
||||||
CalendarWednesdayAbbreviation,
|
|
||||||
CalendarThursdayAbbreviation,
|
|
||||||
CalendarFridayAbbreviation,
|
|
||||||
CalendarSaturdayAbbreviation,
|
|
||||||
CalendarSundayAbbreviation,
|
|
||||||
CalendarJanuary,
|
|
||||||
CalendarFebruary,
|
|
||||||
CalendarMarch,
|
|
||||||
CalendarApril,
|
|
||||||
CalendarMay,
|
|
||||||
CalendarJune,
|
|
||||||
CalendarJuly,
|
|
||||||
CalendarAugust,
|
|
||||||
CalendarSeptember,
|
|
||||||
CalendarOctober,
|
|
||||||
CalendarNovember,
|
|
||||||
CalendarDecember,
|
|
||||||
CalendarAddToPlanner,
|
|
||||||
CalendarAddToPlannerSuccess,
|
|
||||||
CalendarAddToPlannerAlreadyExists,
|
|
||||||
CalendarDateFormat, // See https://docs.rs/chrono/latest/chrono/format/strftime/index.html.
|
|
||||||
CalendarAddIngredientsToShoppingList,
|
|
||||||
CalendarRemoveIngredientsFromShoppingList,
|
|
||||||
CalendarUnschedule,
|
|
||||||
CalendarUnscheduleConfirmation,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub const DEFAULT_LANGUAGE_CODE: &str = "en";
|
pub const DEFAULT_LANGUAGE_CODE: &str = "en";
|
||||||
pub const PLACEHOLDER_SUBSTITUTE: &str = "{}";
|
pub const PLACEHOLDER_SUBSTITUTE: &str = "{}";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@
|
||||||
(RecipeIngredientUnit, "Unit"),
|
(RecipeIngredientUnit, "Unit"),
|
||||||
(RecipeIngredientComment, "Comment"),
|
(RecipeIngredientComment, "Comment"),
|
||||||
(RecipeDeleteConfirmation, "Are you sure to delete the recipe: '{}'?"),
|
(RecipeDeleteConfirmation, "Are you sure to delete the recipe: '{}'?"),
|
||||||
|
(RecipeSuccessfullyDeleted, "Recipe successfully deleted"),
|
||||||
(RecipeGroupDeleteConfirmation, "Are you sure to delete the group: '{}'?"),
|
(RecipeGroupDeleteConfirmation, "Are you sure to delete the group: '{}'?"),
|
||||||
(RecipeStepDeleteConfirmation, "Are you sure to delete the step: '{}'?"),
|
(RecipeStepDeleteConfirmation, "Are you sure to delete the step: '{}'?"),
|
||||||
(RecipeIngredientDeleteConfirmation, "Are you sure to delete the ingredient: '{}'?"),
|
(RecipeIngredientDeleteConfirmation, "Are you sure to delete the ingredient: '{}'?"),
|
||||||
|
|
@ -259,6 +260,7 @@
|
||||||
(RecipeIngredientUnit, "Unité"),
|
(RecipeIngredientUnit, "Unité"),
|
||||||
(RecipeIngredientComment, "Commentaire"),
|
(RecipeIngredientComment, "Commentaire"),
|
||||||
(RecipeDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer la recette : '{}' ?"),
|
(RecipeDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer la recette : '{}' ?"),
|
||||||
|
(RecipeSuccessfullyDeleted, "Recette supprimée avec succès"),
|
||||||
(RecipeGroupDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer le groupe : '{}' ?"),
|
(RecipeGroupDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer le groupe : '{}' ?"),
|
||||||
(RecipeStepDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer l'étape : '{}' ?"),
|
(RecipeStepDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer l'étape : '{}' ?"),
|
||||||
(RecipeIngredientDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer 'ingrédient : '{}' ?"),
|
(RecipeIngredientDeleteConfirmation, "Êtes-vous sûr de vouloir supprimer 'ingrédient : '{}' ?"),
|
||||||
|
|
|
||||||
|
|
@ -2,3 +2,4 @@ pub mod consts;
|
||||||
pub mod ron_api;
|
pub mod ron_api;
|
||||||
pub mod toast;
|
pub mod toast;
|
||||||
pub mod utils;
|
pub mod utils;
|
||||||
|
pub mod translation;
|
||||||
161
common/src/translation.rs
Normal file
161
common/src/translation.rs
Normal file
|
|
@ -0,0 +1,161 @@
|
||||||
|
use serde::Deserialize;
|
||||||
|
use strum::EnumCount;
|
||||||
|
|
||||||
|
#[repr(i64)]
|
||||||
|
#[derive(Debug, Clone, EnumCount, Deserialize)]
|
||||||
|
pub enum Sentence {
|
||||||
|
MainTitle = 0,
|
||||||
|
CreateNewRecipe,
|
||||||
|
PrivateRecipes,
|
||||||
|
UntitledRecipe,
|
||||||
|
|
||||||
|
Name,
|
||||||
|
EmailAddress,
|
||||||
|
Password,
|
||||||
|
|
||||||
|
SignOut,
|
||||||
|
Save,
|
||||||
|
NotLoggedIn,
|
||||||
|
|
||||||
|
ActionNotAuthorized,
|
||||||
|
|
||||||
|
DatabaseError,
|
||||||
|
TemplateError,
|
||||||
|
|
||||||
|
// Sign in page.
|
||||||
|
SignInMenu,
|
||||||
|
SignInTitle,
|
||||||
|
SignInButton,
|
||||||
|
SignInSuccess,
|
||||||
|
WrongEmailOrPassword,
|
||||||
|
|
||||||
|
// Sign up page.
|
||||||
|
SignUpMenu,
|
||||||
|
SignUpTitle,
|
||||||
|
SignUpButton,
|
||||||
|
SignUpEmailSent,
|
||||||
|
SignUpEmailTitle,
|
||||||
|
SignUpFollowEmailLink,
|
||||||
|
SignUpEmailValidationSuccess,
|
||||||
|
SignUpValidationExpired,
|
||||||
|
SignUpValidationErrorTryAgain,
|
||||||
|
SignUpClosed,
|
||||||
|
ChooseAPassword,
|
||||||
|
ReEnterPassword,
|
||||||
|
|
||||||
|
AccountMustBeValidatedFirst,
|
||||||
|
InvalidEmail,
|
||||||
|
PasswordDontMatch,
|
||||||
|
InvalidPassword,
|
||||||
|
EmailAlreadyTaken,
|
||||||
|
UnableToSendEmail,
|
||||||
|
|
||||||
|
// Validation.
|
||||||
|
ValidationSuccessful,
|
||||||
|
ValidationExpired,
|
||||||
|
ValidationErrorTryToSignUpAgain,
|
||||||
|
ValidationError,
|
||||||
|
ValidationUserAlreadyExists,
|
||||||
|
|
||||||
|
// Reset password page.
|
||||||
|
LostPassword,
|
||||||
|
AskResetChooseNewPassword,
|
||||||
|
AskResetButton,
|
||||||
|
AskResetAlreadyLoggedInError,
|
||||||
|
AskResetEmailAlreadyResetError,
|
||||||
|
AskResetEmailTitle,
|
||||||
|
AskResetFollowEmailLink,
|
||||||
|
AskResetEmailSent,
|
||||||
|
AskResetTokenMissing,
|
||||||
|
AskResetTokenExpired,
|
||||||
|
PasswordReset,
|
||||||
|
EmailUnknown,
|
||||||
|
UnableToSendResetEmail,
|
||||||
|
|
||||||
|
// Profile
|
||||||
|
ProfileTitle,
|
||||||
|
ProfileEmail,
|
||||||
|
ProfileDefaultServings,
|
||||||
|
ProfileFirstDayOfWeek,
|
||||||
|
ProfileNewPassword,
|
||||||
|
ProfileFollowEmailTitle,
|
||||||
|
ProfileFollowEmailLink,
|
||||||
|
ProfileEmailSent,
|
||||||
|
ProfileSaved,
|
||||||
|
|
||||||
|
// Recipe.
|
||||||
|
RecipeNotAllowedToEdit,
|
||||||
|
RecipeNotAllowedToView,
|
||||||
|
RecipeNotFound,
|
||||||
|
RecipeTitle,
|
||||||
|
RecipeDescription,
|
||||||
|
RecipeServings,
|
||||||
|
RecipeEstimatedTime,
|
||||||
|
RecipeDifficulty,
|
||||||
|
RecipeDifficultyEasy,
|
||||||
|
RecipeDifficultyMedium,
|
||||||
|
RecipeDifficultyHard,
|
||||||
|
RecipeTags,
|
||||||
|
RecipeLanguage,
|
||||||
|
RecipeIsPublic,
|
||||||
|
RecipeDelete,
|
||||||
|
RecipeAddAGroup,
|
||||||
|
RecipeRemoveGroup,
|
||||||
|
RecipeGroupName,
|
||||||
|
RecipeGroupComment,
|
||||||
|
RecipeAddAStep,
|
||||||
|
RecipeRemoveStep,
|
||||||
|
RecipeStepAction,
|
||||||
|
RecipeAddAnIngredient,
|
||||||
|
RecipeRemoveIngredient,
|
||||||
|
RecipeIngredientName,
|
||||||
|
RecipeIngredientQuantity,
|
||||||
|
RecipeIngredientUnit,
|
||||||
|
RecipeIngredientComment,
|
||||||
|
RecipeDeleteConfirmation,
|
||||||
|
RecipeSuccessfullyDeleted,
|
||||||
|
RecipeGroupDeleteConfirmation,
|
||||||
|
RecipeStepDeleteConfirmation,
|
||||||
|
RecipeIngredientDeleteConfirmation,
|
||||||
|
|
||||||
|
// View Recipe.
|
||||||
|
RecipeOneServing,
|
||||||
|
RecipeSomeServings,
|
||||||
|
RecipeEstimatedTimeMinAbbreviation,
|
||||||
|
|
||||||
|
// Calendar.
|
||||||
|
CalendarMonday,
|
||||||
|
CalendarTuesday,
|
||||||
|
CalendarWednesday,
|
||||||
|
CalendarThursday,
|
||||||
|
CalendarFriday,
|
||||||
|
CalendarSaturday,
|
||||||
|
CalendarSunday,
|
||||||
|
CalendarMondayAbbreviation,
|
||||||
|
CalendarTuesdayAbbreviation,
|
||||||
|
CalendarWednesdayAbbreviation,
|
||||||
|
CalendarThursdayAbbreviation,
|
||||||
|
CalendarFridayAbbreviation,
|
||||||
|
CalendarSaturdayAbbreviation,
|
||||||
|
CalendarSundayAbbreviation,
|
||||||
|
CalendarJanuary,
|
||||||
|
CalendarFebruary,
|
||||||
|
CalendarMarch,
|
||||||
|
CalendarApril,
|
||||||
|
CalendarMay,
|
||||||
|
CalendarJune,
|
||||||
|
CalendarJuly,
|
||||||
|
CalendarAugust,
|
||||||
|
CalendarSeptember,
|
||||||
|
CalendarOctober,
|
||||||
|
CalendarNovember,
|
||||||
|
CalendarDecember,
|
||||||
|
CalendarAddToPlanner,
|
||||||
|
CalendarAddToPlannerSuccess,
|
||||||
|
CalendarAddToPlannerAlreadyExists,
|
||||||
|
CalendarDateFormat, // See https://docs.rs/chrono/latest/chrono/format/strftime/index.html.
|
||||||
|
CalendarAddIngredientsToShoppingList,
|
||||||
|
CalendarRemoveIngredientsFromShoppingList,
|
||||||
|
CalendarUnschedule,
|
||||||
|
CalendarUnscheduleConfirmation,
|
||||||
|
}
|
||||||
|
|
@ -262,11 +262,19 @@ pub fn setup_page(recipe_id: i64) {
|
||||||
.is_some()
|
.is_some()
|
||||||
{
|
{
|
||||||
let body = ron_api::Id { id: recipe_id };
|
let body = ron_api::Id { id: recipe_id };
|
||||||
let _ = request::delete::<(), _>("recipe", body).await;
|
if let Ok(()) = request::delete::<(), _>("recipe", body).await {
|
||||||
window()
|
window()
|
||||||
.location()
|
.location()
|
||||||
.set_href(&format!("/{}/", get_current_lang()))
|
.set_href(&format!(
|
||||||
.unwrap();
|
"/{}/?{}={}&{}={}",
|
||||||
|
get_current_lang(),
|
||||||
|
common::consts::GET_PARAMETER_USER_MESSAGE,
|
||||||
|
common::translation::Sentence::RecipeSuccessfullyDeleted as i64,
|
||||||
|
common::consts::GET_PARAMETER_USER_MESSAGE_LEVEL,
|
||||||
|
common::toast::Level::Success as usize
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue