From 3726dfd92e323ead2506ba5e5d7d04c70650fe57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mu=C3=B1oz=20Paredes?= Date: Sun, 13 Jul 2025 16:50:01 +0000 Subject: [PATCH] fix: check if slug is empty to show alert --- frontend/pages/g/[groupSlug]/r/create/new.vue | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/frontend/pages/g/[groupSlug]/r/create/new.vue b/frontend/pages/g/[groupSlug]/r/create/new.vue index 29948d304..2c9f50f8f 100644 --- a/frontend/pages/g/[groupSlug]/r/create/new.vue +++ b/frontend/pages/g/[groupSlug]/r/create/new.vue @@ -46,6 +46,7 @@ import type { AxiosResponse } from "axios"; import { useUserApi } from "~/composables/api"; import { validators } from "~/composables/use-validators"; import type { VForm } from "~/types/auto-forms"; +import { alert } from "~/composables/use-toast"; export default defineNuxtComponent({ setup() { @@ -59,6 +60,7 @@ export default defineNuxtComponent({ const api = useUserApi(); const router = useRouter(); + const i18n = useI18n(); function handleResponse(response: AxiosResponse | null, edit = false) { if (response?.status !== 201) { @@ -71,11 +73,25 @@ export default defineNuxtComponent({ const newRecipeName = ref(""); const domCreateByName = ref(null); + function createRecipeSlug(str: string): string { + return str + .toLowerCase() + .normalize("NFD") + .replace(/\p{Diacritic}/gu, "") + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, "") + .replace(/-+/g, "-"); + } async function createByName(name: string) { if (!domCreateByName.value?.validate() || name === "") { return; } + const recipeSlug = createRecipeSlug(name); + if (!recipeSlug) { + alert.error(i18n.t("recipe.recipe-creation-failed") as string); + return; + } const { response } = await api.recipes.createOne({ name }); handleResponse(response as any, true); }