abmp-npm 2.0.24 → 2.0.26
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.
|
@@ -31,7 +31,7 @@ async function findMemberByWixDataId(memberId) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
async function createContactAndMemberIfNew(memberData) {
|
|
34
|
+
async function createContactAndMemberIfNew(memberData, allowDuplicates = false) {
|
|
35
35
|
if (!memberData) {
|
|
36
36
|
throw new Error('Member data is required');
|
|
37
37
|
}
|
|
@@ -47,7 +47,9 @@ async function createContactAndMemberIfNew(memberData) {
|
|
|
47
47
|
const needsWixContact = !memberData.wixContactId;
|
|
48
48
|
const [newWixMemberId, newWixContactId] = await Promise.all([
|
|
49
49
|
needsWixMember ? createSiteMember(toCreateMemberData) : Promise.resolve(null),
|
|
50
|
-
needsWixContact
|
|
50
|
+
needsWixContact
|
|
51
|
+
? createSiteContact(toCreateMemberData, allowDuplicates)
|
|
52
|
+
: Promise.resolve(null),
|
|
51
53
|
]);
|
|
52
54
|
let memberDataWithContactId = {
|
|
53
55
|
...memberData,
|
|
@@ -526,9 +528,10 @@ async function prepareMemberForQALogin(email) {
|
|
|
526
528
|
* @param {Object} params - Parameters
|
|
527
529
|
* @param {string} params.pageName - Name of the page/popup where button was clicked
|
|
528
530
|
* @param {string} params.buttonName - Name/ID of the button that was clicked
|
|
531
|
+
* @param {Object} [params.data] - Optional data object to store with the click (e.g., form data being saved)
|
|
529
532
|
* @returns {Promise<Object>} - Saved record or null if member not found
|
|
530
533
|
*/
|
|
531
|
-
async function trackButtonClick({ pageName, buttonName }) {
|
|
534
|
+
async function trackButtonClick({ pageName, buttonName, data }) {
|
|
532
535
|
const wixMember = await getCurrentMember();
|
|
533
536
|
|
|
534
537
|
if (!wixMember) {
|
|
@@ -554,6 +557,7 @@ async function trackButtonClick({ pageName, buttonName }) {
|
|
|
554
557
|
pageName,
|
|
555
558
|
buttonName,
|
|
556
559
|
clickedAt: new Date(),
|
|
560
|
+
...(data && { data }),
|
|
557
561
|
};
|
|
558
562
|
|
|
559
563
|
try {
|
|
@@ -562,7 +562,7 @@ const scheduleCreateContactsFromMembers = async () => {
|
|
|
562
562
|
const createContactsFromMembers = async data => {
|
|
563
563
|
const { chunk, chunkIndex } = data;
|
|
564
564
|
console.log(`Creating contacts from ${chunk.length} members in chunk ${chunkIndex}`);
|
|
565
|
-
const createPromises = chunk.map(member => createContactAndMemberIfNew(member));
|
|
565
|
+
const createPromises = chunk.map(member => createContactAndMemberIfNew(member, true));
|
|
566
566
|
const createResults = await Promise.all(createPromises);
|
|
567
567
|
console.log(
|
|
568
568
|
`Created ${createResults.length} contacts from ${chunk.length} members in chunk ${chunkIndex}`
|
package/package.json
CHANGED
package/pages/personalDetails.js
CHANGED
|
@@ -38,6 +38,13 @@ const MAIN_STATE_BOX_STATES = {
|
|
|
38
38
|
|
|
39
39
|
const FALLBACK_ADDRESS_STATUS = ADDRESS_STATUS_TYPES.STATE_CITY_ZIP;
|
|
40
40
|
|
|
41
|
+
const PAGE_NAME = 'Personal Details';
|
|
42
|
+
const BUTTON_NAMES = {
|
|
43
|
+
PERSONAL: 'Save Personal Details',
|
|
44
|
+
BUSINESS: 'Save Business & Services',
|
|
45
|
+
CONTACT: 'Save Contact & Booking',
|
|
46
|
+
};
|
|
47
|
+
|
|
41
48
|
const FORM_SECTION_HANDLER_MAP = {
|
|
42
49
|
PERSONAL: { section: 'personal', handler: null }, // handler will be set in init
|
|
43
50
|
BUSINESS_SERVICES: { section: 'businessServices', handler: null },
|
|
@@ -52,6 +59,7 @@ async function personalDetailsOnReady({
|
|
|
52
59
|
saveRegistrationData,
|
|
53
60
|
validateMemberToken,
|
|
54
61
|
checkUrlUniqueness,
|
|
62
|
+
trackClick,
|
|
55
63
|
}) {
|
|
56
64
|
let itemMemberObj = {};
|
|
57
65
|
let originalMemberData = {};
|
|
@@ -1094,6 +1102,12 @@ async function personalDetailsOnReady({
|
|
|
1094
1102
|
...personalChanges,
|
|
1095
1103
|
};
|
|
1096
1104
|
|
|
1105
|
+
trackClick({
|
|
1106
|
+
pageName: PAGE_NAME,
|
|
1107
|
+
buttonName: BUTTON_NAMES.PERSONAL,
|
|
1108
|
+
data: formData,
|
|
1109
|
+
});
|
|
1110
|
+
|
|
1097
1111
|
// Log the specific personal data changes
|
|
1098
1112
|
console.group('Personal Details Save Attempt');
|
|
1099
1113
|
console.log('Current Data:', beforeData);
|
|
@@ -1137,6 +1151,12 @@ async function personalDetailsOnReady({
|
|
|
1137
1151
|
...businessChanges,
|
|
1138
1152
|
};
|
|
1139
1153
|
|
|
1154
|
+
trackClick({
|
|
1155
|
+
pageName: PAGE_NAME,
|
|
1156
|
+
buttonName: BUTTON_NAMES.BUSINESS,
|
|
1157
|
+
data: formData,
|
|
1158
|
+
});
|
|
1159
|
+
|
|
1140
1160
|
// Log the specific business data changes
|
|
1141
1161
|
console.group('Business Services Save Attempt');
|
|
1142
1162
|
console.log('Current Data:', beforeData);
|
|
@@ -1385,13 +1405,27 @@ async function personalDetailsOnReady({
|
|
|
1385
1405
|
}
|
|
1386
1406
|
|
|
1387
1407
|
function setupAddressRepeaterEventListeners() {
|
|
1388
|
-
_$w('#mainAddressCheckbox').onChange(event => {
|
|
1408
|
+
_$w('#mainAddressCheckbox').onChange(async event => {
|
|
1389
1409
|
const data = _$w('#addressesList').data;
|
|
1390
1410
|
const clickedItemData = data.find(item => item._id === event.context.itemId);
|
|
1391
1411
|
const $item = _$w.at(event.context);
|
|
1412
|
+
const checkbox = $item('#mainAddressCheckbox');
|
|
1413
|
+
const isBeingUnchecked = !event.target.checked;
|
|
1414
|
+
|
|
1415
|
+
if (isBeingUnchecked) {
|
|
1416
|
+
const addressDisplayOptions = itemMemberObj.addressDisplayOption || [];
|
|
1417
|
+
const mainAddressOption = addressDisplayOptions.find(opt => opt.isMain === true);
|
|
1418
|
+
|
|
1419
|
+
// If this address is the main address, prevent unchecking
|
|
1420
|
+
if (mainAddressOption && mainAddressOption.key === clickedItemData._id) {
|
|
1421
|
+
checkbox.checked = true;
|
|
1422
|
+
await wixWindow.openLightbox(LIGHTBOX_NAMES.MAIN_ADDRESS_ERROR);
|
|
1423
|
+
return;
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1392
1426
|
|
|
1393
1427
|
_$w('#mainAddressCheckbox').checked = false;
|
|
1394
|
-
|
|
1428
|
+
checkbox.checked = true;
|
|
1395
1429
|
|
|
1396
1430
|
if (clickedItemData.address.addressStatus === ADDRESS_STATUS_TYPES.DONT_SHOW) {
|
|
1397
1431
|
updateAddressStatus(clickedItemData._id, ADDRESS_STATUS_TYPES.STATE_CITY_ZIP);
|
|
@@ -1970,6 +2004,12 @@ async function personalDetailsOnReady({
|
|
|
1970
2004
|
...contactChanges,
|
|
1971
2005
|
};
|
|
1972
2006
|
|
|
2007
|
+
trackClick({
|
|
2008
|
+
pageName: PAGE_NAME,
|
|
2009
|
+
buttonName: BUTTON_NAMES.CONTACT,
|
|
2010
|
+
data: formData,
|
|
2011
|
+
});
|
|
2012
|
+
|
|
1973
2013
|
// Log the specific contact & booking data changes
|
|
1974
2014
|
console.group('Contact & Booking Save Attempt');
|
|
1975
2015
|
console.log('Current Data:', beforeData);
|