✨ fix: prevent multiple form submissions in Contact component
This commit is contained in:
@@ -19,9 +19,6 @@ COPY .env .env
|
|||||||
# Build the Next.js application
|
# Build the Next.js application
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Set environmental variable for production mode
|
|
||||||
ENV NODE_ENV=production
|
|
||||||
|
|
||||||
# Expose the port the app runs on
|
# Expose the port the app runs on
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
|
|||||||
@@ -40,11 +40,21 @@ export default function Contact() {
|
|||||||
// Convert FormData to a plain object
|
// Convert FormData to a plain object
|
||||||
const jsonData = JSON.stringify(data);
|
const jsonData = JSON.stringify(data);
|
||||||
|
|
||||||
|
//prevent multiple submissions
|
||||||
|
const submitButton = form.querySelector("button[type='submit']");
|
||||||
|
if (submitButton) {
|
||||||
|
submitButton.setAttribute("disabled", "true");
|
||||||
|
submitButton.textContent = "Sending...";
|
||||||
|
|
||||||
const response = await sendEmail(jsonData);
|
const response = await sendEmail(jsonData);
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
form.reset();
|
form.reset();
|
||||||
|
submitButton.textContent = "Sent!";
|
||||||
|
setTimeout(() => {
|
||||||
|
submitButton.removeAttribute("disabled");
|
||||||
|
submitButton.textContent = "Send";
|
||||||
|
}, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
setBanner({
|
setBanner({
|
||||||
show: true,
|
show: true,
|
||||||
message: response.message,
|
message: response.message,
|
||||||
@@ -54,6 +64,7 @@ export default function Contact() {
|
|||||||
setBanner((prev) => ({ ...prev, show: false }));
|
setBanner((prev) => ({ ...prev, show: false }));
|
||||||
}, 3000);
|
}, 3000);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<section
|
<section
|
||||||
id="contact"
|
id="contact"
|
||||||
|
|||||||
Reference in New Issue
Block a user