abmp-npm 1.1.91 → 1.1.92
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/backend/contacts-methods.js +2 -2
- package/backend/dev-only-methods.js +1 -13
- package/backend/login/sso-methods.js +3 -3
- package/backend/members-data-methods.js +22 -25
- package/backend/tasks/consts.js +0 -2
- package/backend/tasks/tasks-configs.js +0 -16
- package/backend/tasks/tasks-process-methods.js +0 -44
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ const elevatedCreateContact = auth.elevate(contacts.createContact);
|
|
|
11
11
|
* @param {boolean} allowDuplicates - Allow duplicates if contact with same email already exists, will be true only when handling existing members, after that should be removed
|
|
12
12
|
* @returns {Promise<Object>} - Contact data
|
|
13
13
|
*/
|
|
14
|
-
async function
|
|
14
|
+
async function createSiteContact(contactData, allowDuplicates = false) {
|
|
15
15
|
if (!contactData || !(contactData.contactFormEmail || contactData.email)) {
|
|
16
16
|
throw new Error('Contact data is required');
|
|
17
17
|
}
|
|
@@ -157,5 +157,5 @@ const updateMemberContactInfo = async (data, existingMemberData) => {
|
|
|
157
157
|
|
|
158
158
|
module.exports = {
|
|
159
159
|
updateMemberContactInfo,
|
|
160
|
-
|
|
160
|
+
createSiteContact,
|
|
161
161
|
};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
const { COLLECTIONS } = require('../public/consts');
|
|
2
|
-
|
|
3
1
|
const { ensureUniqueUrlsInBatch } = require('./daily-pull/bulk-process-methods');
|
|
4
2
|
const { wixData } = require('./elevated-modules');
|
|
5
3
|
const { bulkSaveMembers } = require('./members-data-methods');
|
|
@@ -17,14 +15,4 @@ async function deduplicateURls(collectionName, duplicateUrlsList) {
|
|
|
17
15
|
return await bulkSaveMembers(membersWithUniqueUrls, collectionName);
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
const query = wixData.query(COLLECTIONS.MEMBERS_DATA).isNotEmpty('contactId');
|
|
22
|
-
const members = await queryAllItems(query);
|
|
23
|
-
const updatedMembers = members.map(member => ({
|
|
24
|
-
...member,
|
|
25
|
-
wixMemberId: member.contactId,
|
|
26
|
-
}));
|
|
27
|
-
return await bulkSaveMembers(updatedMembers, COLLECTIONS.MEMBERS_DATA);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
module.exports = { deduplicateURls, copyContactIdToWixMemberId };
|
|
18
|
+
module.exports = { deduplicateURls };
|
|
@@ -5,7 +5,7 @@ const { decode } = require('jwt-js-decode');
|
|
|
5
5
|
const { CONFIG_KEYS, SSO_TOKEN_AUTH_API_URL } = require('../consts');
|
|
6
6
|
const { MEMBER_ACTIONS } = require('../daily-pull/consts');
|
|
7
7
|
const { getCurrentMember } = require('../members-area-methods');
|
|
8
|
-
const {
|
|
8
|
+
const { getCMSMemberByWixMemberId, prepareMemberForSSOLogin } = require('../members-data-methods');
|
|
9
9
|
const {
|
|
10
10
|
formatDateToMonthYear,
|
|
11
11
|
getAddressDisplayOptions,
|
|
@@ -37,12 +37,12 @@ async function validateMemberToken(memberIdInput) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
const [dbMember, siteConfigs] = await Promise.all([
|
|
40
|
-
|
|
40
|
+
getCMSMemberByWixMemberId(member._id),
|
|
41
41
|
getSiteConfigs(),
|
|
42
42
|
]);
|
|
43
43
|
const siteAssociation = siteConfigs[CONFIG_KEYS.SITE_ASSOCIATION];
|
|
44
44
|
const membersExternalPortalUrl = siteConfigs[CONFIG_KEYS.MEMBERS_EXTERNAL_PORTAL_URL];
|
|
45
|
-
console.log('dbMember by
|
|
45
|
+
console.log('dbMember by wix member id is:', dbMember);
|
|
46
46
|
console.log('member._id', member._id);
|
|
47
47
|
|
|
48
48
|
if (!dbMember?._id) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { COLLECTIONS } = require('../public/consts');
|
|
2
2
|
|
|
3
3
|
const { MEMBERSHIPS_TYPES } = require('./consts');
|
|
4
|
-
const { updateMemberContactInfo,
|
|
4
|
+
const { updateMemberContactInfo, createSiteContact } = require('./contacts-methods');
|
|
5
5
|
const { MEMBER_ACTIONS } = require('./daily-pull/consts');
|
|
6
6
|
const { wixData } = require('./elevated-modules');
|
|
7
7
|
const { createSiteMember, getCurrentMember } = require('./members-area-methods');
|
|
@@ -42,14 +42,17 @@ async function createContactAndMemberIfNew(memberData) {
|
|
|
42
42
|
phones: memberData.phones,
|
|
43
43
|
contactFormEmail: memberData.contactFormEmail || memberData.email,
|
|
44
44
|
};
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const needsWixMember = !memberData.wixMemberId;
|
|
46
|
+
const needsWixContact = !memberData.wixContactId;
|
|
47
|
+
const createPromises = [
|
|
48
|
+
needsWixMember && createSiteMember(toCreateMemberData),
|
|
49
|
+
needsWixContact && createSiteContact(toCreateMemberData),
|
|
50
|
+
].filter(Boolean);
|
|
51
|
+
const [newWixMemberId, newWixContactId] = await Promise.all(createPromises);
|
|
49
52
|
let memberDataWithContactId = {
|
|
50
53
|
...memberData,
|
|
51
|
-
wixMemberId,
|
|
52
|
-
wixContactId,
|
|
54
|
+
wixMemberId: newWixMemberId || memberData.wixMemberId,
|
|
55
|
+
wixContactId: newWixContactId || memberData.wixContactId,
|
|
53
56
|
};
|
|
54
57
|
const updatedResult = await updateMember(memberDataWithContactId);
|
|
55
58
|
memberDataWithContactId = {
|
|
@@ -173,26 +176,26 @@ async function getMemberBySlug({
|
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
|
|
176
|
-
async function
|
|
177
|
-
if (!
|
|
178
|
-
throw new Error('
|
|
179
|
+
async function getCMSMemberByWixMemberId(wixMemberId) {
|
|
180
|
+
if (!wixMemberId) {
|
|
181
|
+
throw new Error('Wix Member ID is required');
|
|
179
182
|
}
|
|
180
183
|
try {
|
|
181
184
|
const members = await wixData
|
|
182
185
|
.query(COLLECTIONS.MEMBERS_DATA)
|
|
183
|
-
.eq('
|
|
186
|
+
.eq('wixMemberId', wixMemberId)
|
|
184
187
|
.limit(2)
|
|
185
188
|
.find()
|
|
186
189
|
.then(res => res.items);
|
|
187
190
|
if (members.length > 1) {
|
|
188
191
|
throw new Error(
|
|
189
|
-
`[
|
|
192
|
+
`[getCMSMemberByWixMemberId] Multiple members found with wixMemberId ${wixMemberId} membersIds are : [${members.map(member => member.memberId).join(', ')}]`
|
|
190
193
|
);
|
|
191
194
|
}
|
|
192
195
|
return members[0] || null;
|
|
193
196
|
} catch (error) {
|
|
194
197
|
throw new Error(
|
|
195
|
-
`[
|
|
198
|
+
`[getCMSMemberByWixMemberId] Failed to retrieve member by wixMemberId ${wixMemberId} data: ${error.message}`
|
|
196
199
|
);
|
|
197
200
|
}
|
|
198
201
|
}
|
|
@@ -456,11 +459,11 @@ const getQAUsers = async () => {
|
|
|
456
459
|
* @param {Object} memberData - Member data from DB
|
|
457
460
|
* @returns {Promise<Object>} - Member data with contactId
|
|
458
461
|
*/
|
|
459
|
-
async function
|
|
462
|
+
async function ensureWixMemberAndContactExist(memberData) {
|
|
460
463
|
if (!memberData) {
|
|
461
464
|
throw new Error('Member data is required');
|
|
462
465
|
}
|
|
463
|
-
if (!memberData.
|
|
466
|
+
if (!memberData.wixContactId || !memberData.wixMemberId) {
|
|
464
467
|
const memberDataWithContactId = await createContactAndMemberIfNew(memberData);
|
|
465
468
|
return memberDataWithContactId;
|
|
466
469
|
}
|
|
@@ -478,7 +481,7 @@ async function prepareMemberForSSOLogin(data) {
|
|
|
478
481
|
throw new Error(`Member data not found for memberId ${memberId}`);
|
|
479
482
|
}
|
|
480
483
|
console.log('memberData', memberData);
|
|
481
|
-
return await
|
|
484
|
+
return await ensureWixMemberAndContactExist(memberData);
|
|
482
485
|
} catch (error) {
|
|
483
486
|
console.error('Error in prepareMemberForSSOLogin', error.message);
|
|
484
487
|
throw error;
|
|
@@ -495,7 +498,7 @@ async function prepareMemberForQALogin(email) {
|
|
|
495
498
|
throw new Error(`Member data not found for email ${email}`);
|
|
496
499
|
}
|
|
497
500
|
console.log('memberData', memberData);
|
|
498
|
-
return await
|
|
501
|
+
return await ensureWixMemberAndContactExist(memberData);
|
|
499
502
|
} catch (error) {
|
|
500
503
|
console.error('Error in prepareMemberForQALogin', error.message);
|
|
501
504
|
throw error;
|
|
@@ -517,7 +520,7 @@ async function trackButtonClick({ pageName, buttonName }) {
|
|
|
517
520
|
return null;
|
|
518
521
|
}
|
|
519
522
|
|
|
520
|
-
const dbMember = await
|
|
523
|
+
const dbMember = await getCMSMemberByWixMemberId(wixMember._id);
|
|
521
524
|
|
|
522
525
|
if (!dbMember) {
|
|
523
526
|
console.warn(
|
|
@@ -547,20 +550,14 @@ async function trackButtonClick({ pageName, buttonName }) {
|
|
|
547
550
|
}
|
|
548
551
|
}
|
|
549
552
|
|
|
550
|
-
async function getAllMembersWithWixMemberId() {
|
|
551
|
-
const membersQuery = wixData.query(COLLECTIONS.MEMBERS_DATA).isNotEmpty('wixMemberId');
|
|
552
|
-
return await queryAllItems(membersQuery);
|
|
553
|
-
}
|
|
554
|
-
|
|
555
553
|
module.exports = {
|
|
556
554
|
findMemberByWixDataId,
|
|
557
555
|
createContactAndMemberIfNew,
|
|
558
|
-
getAllMembersWithWixMemberId,
|
|
559
556
|
saveRegistrationData,
|
|
560
557
|
bulkSaveMembers,
|
|
561
558
|
findMemberById,
|
|
562
559
|
getMemberBySlug,
|
|
563
|
-
|
|
560
|
+
getCMSMemberByWixMemberId,
|
|
564
561
|
getAllEmptyAboutYouMembers,
|
|
565
562
|
updateMember,
|
|
566
563
|
getAllMembersWithExternalImages,
|
package/backend/tasks/consts.js
CHANGED
|
@@ -16,8 +16,6 @@ const TASKS_NAMES = {
|
|
|
16
16
|
migrateUrlsChunk: 'migrateUrlsChunk',
|
|
17
17
|
scheduleGenerateMissingUrls: 'scheduleGenerateMissingUrls',
|
|
18
18
|
generateUrlsChunk: 'generateUrlsChunk',
|
|
19
|
-
scheduleCreateContactsFromMembers: 'scheduleCreateContactsFromMembers',
|
|
20
|
-
createContactsFromMembers: 'createContactsFromMembers',
|
|
21
19
|
};
|
|
22
20
|
|
|
23
21
|
module.exports = {
|
|
@@ -16,8 +16,6 @@ const {
|
|
|
16
16
|
migrateContactFormEmails,
|
|
17
17
|
scheduleEmailSync,
|
|
18
18
|
syncMemberLoginEmails,
|
|
19
|
-
scheduleCreateContactsFromMembers,
|
|
20
|
-
createContactsFromMembers,
|
|
21
19
|
} = require('./tasks-process-methods');
|
|
22
20
|
const {
|
|
23
21
|
scheduleMigrateExistingUrls,
|
|
@@ -155,20 +153,6 @@ const TASKS = {
|
|
|
155
153
|
shouldSkipCheck: () => false,
|
|
156
154
|
estimatedDurationSec: 80,
|
|
157
155
|
},
|
|
158
|
-
[TASKS_NAMES.scheduleCreateContactsFromMembers]: {
|
|
159
|
-
name: TASKS_NAMES.scheduleCreateContactsFromMembers,
|
|
160
|
-
getIdentifier: () => 'SHOULD_NEVER_SKIP',
|
|
161
|
-
process: scheduleCreateContactsFromMembers,
|
|
162
|
-
shouldSkipCheck: () => false,
|
|
163
|
-
estimatedDurationSec: 80,
|
|
164
|
-
},
|
|
165
|
-
[TASKS_NAMES.createContactsFromMembers]: {
|
|
166
|
-
name: TASKS_NAMES.createContactsFromMembers,
|
|
167
|
-
getIdentifier: task => task.data,
|
|
168
|
-
process: createContactsFromMembers,
|
|
169
|
-
shouldSkipCheck: () => false,
|
|
170
|
-
estimatedDurationSec: 80,
|
|
171
|
-
},
|
|
172
156
|
};
|
|
173
157
|
|
|
174
158
|
module.exports = { TASKS };
|
|
@@ -13,8 +13,6 @@ const {
|
|
|
13
13
|
bulkSaveMembers,
|
|
14
14
|
getAllUpdatedLoginEmails,
|
|
15
15
|
getMembersByIds,
|
|
16
|
-
createContactAndMemberIfNew,
|
|
17
|
-
getAllMembersWithWixMemberId,
|
|
18
16
|
} = require('../members-data-methods');
|
|
19
17
|
const {
|
|
20
18
|
getCompleteStateList,
|
|
@@ -532,46 +530,6 @@ const syncMemberLoginEmails = async data => {
|
|
|
532
530
|
throw new Error(errorMessage);
|
|
533
531
|
}
|
|
534
532
|
};
|
|
535
|
-
/**
|
|
536
|
-
* Schedules tasks to create contacts from members
|
|
537
|
-
* dev-only task, run only once by the developers
|
|
538
|
-
*/
|
|
539
|
-
const scheduleCreateContactsFromMembers = async () => {
|
|
540
|
-
const members = await getAllMembersWithWixMemberId();
|
|
541
|
-
console.log(
|
|
542
|
-
`Starting to schedule create contacts from members tasks for ${members.length} members in chunks of 500 members`
|
|
543
|
-
);
|
|
544
|
-
const membersChunks = chunkArray(members, 500);
|
|
545
|
-
for (let chunkIndex = 0; chunkIndex < membersChunks.length; chunkIndex++) {
|
|
546
|
-
const chunk = membersChunks[chunkIndex];
|
|
547
|
-
const toScheduleTask = {
|
|
548
|
-
name: TASKS_NAMES.createContactsFromMembers,
|
|
549
|
-
data: { chunk, chunkIndex },
|
|
550
|
-
};
|
|
551
|
-
await taskManager().schedule(toScheduleTask);
|
|
552
|
-
console.log(`Scheduled task for chunk ${chunkIndex} with ${chunk.length} members`);
|
|
553
|
-
}
|
|
554
|
-
console.log(`Successfully scheduled ${membersChunks.length} tasks for ${members.length} members`);
|
|
555
|
-
};
|
|
556
|
-
|
|
557
|
-
/**
|
|
558
|
-
* Creates contacts from members
|
|
559
|
-
* dev-only task, run only once by the developers
|
|
560
|
-
*/
|
|
561
|
-
const createContactsFromMembers = async data => {
|
|
562
|
-
const { chunk, chunkIndex } = data;
|
|
563
|
-
console.log(`Creating contacts from ${chunk.length} members in chunk ${chunkIndex}`);
|
|
564
|
-
const createPromises = chunk.map(member => createContactAndMemberIfNew(member));
|
|
565
|
-
const createResults = await Promise.all(createPromises);
|
|
566
|
-
console.log(
|
|
567
|
-
`Created ${createResults.length} contacts from ${chunk.length} members in chunk ${chunkIndex}`
|
|
568
|
-
);
|
|
569
|
-
const saveResult = await bulkSaveMembers(createResults);
|
|
570
|
-
console.log(
|
|
571
|
-
`Successfully saved ${saveResult.totalSaved} contacts from ${chunk.length} members in chunk ${chunkIndex}`
|
|
572
|
-
);
|
|
573
|
-
return saveResult;
|
|
574
|
-
};
|
|
575
533
|
|
|
576
534
|
module.exports = {
|
|
577
535
|
scheduleTaskForEmptyAboutYouMembers,
|
|
@@ -584,6 +542,4 @@ module.exports = {
|
|
|
584
542
|
migrateContactFormEmails,
|
|
585
543
|
scheduleEmailSync,
|
|
586
544
|
syncMemberLoginEmails,
|
|
587
|
-
scheduleCreateContactsFromMembers, // run only once by the developers
|
|
588
|
-
createContactsFromMembers,
|
|
589
545
|
};
|