abmp-npm 2.0.77 → 2.0.79

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.
Files changed (101) hide show
  1. package/package.json +8 -1
  2. package/pages/Profile.js +6 -1
  3. package/public/Utils/personalDetailsUtils.js +17 -6
  4. package/.claude/skills/wix-data-query/SKILL.md +0 -167
  5. package/.claude/skills/wix-data-query/references/backup-archive.md +0 -136
  6. package/.claude/skills/wix-data-query/references/members-data-latest.md +0 -125
  7. package/.claude/skills/wix-data-query/references/recipes.md +0 -264
  8. package/.claude/worktrees/fix-save-button-disable/.husky/pre-commit +0 -19
  9. package/.claude/worktrees/fix-save-button-disable/.prettierignore +0 -7
  10. package/.claude/worktrees/fix-save-button-disable/.prettierrc.json +0 -16
  11. package/.claude/worktrees/fix-save-button-disable/README.md +0 -1
  12. package/.claude/worktrees/fix-save-button-disable/backend/README-member-contact-flows.md +0 -136
  13. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/daily-pull-execution-check.test.js +0 -124
  14. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/ensure-unique-urls-in-batch.test.js +0 -129
  15. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/login-email-sync.test.js +0 -49
  16. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/transient-retry-and-bulk-lookup.test.js +0 -129
  17. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/url-uniqueness.test.js +0 -194
  18. package/.claude/worktrees/fix-save-button-disable/backend/automations-methods.js +0 -13
  19. package/.claude/worktrees/fix-save-button-disable/backend/cms-data-methods.js +0 -251
  20. package/.claude/worktrees/fix-save-button-disable/backend/consts.js +0 -58
  21. package/.claude/worktrees/fix-save-button-disable/backend/contacts-methods.js +0 -67
  22. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/bulk-process-methods.js +0 -222
  23. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/consts.js +0 -39
  24. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/index.js +0 -5
  25. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/process-member-methods.js +0 -213
  26. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/schedule-methods.js +0 -41
  27. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/sync-to-cms-methods.js +0 -161
  28. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/utils.js +0 -151
  29. package/.claude/worktrees/fix-save-button-disable/backend/data-hooks.js +0 -29
  30. package/.claude/worktrees/fix-save-button-disable/backend/dev-only-methods.js +0 -58
  31. package/.claude/worktrees/fix-save-button-disable/backend/elevated-modules.js +0 -18
  32. package/.claude/worktrees/fix-save-button-disable/backend/forms-methods.js +0 -52
  33. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/httpFunctions.js +0 -86
  34. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/index.js +0 -3
  35. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/interests.js +0 -35
  36. package/.claude/worktrees/fix-save-button-disable/backend/index.js +0 -19
  37. package/.claude/worktrees/fix-save-button-disable/backend/jobs.js +0 -158
  38. package/.claude/worktrees/fix-save-button-disable/backend/login/generate-member-session-token.js +0 -27
  39. package/.claude/worktrees/fix-save-button-disable/backend/login/index.js +0 -8
  40. package/.claude/worktrees/fix-save-button-disable/backend/login/qa-login-methods.js +0 -54
  41. package/.claude/worktrees/fix-save-button-disable/backend/login/sso-methods.js +0 -159
  42. package/.claude/worktrees/fix-save-button-disable/backend/member-contact-orchestration.js +0 -111
  43. package/.claude/worktrees/fix-save-button-disable/backend/members-area-methods.js +0 -88
  44. package/.claude/worktrees/fix-save-button-disable/backend/members-data-methods.js +0 -789
  45. package/.claude/worktrees/fix-save-button-disable/backend/pac-api-methods.js +0 -54
  46. package/.claude/worktrees/fix-save-button-disable/backend/routers/index.js +0 -3
  47. package/.claude/worktrees/fix-save-button-disable/backend/routers/methods.js +0 -191
  48. package/.claude/worktrees/fix-save-button-disable/backend/routers/utils.js +0 -128
  49. package/.claude/worktrees/fix-save-button-disable/backend/search-filters-methods.js +0 -124
  50. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-primary-methods.js +0 -256
  51. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-visibility-methods.js +0 -160
  52. package/.claude/worktrees/fix-save-button-disable/backend/tasks/consts.js +0 -34
  53. package/.claude/worktrees/fix-save-button-disable/backend/tasks/daily-pull-check-methods.js +0 -78
  54. package/.claude/worktrees/fix-save-button-disable/backend/tasks/email-normalize-methods.js +0 -134
  55. package/.claude/worktrees/fix-save-button-disable/backend/tasks/index.js +0 -10
  56. package/.claude/worktrees/fix-save-button-disable/backend/tasks/migration-methods.js +0 -46
  57. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-configs.js +0 -251
  58. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-helpers-methods.js +0 -433
  59. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-process-methods.js +0 -606
  60. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-migration-methods.js +0 -378
  61. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-space-fix-methods.js +0 -174
  62. package/.claude/worktrees/fix-save-button-disable/backend/utils.js +0 -277
  63. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/extract-duplicate-url-groups.js +0 -201
  64. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-ids.js +0 -159
  65. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-urls.js +0 -201
  66. package/.claude/worktrees/fix-save-button-disable/eslint.config.js +0 -120
  67. package/.claude/worktrees/fix-save-button-disable/index.js +0 -5
  68. package/.claude/worktrees/fix-save-button-disable/package-lock.json +0 -12160
  69. package/.claude/worktrees/fix-save-button-disable/package.json +0 -60
  70. package/.claude/worktrees/fix-save-button-disable/pages/ContactUs.js +0 -129
  71. package/.claude/worktrees/fix-save-button-disable/pages/Home.js +0 -779
  72. package/.claude/worktrees/fix-save-button-disable/pages/LearnMore.js +0 -27
  73. package/.claude/worktrees/fix-save-button-disable/pages/LoadingPage.js +0 -29
  74. package/.claude/worktrees/fix-save-button-disable/pages/Profile.js +0 -354
  75. package/.claude/worktrees/fix-save-button-disable/pages/QAPage.js +0 -39
  76. package/.claude/worktrees/fix-save-button-disable/pages/SaveAlerts.js +0 -13
  77. package/.claude/worktrees/fix-save-button-disable/pages/SelectBannerImages.js +0 -46
  78. package/.claude/worktrees/fix-save-button-disable/pages/deleteConfirm.js +0 -19
  79. package/.claude/worktrees/fix-save-button-disable/pages/index.js +0 -12
  80. package/.claude/worktrees/fix-save-button-disable/pages/personalDetails.js +0 -2486
  81. package/.claude/worktrees/fix-save-button-disable/public/Utils/homePage.js +0 -798
  82. package/.claude/worktrees/fix-save-button-disable/public/Utils/personalDetailsUtils.js +0 -25
  83. package/.claude/worktrees/fix-save-button-disable/public/Utils/sharedUtils.js +0 -235
  84. package/.claude/worktrees/fix-save-button-disable/public/consts.js +0 -113
  85. package/.claude/worktrees/fix-save-button-disable/public/index.js +0 -5
  86. package/.claude/worktrees/fix-save-button-disable/public/messages.js +0 -16
  87. package/.claude/worktrees/fix-save-button-disable/public/sso-auth-methods.js +0 -43
  88. package/.husky/pre-commit +0 -19
  89. package/.prettierignore +0 -7
  90. package/.prettierrc.json +0 -16
  91. package/backend/__tests__/daily-pull-execution-check.test.js +0 -124
  92. package/backend/__tests__/ensure-unique-urls-in-batch.test.js +0 -129
  93. package/backend/__tests__/login-email-sync.test.js +0 -49
  94. package/backend/__tests__/map-link.test.js +0 -115
  95. package/backend/__tests__/transient-retry-and-bulk-lookup.test.js +0 -129
  96. package/backend/__tests__/url-uniqueness.test.js +0 -194
  97. package/backend/__tests__/url-validation.test.js +0 -69
  98. package/dev-only-scripts/extract-duplicate-url-groups.js +0 -201
  99. package/dev-only-scripts/find-duplicate-ids.js +0 -159
  100. package/dev-only-scripts/find-duplicate-urls.js +0 -201
  101. package/eslint.config.js +0 -120
