abmp-npm 2.0.39 → 2.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abmp-npm",
3
- "version": "2.0.39",
3
+ "version": "2.0.40",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "check-cycles": "madge --circular .",
@@ -89,8 +89,10 @@ async function personalDetailsOnReady({
89
89
  };
90
90
 
91
91
  const slugValidationTimeout = {};
92
+ const contactEmailValidationTimeout = {};
92
93
  let isSlugValid = true;
93
94
  let currentSlugValidationId = 0;
95
+ let currentContactEmailValidationId = 0;
94
96
 
95
97
  const SLUG_FLAGS = {
96
98
  VALID: '#validSlugFlag',
@@ -531,14 +533,32 @@ async function personalDetailsOnReady({
531
533
  forceTriggerContactEmailCustomValidation(value);
532
534
  };
533
535
 
534
- elements.$contactFormEmailInput.onInput(async event => {
536
+ elements.$contactFormEmailInput.onInput(event => {
535
537
  const value = event.target.value;
536
538
  _$w('#saveContactBookingButton').disable();
539
+
540
+ if (contactEmailValidationTimeout.validation) {
541
+ clearTimeout(contactEmailValidationTimeout.validation);
542
+ }
543
+
537
544
  if (!value) {
538
545
  setContactEmailInvalid(CONTACT_EMAIL_VALIDATION_MESSAGES.REQUIRED, value);
539
- } else {
546
+ checkFormChanges(FORM_SECTION_HANDLER_MAP.CONTACT_BOOKING);
547
+ return;
548
+ }
549
+
550
+ const validationId = ++currentContactEmailValidationId;
551
+ contactEmailValidationTimeout.validation = setTimeout(async () => {
540
552
  try {
553
+ if (validationId !== currentContactEmailValidationId) {
554
+ return;
555
+ }
556
+
541
557
  const isAlreadyUsed = await isEmailAlreadyUsed(value, itemMemberObj.memberId);
558
+ if (validationId !== currentContactEmailValidationId) {
559
+ return;
560
+ }
561
+
542
562
  if (isAlreadyUsed) {
543
563
  setContactEmailInvalid(CONTACT_EMAIL_VALIDATION_MESSAGES.ALREADY_TAKEN, value);
544
564
  } else {
@@ -548,10 +568,15 @@ async function personalDetailsOnReady({
548
568
  }
549
569
  } catch (error) {
550
570
  console.error('Email validation error:', error);
551
- setContactEmailInvalid(CONTACT_EMAIL_VALIDATION_MESSAGES.ERROR, value);
571
+ if (validationId === currentContactEmailValidationId) {
572
+ setContactEmailInvalid(CONTACT_EMAIL_VALIDATION_MESSAGES.ERROR, value);
573
+ }
574
+ } finally {
575
+ if (validationId === currentContactEmailValidationId) {
576
+ checkFormChanges(FORM_SECTION_HANDLER_MAP.CONTACT_BOOKING);
577
+ }
552
578
  }
553
- }
554
- checkFormChanges(FORM_SECTION_HANDLER_MAP.CONTACT_BOOKING);
579
+ }, 500);
555
580
  });
556
581
 
557
582
  _$w('#slugInput').onInput(event => {