abmp-npm 10.0.87 → 10.1.0
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 +1 -1
- package/pages/Home.js +0 -19
- package/public/Utils/homePage.js +0 -29
- package/public/Utils/homePageLoadTrace.js +0 -58
package/package.json
CHANGED
package/pages/Home.js
CHANGED
|
@@ -5,7 +5,6 @@ const { withWarmUpData } = require('psdev-utils/frontend');
|
|
|
5
5
|
|
|
6
6
|
const { ADDRESS_STATUS_TYPES, DEFAULT_FILTER, DROPDOWN_OPTIONS } = require('../public/consts.js');
|
|
7
7
|
const { createHomepageUtils } = require('../public/Utils/homePage.js');
|
|
8
|
-
const { logHomePageLoadPhase } = require('../public/Utils/homePageLoadTrace.js');
|
|
9
8
|
const {
|
|
10
9
|
getMainAddress,
|
|
11
10
|
formatPracticeAreasForDisplay,
|
|
@@ -14,8 +13,6 @@ const {
|
|
|
14
13
|
normalizeExternalUrl,
|
|
15
14
|
} = require('../public/Utils/sharedUtils.js');
|
|
16
15
|
|
|
17
|
-
logHomePageLoadPhase('home_js_module_evaluated');
|
|
18
|
-
|
|
19
16
|
let filter = JSON.parse(JSON.stringify(DEFAULT_FILTER));
|
|
20
17
|
let dropDownOptions = JSON.parse(JSON.stringify(DROPDOWN_OPTIONS));
|
|
21
18
|
let stateCityMap;
|
|
@@ -39,7 +36,6 @@ const homePageOnReady = async ({
|
|
|
39
36
|
getNonCompiledFiltersOptions,
|
|
40
37
|
filterProfiles,
|
|
41
38
|
}) => {
|
|
42
|
-
logHomePageLoadPhase('wix_onready_handler_entered');
|
|
43
39
|
const {
|
|
44
40
|
getParamsMapping,
|
|
45
41
|
handlePagination,
|
|
@@ -62,9 +58,7 @@ const homePageOnReady = async ({
|
|
|
62
58
|
detectMobile();
|
|
63
59
|
initPageUI();
|
|
64
60
|
attachEventListeners();
|
|
65
|
-
logHomePageLoadPhase('before_handleUrlParams');
|
|
66
61
|
await handleUrlParams();
|
|
67
|
-
logHomePageLoadPhase('after_handleUrlParams');
|
|
68
62
|
|
|
69
63
|
async function detectMobile() {
|
|
70
64
|
try {
|
|
@@ -294,9 +288,7 @@ const homePageOnReady = async ({
|
|
|
294
288
|
}
|
|
295
289
|
|
|
296
290
|
async function applyFilterToUI(isDefaultStateParams) {
|
|
297
|
-
logHomePageLoadPhase('applyFilterToUI_start', { isDefaultStateParams });
|
|
298
291
|
const renderingEnv = await rendering.env();
|
|
299
|
-
logHomePageLoadPhase('applyFilterToUI_rendering_env', { env: renderingEnv });
|
|
300
292
|
const setFilterFromParams = async (isInitializeValue = true) => {
|
|
301
293
|
const params = await wixLocation.query();
|
|
302
294
|
console.log('params inside setFilterFromParams ', params);
|
|
@@ -330,9 +322,7 @@ const homePageOnReady = async ({
|
|
|
330
322
|
await setFilterFromParams(true);
|
|
331
323
|
if (isDefaultStateParams) {
|
|
332
324
|
console.log('default state set for nearby');
|
|
333
|
-
logHomePageLoadPhase('applyFilterToUI_default_path_fetch_and_nearby_start');
|
|
334
325
|
await Promise.all([fetchFilterData(), nearByHandler(true)]);
|
|
335
|
-
logHomePageLoadPhase('applyFilterToUI_default_path_complete');
|
|
336
326
|
return;
|
|
337
327
|
}
|
|
338
328
|
console.log('not default state');
|
|
@@ -351,15 +341,12 @@ const homePageOnReady = async ({
|
|
|
351
341
|
: () => updateResults('filterTimeout', true);
|
|
352
342
|
console.log('filter ..', filter);
|
|
353
343
|
try {
|
|
354
|
-
logHomePageLoadPhase('applyFilterToUI_non_default_path_start');
|
|
355
344
|
await Promise.all([
|
|
356
345
|
fetchFilterData().then(() => setFilterFromParams(false)),
|
|
357
346
|
//TODO: remove this workaround to fix issue with SSR showing invalid results
|
|
358
347
|
renderingEnv === 'backend' ? Promise.resolve() : searchPromise(),
|
|
359
348
|
]);
|
|
360
|
-
logHomePageLoadPhase('applyFilterToUI_non_default_path_complete');
|
|
361
349
|
} catch (error) {
|
|
362
|
-
logHomePageLoadPhase('applyFilterToUI_error', { message: String(error && error.message) });
|
|
363
350
|
console.error('[applyFilterToUI] failed with error:', error);
|
|
364
351
|
multiStateBoxSelector.changeState('errorState');
|
|
365
352
|
}
|
|
@@ -438,7 +425,6 @@ const homePageOnReady = async ({
|
|
|
438
425
|
}
|
|
439
426
|
// NEAR BY FILTER
|
|
440
427
|
async function nearByHandler(preservePagination = false) {
|
|
441
|
-
logHomePageLoadPhase('nearByHandler_start', { preservePagination });
|
|
442
428
|
const isSearchingNearby = _$w('#nearBy').checked;
|
|
443
429
|
const renderingEnv = await rendering.env();
|
|
444
430
|
// 1. Disable nearby input while processing
|
|
@@ -452,7 +438,6 @@ const homePageOnReady = async ({
|
|
|
452
438
|
filter = newFilter;
|
|
453
439
|
console.log('filter inside nearByHandler', filter);
|
|
454
440
|
if (!success) {
|
|
455
|
-
logHomePageLoadPhase('nearByHandler_geolocation_failed');
|
|
456
441
|
if (renderingEnv !== 'backend') {
|
|
457
442
|
//on Backend environment, geolocation API don't work, so makes no sense to change state for near by
|
|
458
443
|
multiStateBoxSelector.changeState('nearByState');
|
|
@@ -467,7 +452,6 @@ const homePageOnReady = async ({
|
|
|
467
452
|
// If location is not selected, change state to "resultsState"
|
|
468
453
|
if (!isSearchingNearby) {
|
|
469
454
|
if (await noSearchCriteria()) {
|
|
470
|
-
logHomePageLoadPhase('nearByHandler_no_search_criteria');
|
|
471
455
|
multiStateBoxSelector.changeState('noSearchCriteria');
|
|
472
456
|
// 4. Re-enable nearby input
|
|
473
457
|
_$w('#nearBy').enable();
|
|
@@ -479,7 +463,6 @@ const homePageOnReady = async ({
|
|
|
479
463
|
|
|
480
464
|
// 4. Re-enable nearby input when done
|
|
481
465
|
_$w('#nearBy').enable();
|
|
482
|
-
logHomePageLoadPhase('nearByHandler_complete', { success: true });
|
|
483
466
|
return true;
|
|
484
467
|
}
|
|
485
468
|
|
|
@@ -487,7 +470,6 @@ const homePageOnReady = async ({
|
|
|
487
470
|
// FETCH STATE/CITY/AREAS OF PRACTICE FROM BACKEND ONCE AND STORE IT
|
|
488
471
|
|
|
489
472
|
async function fetchFilterData() {
|
|
490
|
-
logHomePageLoadPhase('fetchFilterData_start');
|
|
491
473
|
let completeStateList, areasOfPracticesList, stateCityMapList;
|
|
492
474
|
try {
|
|
493
475
|
const { COMPILED_STATE_LIST, COMPILED_AREAS_OF_PRACTICES, COMPILED_STATE_CITY_MAP } =
|
|
@@ -528,7 +510,6 @@ const homePageOnReady = async ({
|
|
|
528
510
|
|
|
529
511
|
// Update filter states after data is loaded
|
|
530
512
|
updateFiltersState();
|
|
531
|
-
logHomePageLoadPhase('fetchFilterData_complete');
|
|
532
513
|
}
|
|
533
514
|
|
|
534
515
|
// CONSTRUCT DROPDOWN OPTIONS FOR STATE, CITY, AREA OF PRACTICES
|
package/public/Utils/homePage.js
CHANGED
|
@@ -3,7 +3,6 @@ const { window: wixWindow, rendering } = require('@wix/site-window');
|
|
|
3
3
|
|
|
4
4
|
const { DEFAULT_FILTER } = require('../consts.js');
|
|
5
5
|
|
|
6
|
-
const { logHomePageLoadPhase } = require('./homePageLoadTrace.js');
|
|
7
6
|
const { debouncedFunction } = require('./sharedUtils.js');
|
|
8
7
|
|
|
9
8
|
const createHomepageUtils = (_$w, filterProfiles) => {
|
|
@@ -363,7 +362,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
363
362
|
});
|
|
364
363
|
}
|
|
365
364
|
async function getAndSetUserLocation(isSearchingNearby, filter) {
|
|
366
|
-
logHomePageLoadPhase('getAndSetUserLocation_start', { isSearchingNearby });
|
|
367
365
|
try {
|
|
368
366
|
let location = {
|
|
369
367
|
coords: {
|
|
@@ -371,7 +369,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
371
369
|
longitude: 0,
|
|
372
370
|
},
|
|
373
371
|
};
|
|
374
|
-
logHomePageLoadPhase('getAndSetUserLocation_before_getCurrentGeolocation');
|
|
375
372
|
location = await wixWindow.getCurrentGeolocation();
|
|
376
373
|
|
|
377
374
|
console.log('location inside getAndSetUserLocation', location);
|
|
@@ -387,15 +384,8 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
387
384
|
latitude: userLat,
|
|
388
385
|
longitude: userLong,
|
|
389
386
|
};
|
|
390
|
-
logHomePageLoadPhase('getAndSetUserLocation_success', {
|
|
391
|
-
lat: userLat,
|
|
392
|
-
lng: userLong,
|
|
393
|
-
});
|
|
394
387
|
return { success: true, filter };
|
|
395
388
|
} catch (error) {
|
|
396
|
-
logHomePageLoadPhase('getAndSetUserLocation_error', {
|
|
397
|
-
message: String(error && error.message),
|
|
398
|
-
});
|
|
399
389
|
console.warn('Failed to get user location in getAndSetUserLocation', error);
|
|
400
390
|
return { success: false, filter };
|
|
401
391
|
}
|
|
@@ -514,7 +504,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
514
504
|
);
|
|
515
505
|
}
|
|
516
506
|
async function parseAndValidateQueryParams(filter, pagination) {
|
|
517
|
-
logHomePageLoadPhase('parseAndValidateQueryParams_start');
|
|
518
507
|
const params = await wixLocation.query();
|
|
519
508
|
const paramsMapping = getParamsMapping(filter, pagination);
|
|
520
509
|
const {
|
|
@@ -526,11 +515,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
526
515
|
const isSearchingNearby = params.nearby === 'true';
|
|
527
516
|
const isNoParams = !withoutPreviewParams || Object.keys(withoutPreviewParams).length === 0;
|
|
528
517
|
const { success, filter: newFilter } = await getAndSetUserLocation(isSearchingNearby, filter);
|
|
529
|
-
logHomePageLoadPhase('parseAndValidateQueryParams_after_geolocation', {
|
|
530
|
-
isNoParams,
|
|
531
|
-
isSearchingNearby,
|
|
532
|
-
success,
|
|
533
|
-
});
|
|
534
518
|
|
|
535
519
|
// Auto-enable nearby if GPS permission granted on fresh page load
|
|
536
520
|
if (
|
|
@@ -541,7 +525,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
541
525
|
!isSearchingNearby
|
|
542
526
|
) {
|
|
543
527
|
await wixQueryParams.add({ nearby: 'true', page: '1' });
|
|
544
|
-
logHomePageLoadPhase('parseAndValidateQueryParams_return', { branch: 'auto_nearby_url' });
|
|
545
528
|
return { isDefaultStateParams: true, filter: newFilter };
|
|
546
529
|
}
|
|
547
530
|
|
|
@@ -555,7 +538,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
555
538
|
// });
|
|
556
539
|
// Don't search yet - let the caller decide what to do
|
|
557
540
|
// The search will be handled in applyFilterToUI
|
|
558
|
-
logHomePageLoadPhase('parseAndValidateQueryParams_return', { branch: 'default_no_params' });
|
|
559
541
|
return { isDefaultStateParams: true, filter: newFilter };
|
|
560
542
|
}
|
|
561
543
|
let autoAdjustFilters = false;
|
|
@@ -595,10 +577,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
595
577
|
withoutPreviewParams.page) ||
|
|
596
578
|
(Object.keys(withoutPreviewParams).length === 1 && withoutPreviewParams.nearby);
|
|
597
579
|
const isDefaultStateParams = isNoParams || isNearbyFilter;
|
|
598
|
-
logHomePageLoadPhase('parseAndValidateQueryParams_return', {
|
|
599
|
-
branch: 'with_query_params',
|
|
600
|
-
isDefaultStateParams,
|
|
601
|
-
});
|
|
602
580
|
return { isDefaultStateParams, filter: newFilter };
|
|
603
581
|
}
|
|
604
582
|
|
|
@@ -682,7 +660,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
682
660
|
isSearchingNearby,
|
|
683
661
|
preservePagination = false,
|
|
684
662
|
}) {
|
|
685
|
-
logHomePageLoadPhase('search_start', { timeoutType, isSearchingNearby });
|
|
686
663
|
const multiStateBoxSelector = _$w('#resultsStateBox');
|
|
687
664
|
const renderingEnv = await rendering.env();
|
|
688
665
|
const initSearchResultsUI = () => {
|
|
@@ -704,7 +681,6 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
704
681
|
longitude: 0,
|
|
705
682
|
}) === JSON.stringify(DEFAULT_FILTER)
|
|
706
683
|
) {
|
|
707
|
-
logHomePageLoadPhase('search_short_circuit_no_criteria');
|
|
708
684
|
multiStateBoxSelector.changeState('noSearchCriteria');
|
|
709
685
|
return [];
|
|
710
686
|
}
|
|
@@ -728,19 +704,14 @@ const createHomepageUtils = (_$w, filterProfiles) => {
|
|
|
728
704
|
timeoutType,
|
|
729
705
|
args: { filter, isSearchingNearby },
|
|
730
706
|
});
|
|
731
|
-
logHomePageLoadPhase('search_before_filterProfiles', { renderingEnv });
|
|
732
707
|
const { success, response, error } = await funcPromise();
|
|
733
708
|
if (!success) {
|
|
734
709
|
_$w('#numberOfResults').text = '';
|
|
735
710
|
console.error('[search] failed with error:', error);
|
|
736
|
-
logHomePageLoadPhase('search_filterProfiles_failed', {
|
|
737
|
-
message: String(error && error.message),
|
|
738
|
-
});
|
|
739
711
|
multiStateBoxSelector.changeState('errorState');
|
|
740
712
|
return [];
|
|
741
713
|
}
|
|
742
714
|
const totalCount = response.items.length;
|
|
743
|
-
logHomePageLoadPhase('search_filterProfiles_success', { totalCount });
|
|
744
715
|
if (!totalCount) {
|
|
745
716
|
_$w('#numberOfResults').text = 'Showing 0 results';
|
|
746
717
|
_$w('#noResultsMessage').text = `${
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One session per full page load. First log call creates `loadId` (send this to support for GCL search).
|
|
3
|
-
* Logs a plain object so DevTools shows an expandable tree; `loadId` is still easy to copy for GCL.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
function randomSegment() {
|
|
7
|
-
return Math.random().toString(36).slice(2, 10);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function nowMs() {
|
|
11
|
-
if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
|
|
12
|
-
return performance.now();
|
|
13
|
-
}
|
|
14
|
-
return Date.now();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
let session = null;
|
|
18
|
-
|
|
19
|
-
function ensureSession() {
|
|
20
|
-
if (session) {
|
|
21
|
-
return session;
|
|
22
|
-
}
|
|
23
|
-
const t0 = nowMs();
|
|
24
|
-
session = {
|
|
25
|
-
loadId: `hpl_${Date.now()}_${randomSegment()}_${randomSegment()}`,
|
|
26
|
-
t0,
|
|
27
|
-
};
|
|
28
|
-
return session;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @param {string} phase
|
|
33
|
-
* @param {Record<string, unknown>} [detail]
|
|
34
|
-
*/
|
|
35
|
-
function logHomePageLoadPhase(phase, detail) {
|
|
36
|
-
const s = ensureSession();
|
|
37
|
-
const elapsed = Math.round(nowMs() - s.t0);
|
|
38
|
-
const payload = {
|
|
39
|
-
type: 'HomePageLoad',
|
|
40
|
-
loadId: s.loadId,
|
|
41
|
-
phase,
|
|
42
|
-
elapsedSinceStartMs: elapsed,
|
|
43
|
-
wallTimeIso: new Date().toISOString(),
|
|
44
|
-
};
|
|
45
|
-
if (detail && typeof detail === 'object') {
|
|
46
|
-
payload.detail = detail;
|
|
47
|
-
}
|
|
48
|
-
console.log('[HomePageLoad]', payload);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function getHomePageLoadId() {
|
|
52
|
-
return ensureSession().loadId;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
module.exports = {
|
|
56
|
-
logHomePageLoadPhase,
|
|
57
|
-
getHomePageLoadId,
|
|
58
|
-
};
|