@@ -1,27 +0,0 @@
1
- const PAGE_NAME = 'Learn More';
2
- const BUTTON_NAME = 'Upgrade Now';
3
-
4
- /**
5
- * Creates the Learn More popup handler
6
- * @param {Object} params - Parameters
7
- * @param {Function} params.$w - Wix $w selector
8
- * @param {Function} params.trackClick - Backend function to track the click (handles member lookup internally)
9
- */
10
- function learnMoreOnReady({ $w: _$w, trackClick }) {
11
- _$w('#learnMoreBtn').onClick(async () => {
12
- try {
13
- await trackClick({
14
- pageName: PAGE_NAME,
15
- buttonName: BUTTON_NAME,
16
- });
17
-
18
- console.log(`Tracked ${BUTTON_NAME} click on ${PAGE_NAME}`);
19
- } catch (error) {
20
- console.error('Error tracking button click:', error);
21
- }
22
- });
23
- }
24
-
25
- module.exports = {
26
- learnMoreOnReady,
27
- };
@@ -1,29 +0,0 @@
1
- const { location: wixLocationFrontend } = require('@wix/site-location');
2
- const { local } = require('@wix/site-storage');
3
- const { window: wixWindow, rendering } = require('@wix/site-window');
4
-
5
- const { LIGHTBOX_NAMES, PAGES_PATHS } = require('../public/consts');
6
- const { checkAndLogin } = require('../public/sso-auth-methods');
7
-
8
- async function loadingPageOnReady(authenticateSSOToken) {
9
- const renderingEnv = await rendering.env();
10
- //This calls needs to triggered on client side, otherwise PAC API will return 401 error
11
- if (renderingEnv === 'browser') {
12
- //Need to pass authenticateSSOToken to checkAndLogin so it will run as a web method not a public one.
13
- await checkAndLogin(authenticateSSOToken).catch(async error => {
14
- console.error(`Something went wrong while logging in: ${error}`);
15
- // If we already have a session (memberId), redirect to form instead of showing error.
16
- const storedMemberId = await local.getItem('memberId');
17
- if (storedMemberId) {
18
- const redirectTo = `${PAGES_PATHS.MEMBERS_FORM}?token=${encodeURIComponent(storedMemberId)}`;
19
- await wixLocationFrontend.to(`/${redirectTo}`);
20
- return;
21
- }
22
- wixWindow.openLightbox(LIGHTBOX_NAMES.LOGIN_ERROR_ALERT);
23
- });
24
- }
25
- }
26
-
27
- module.exports = {
28
- loadingPageOnReady,
29
- };
@@ -1,354 +0,0 @@
1
- const { location: wixLocation } = require('@wix/site-location');
2
- const { window: wixWindow } = require('@wix/site-window');
3
-
4
- const { LIGHTBOX_NAMES } = require('../public/consts');
5
- const {
6
- generateId,
7
- formatPracticeAreasForDisplay,
8
- isWixHostedImage,
9
- } = require('../public/Utils/sharedUtils');
10
-
11
- const TESTIMONIALS_PER_PAGE_CONFIG = {
12
- DESKTOP: 4,
13
- TABLET: 2,
14
- MOBILE: 1,
15
- };
16
-
17
- const BREAKPOINTS = {
18
- DESKTOP: 1301,
19
- TABLET: 750,
20
- };
21
-
22
- async function profileOnReady({ $w: _$w }) {
23
- const profileData = await wixWindow.getRouterData();
24
- console.log('profileData', profileData);
25
-
26
- let testimonialsPerPage = TESTIMONIALS_PER_PAGE_CONFIG.TABLET;
27
- let currentTestimonialPage = 0;
28
-
29
- if (!profileData) {
30
- wixLocation.to(`${wixLocation.baseUrl}/404`);
31
- return;
32
- }
33
-
34
- initializePage();
35
-
36
- function initializePage() {
37
- bindProfileData();
38
- setupAddressToggle();
39
- setupResponsiveTestimonials();
40
- }
41
-
42
- // Profile data binding
43
- function bindProfileData() {
44
- bindAddressData();
45
- bindMemberInfo();
46
- bindContactInfo();
47
- bindBusinessInfo();
48
- bindGalleryData();
49
- bindTestimonialsData();
50
- }
51
-
52
- function bindAddressData() {
53
- if (profileData.mainAddress) {
54
- setTextForElements(
55
- ['#LocationText', '#LocationText2', '#LocationText3'],
56
- profileData.mainAddress
57
- );
58
- } else {
59
- deleteElements(['#locationContainer', '#location1Container', '#locationContainer2']);
60
- }
61
-
62
- setupAdditionalAddresses();
63
- }
64
-
65
- function setupAdditionalAddresses() {
66
- _$w('#moreAdressesRepeater').data = profileData.moreAddressesToDisplay;
67
-
68
- if (profileData.moreAddressesToDisplay.length > 0) {
69
- _$w('#moreLocationButton').expand();
70
- _$w('#addressTitle').collapse();
71
- }
72
-
73
- _$w('#moreAdressesRepeater').onItemReady(($item, itemData) => {
74
- console.log('Item Data:', itemData);
75
- $item('#adressText').text = itemData.address || '';
76
- });
77
- }
78
-
79
- function setupAddressToggle() {
80
- toggleContainer('#moreLocationButton', '#addressContainer');
81
- }
82
-
83
- function toggleContainer(buttonId, containerId) {
84
- const $button = _$w(buttonId);
85
- const $container = _$w(containerId);
86
-
87
- $button.onClick(() => {
88
- const isCollapsed = $container.collapsed;
89
- $container[isCollapsed ? 'expand' : 'collapse']();
90
- $button.label = isCollapsed ? 'Less Locations -' : 'More Locations +';
91
- });
92
- }
93
-
94
- function bindMemberInfo() {
95
- bindMemberSince();
96
- bindStudentBadge();
97
- bindProfileImages();
98
- bindFullName();
99
- }
100
-
101
- function bindMemberSince() {
102
- if (profileData.memberSince) {
103
- _$w('#sinceYearText').text = profileData.memberSince;
104
- } else {
105
- _$w('#memberSinceBox').delete();
106
- }
107
- }
108
-
109
- function bindStudentBadge() {
110
- if (profileData.shouldHaveStudentBadge) {
111
- _$w('#studentContainer, #studentContainerMobile').expand();
112
- } else {
113
- _$w('#studentContainer, #studentContainerMobile').delete();
114
- }
115
- }
116
-
117
- function bindProfileImages() {
118
- if (profileData.logoImage) {
119
- _$w('#logoImage').src = profileData.logoImage;
120
- } else {
121
- _$w('#logoImage').delete();
122
- }
123
-
124
- if (profileData.profileImage && isWixHostedImage(profileData.profileImage)) {
125
- _$w('#profileImage').src = profileData.profileImage;
126
- } else {
127
- _$w('#profileImage').src = profileData.defaultProfileImage;
128
- }
129
- }
130
-
131
- function bindFullName() {
132
- if (profileData.fullName) {
133
- setTextForElements(
134
- ['#fullNameText', '#fullNameText2', '#fullNameTextFoter'],
135
- profileData.fullName
136
- );
137
- } else {
138
- deleteElements(['#fullNameText', '#fullNameText2', '#fullNameTextFoter']);
139
- }
140
- }
141
-
142
- // Contact information binding
143
- function bindContactInfo() {
144
- bindContactForm();
145
- bindBookingUrl();
146
- bindPhoneNumber();
147
- bindLicenseNumber();
148
- }
149
-
150
- function bindContactForm() {
151
- if (profileData.showContactForm) {
152
- _$w('#contactButton').onClick(() =>
153
- wixWindow.openLightbox(LIGHTBOX_NAMES.CONTACT_US, profileData)
154
- );
155
- } else {
156
- _$w('#contactButton').delete();
157
- }
158
- }
159
-
160
- function bindBookingUrl() {
161
- if (profileData.bookingUrl) {
162
- _$w('#bookNowButton').link = profileData.bookingUrl;
163
- } else {
164
- _$w('#bookNowButton').delete();
165
- }
166
- }
167
-
168
- function bindPhoneNumber() {
169
- if (profileData.phone) {
170
- const formattedPhoneNumber = profileData.phone.replace(/[^\d+]/g, '');
171
- const getPhoneHTML = $phoneSelector =>
172
- $phoneSelector.html.replace(
173
- $phoneSelector.text,
174
- `<a href="${`tel:${formattedPhoneNumber}`}">${profileData.phone}</a>`
175
- );
176
- _$w('#phoneText').html = getPhoneHTML(_$w('#phoneText'));
177
- _$w('#phoneText2').html = getPhoneHTML(_$w('#phoneText2'));
178
- } else {
179
- deleteElements(['#phoneContainer', '#phoneContainer2']);
180
- }
181
- }
182
-
183
- function bindLicenseNumber() {
184
- if (profileData.licenceNo) {
185
- _$w('#licenceNoText').text = profileData.licenceNo;
186
- } else {
187
- _$w('#licensesContainer').delete();
188
- }
189
- }
190
-
191
- function bindBusinessInfo() {
192
- bindAboutService();
193
- bindBusinessName();
194
- bindAreasOfPractice();
195
- }
196
-
197
- function bindAboutService() {
198
- if (profileData.aboutService) {
199
- _$w('#aboutYouText').html = profileData.aboutService;
200
- } else {
201
- _$w('#aboutSection').delete();
202
- }
203
- }
204
-
205
- function bindBusinessName() {
206
- if (profileData.businessName) {
207
- _$w('#businessName').text = profileData.businessName;
208
- _$w('#businessName').expand();
209
- } else {
210
- _$w('#businessName').delete();
211
- }
212
- }
213
-
214
- function bindAreasOfPractice() {
215
- const areasText = formatPracticeAreasForDisplay(profileData.areasOfPractices);
216
-
217
- if (areasText) {
218
- _$w('#areaOfPracticesText').text = areasText;
219
- } else {
220
- _$w('#areaOfPracticesText').delete();
221
- }
222
-
223
- if (Array.isArray(profileData.areasOfPractices) && profileData.areasOfPractices.length > 0) {
224
- populateRepeater(profileData.areasOfPractices, '#areaOfPracticesRepeater', '#practiceText');
225
- } else {
226
- _$w('#servicesSection').delete();
227
- }
228
- }
229
-
230
- function bindGalleryData() {
231
- if (profileData.bannerImages && profileData.bannerImages.length > 0) {
232
- _$w('#bannerImage').src = profileData.bannerImages[0];
233
- }
234
-
235
- if (!profileData.gallery?.length) {
236
- _$w('#gallerySection').delete();
237
- } else {
238
- _$w('#gallery').items = profileData.gallery;
239
- _$w('#gallerySection').restore();
240
- }
241
- }
242
-
243
- function bindTestimonialsData() {
244
- if (!profileData.testimonials?.length) {
245
- _$w('#testimonialsSection').delete();
246
- }
247
- }
248
-
249
- // Responsive testimonials setup
250
- async function setupResponsiveTestimonials() {
251
- const { window } = await wixWindow.getBoundingRect();
252
- testimonialsPerPage = getTestimonialsPerPage(window.width);
253
-
254
- // Monitor window resize
255
- setInterval(async () => {
256
- const { window: win } = await wixWindow.getBoundingRect();
257
- const newTestimonialsPerPage = getTestimonialsPerPage(win.width);
258
-
259
- if (newTestimonialsPerPage !== testimonialsPerPage) {
260
- testimonialsPerPage = newTestimonialsPerPage;
261
- currentTestimonialPage = 0;
262
- displayTestimonialsPage(profileData.testimonials);
263
- }
264
- }, 500);
265
-
266
- setupTestimonialsIfAvailable();
267
- }
268
-
269
- function setupTestimonialsIfAvailable() {
270
- if (profileData.testimonials.length > 0) {
271
- setupTestimonialsPagination(profileData.testimonials);
272
- _$w('#testimonialsSection').expand();
273
- } else {
274
- _$w('#testimonialsSection').delete();
275
- }
276
- }
277
-
278
- function getTestimonialsPerPage(width) {
279
- if (width >= BREAKPOINTS.DESKTOP) return TESTIMONIALS_PER_PAGE_CONFIG.DESKTOP;
280
- if (width >= BREAKPOINTS.TABLET) return TESTIMONIALS_PER_PAGE_CONFIG.TABLET;
281
- return TESTIMONIALS_PER_PAGE_CONFIG.MOBILE;
282
- }
283
-
284
- function setTextForElements(elementIds, text) {
285
- elementIds.forEach(id => {
286
- _$w(id).text = text;
287
- });
288
- }
289
-
290
- function deleteElements(elementIds) {
291
- elementIds.forEach(id => {
292
- _$w(id).delete();
293
- });
294
- }
295
-
296
- function populateRepeater(data, repeaterId, textElementId) {
297
- const repeaterData = data.map(item => ({
298
- _id: generateId(),
299
- text: item.trim(),
300
- }));
301
- _$w(repeaterId).data = repeaterData;
302
- _$w(repeaterId).onItemReady(($item, itemData) => {
303
- $item(textElementId).text = itemData.text;
304
- });
305
- }
306
-
307
- // Testimonials pagination
308
- function setupTestimonialsPagination(allTestimonials) {
309
- currentTestimonialPage = 0;
310
-
311
- _$w('#prevTestimonialBtn').onClick(() => {
312
- if (currentTestimonialPage > 0) {
313
- currentTestimonialPage--;
314
- displayTestimonialsPage(allTestimonials);
315
- }
316
- });
317
-
318
- _$w('#nextTestimonialBtn').onClick(() => {
319
- const maxPage = Math.floor((allTestimonials.length - 1) / testimonialsPerPage);
320
- if (currentTestimonialPage < maxPage) {
321
- currentTestimonialPage++;
322
- displayTestimonialsPage(allTestimonials);
323
- }
324
- });
325
-
326
- displayTestimonialsPage(allTestimonials);
327
- }
328
-
329
- function displayTestimonialsPage(allTestimonials) {
330
- const start = currentTestimonialPage * testimonialsPerPage;
331
- const end = start + testimonialsPerPage;
332
- const currentBatch = allTestimonials.slice(start, end);
333
-
334
- populateRepeater(currentBatch, '#testimonialsrepeater', '#testimonialText');
335
- updateTestimonialNavigation(end, allTestimonials.length);
336
- }
337
-
338
- function updateTestimonialNavigation(end, totalLength) {
339
- _$w('#prevTestimonialBtn').hide();
340
- _$w('#nextTestimonialBtn').hide();
341
-
342
- if (currentTestimonialPage > 0) {
343
- _$w('#prevTestimonialBtn').show();
344
- }
345
-
346
- if (end < totalLength) {
347
- _$w('#nextTestimonialBtn').show();
348
- }
349
- }
350
- }
351
-
352
- module.exports = {
353
- profileOnReady,
354
- };
@@ -1,39 +0,0 @@
1
- const { location: wixLocationFrontend } = require('@wix/site-location');
2
- const { authentication } = require('@wix/site-members');
3
- const { local } = require('@wix/site-storage');
4
-
5
- async function qaPageOnReady({ $w: _$w, loginQAMember }) {
6
- try {
7
- const { userEmail, secret, redirectTo, ...restQueryParams } = await wixLocationFrontend.query();
8
-
9
- if (!userEmail || !secret) {
10
- throw new Error('Missing required parameters: userEmail and/or secret');
11
- }
12
-
13
- const result = await loginQAMember({ userEmail, secret });
14
-
15
- if (!result.success || !result.token) {
16
- throw new Error(result.error || 'Login failed');
17
- }
18
-
19
- await authentication.applySessionToken(result.token);
20
- console.log('QA user logged in successfully');
21
-
22
- await local.setItem('memberId', result.memberCMSId);
23
- const queryParams = new URLSearchParams({ ...restQueryParams, token: result.memberCMSId });
24
- const redirectUrl = redirectTo ? `/${redirectTo}?${queryParams.toString()}` : '/';
25
-
26
- await wixLocationFrontend.to(redirectUrl);
27
- } catch (error) {
28
- console.error('QA login failed:', error);
29
-
30
- const qaTextElement = _$w('#qaText');
31
- if (qaTextElement) {
32
- qaTextElement.text = 'Login failed: ' + (error.message || 'Unknown error');
33
- }
34
- }
35
- }
36
-
37
- module.exports = {
38
- qaPageOnReady,
39
- };
@@ -1,13 +0,0 @@
1
- const { lightbox } = require('@wix/site-window');
2
-
3
- async function saveAlertsOnReady({ $w: _$w }) {
4
- const receivedData = await lightbox.getContext();
5
- _$w('#closeButton').onClick(() => lightbox.close());
6
- _$w('#cancelButton').onClick(() => lightbox.close());
7
- _$w('#leaveButton').link = receivedData?.membersExternalPortalUrl;
8
- _$w('#leaveButton').target = '_blank';
9
- }
10
-
11
- module.exports = {
12
- saveAlertsOnReady,
13
- };
@@ -1,46 +0,0 @@
1
- const { lightbox } = require('@wix/site-window');
2
-
3
- function selectBannerImagesOnReady({ $w: _$w }) {
4
- _$w('#imageDataset').onReady(async () => {
5
- const numOfItems = _$w('#imageDataset').getTotalCount();
6
- const result = await _$w('#imageDataset').getItems(0, numOfItems);
7
- const items = result.items;
8
- console.log('Loaded items from dataset:', items);
9
-
10
- _$w('#bannerImagesRepeater').data = items;
11
- });
12
-
13
- _$w('#bannerImagesRepeater').onItemReady(($item, itemData, index) => {
14
- $item('#bannerImage').src = itemData.image; // image field
15
- $item('#bannerSelected').checked = false;
16
-
17
- // Only one checkbox can be selected
18
- $item('#bannerSelected').onChange(() => {
19
- if ($item('#bannerSelected').checked) {
20
- _$w('#bannerImagesRepeater').forEachItem(($otherItem, _, otherIndex) => {
21
- if (otherIndex !== index) {
22
- $otherItem('#bannerSelected').checked = false;
23
- }
24
- });
25
- }
26
- });
27
- });
28
-
29
- _$w('#uploadSelectedImages').onClick(() => {
30
- let selectedImage = null;
31
-
32
- _$w('#bannerImagesRepeater').forEachItem(($item, itemData) => {
33
- if ($item('#bannerSelected').checked) {
34
- selectedImage = {
35
- image: itemData.image,
36
- title: itemData.title,
37
- };
38
- }
39
- });
40
- lightbox.close(selectedImage);
41
- });
42
- }
43
-
44
- module.exports = {
45
- selectBannerImagesOnReady,
46
- };
@@ -1,19 +0,0 @@
1
- const { lightbox } = require('@wix/site-window');
2
-
3
- function deleteConfirmOnReady({ $w: _$w }) {
4
- _$w('#delete').onClick(() => {
5
- lightbox.close({
6
- toDelete: true,
7
- });
8
- });
9
-
10
- _$w('#cancel').onClick(() => {
11
- lightbox.close({
12
- toDelete: false,
13
- });
14
- });
15
- }
16
-
17
- module.exports = {
18
- deleteConfirmOnReady,
19
- };
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- ...require('./ContactUs.js'),
3
- ...require('./Profile.js'),
4
- ...require('./Home.js'),
5
- ...require('./personalDetails.js'),
6
- ...require('./QAPage.js'),
7
- ...require('./LoadingPage.js'),
8
- ...require('./SelectBannerImages.js'),
9
- ...require('./deleteConfirm.js'),
10
- ...require('./SaveAlerts.js'),
11
- ...require('./LearnMore.js'),
12
- };