From 768e1cd93a88f85b73d46704c6623abda490b36d Mon Sep 17 00:00:00 2001 From: Jack Casstles-Jones Date: Tue, 17 Dec 2024 15:28:05 +0000 Subject: [PATCH 1/2] refactor: remove nested submitbutton component --- .../add-tool/components/AddToolInputs.tsx | 173 +++++++++--------- 1 file changed, 88 insertions(+), 85 deletions(-) diff --git a/src/app/toolkit/add-tool/components/AddToolInputs.tsx b/src/app/toolkit/add-tool/components/AddToolInputs.tsx index 453d793a..be16b662 100644 --- a/src/app/toolkit/add-tool/components/AddToolInputs.tsx +++ b/src/app/toolkit/add-tool/components/AddToolInputs.tsx @@ -29,91 +29,81 @@ export default function Inputs() { const [submitErrorModal, setSubmitErrorModal] = useState(false); const [submitErrorMessage, setSubmitErrorMessage] = useState(""); - function SubmitButton() { - const handleSubmit = async () => { - console.log(`Validating form with state: ${JSON.stringify(formState)}`); - - if (!formState.name || formState.name.trim() === "") { - setNameErrorModalOpen(true); + const handleSubmit = async () => { + console.log(`Validating form with state: ${JSON.stringify(formState)}`); + + if (!formState.name || formState.name.trim() === "") { + setNameErrorModalOpen(true); + return; + } + + if (formState.categories.length === 0) { + setCategoryErrorModal(true); + return; + } + + if (formState.infoUrl) { + const infoUrlValidation = validateUrl(formState.infoUrl, "Info URL"); + if (!infoUrlValidation.isValid) { + console.error(`Info URL validation failed: ${infoUrlValidation.error}`); + setSubmitErrorMessage(infoUrlValidation.error || ""); + setInfoUrlErrorModal(true); return; } - - if (formState.categories.length === 0) { - setCategoryErrorModal(true); - return; - } - - if (formState.infoUrl) { - const infoUrlValidation = validateUrl(formState.infoUrl, "Info URL"); - if (!infoUrlValidation.isValid) { - console.error( - `Info URL validation failed: ${infoUrlValidation.error}` - ); - setSubmitErrorMessage(infoUrlValidation.error || ""); - setInfoUrlErrorModal(true); - return; - } - console.log( - `Info URL validated successfully: ${infoUrlValidation.url}` - ); - } - - if (formState.imageUrl) { - const imageUrlValidation = validateUrl(formState.imageUrl, "Image URL"); - if (!imageUrlValidation.isValid) { - console.error( - `Image URL validation failed: ${imageUrlValidation.error}` - ); - setSubmitErrorMessage(imageUrlValidation.error || ""); - setImageUrlErrorModal(true); - return; - } - console.log( - `Image URL validated successfully: ${imageUrlValidation.url}` + console.log(`Info URL validated successfully: ${infoUrlValidation.url}`); + } + + if (formState.imageUrl) { + const imageUrlValidation = validateUrl(formState.imageUrl, "Image URL"); + if (!imageUrlValidation.isValid) { + console.error( + `Image URL validation failed: ${imageUrlValidation.error}` ); + setSubmitErrorMessage(imageUrlValidation.error || ""); + setImageUrlErrorModal(true); + return; } - - try { - for (const category of formState.pendingCategories) { - if (formState.categories.includes(category)) { + console.log( + `Image URL validated successfully: ${imageUrlValidation.url}` + ); + } + + try { + for (const category of formState.pendingCategories) { + if (formState.categories.includes(category)) { + await database.addCategories(category); + } else { + await setUnusedCategoryModalOpen(true); + if (saveUnusedCategory) { + console.log("I am saving the unused category"); + setUnusedCategory(unusedCategory.concat(category)); await database.addCategories(category); - } else { - await setUnusedCategoryModalOpen(true); - if (saveUnusedCategory) { - setUnusedCategory(unusedCategory.concat(category)); - await database.addCategories(category); - } } } - - await database.addToDb("toolkit_items", { - id: crypto.randomUUID(), - name: formState.name, - categories: formState.categories, - description: formState.description, - checked: false, - infoUrl: formState.infoUrl, - imageUrl: formState.imageUrl, - timestamp: new Date().toISOString(), - }); - - console.log(`Created ${formState.name} in the database`); - - setConfirmationModalOpen(true); - } catch (error) { - console.error("Error submitting form:", error); - setSubmitErrorMessage( - error instanceof Error ? error.message : "Unknown error" - ); - setSubmitErrorModal(true); } - }; - return (