Updated logic for initial savesession call to create referral. Move it to beforeEach to make it snchronous.

This commit is contained in:
Jeremy-Z 2026-07-01 12:53:29 -04:00
parent 0eaf8ab2a8
commit db1222a53e
3 changed files with 19 additions and 4 deletions

View file

@ -26,6 +26,7 @@ export async function saveSession({ shouldAwaitSaveSessionQueue = false, submitA
// This should await anytime the referral number is not set, or the shouldAwaitSaveSessionQueue is set to true.
if (!store.order.referralNumber || shouldAwaitSaveSessionQueue) {
console.log('Awaiting save session promise', store.order.referralNumber, shouldAwaitSaveSessionQueue);
await saveSessionPromise;
}
}

View file

@ -155,6 +155,19 @@ router.beforeEach(async (to, from) => {
showIssLoadingModal(true);
}
const callSaveSession = (to.name === issPageValues.VEHICLE_SELECTION || to.name === issPageValues.POLICY_VEHICLES);
if ( callSaveSession ) {
// Forcing a synchronous savesession call here to create the referral for the first time.
// AfterEach does not support synchronous calls that block navigation. Which is why this is in the beforeEach method.
// This only needs to be called once in a certain location, all other saveession calls are async in afterEach (except the last one on order submission)
// NOTE: This call should be creating the referral number. After this point in the site flow, referral number is critical for several pieces of logic and logging.
// Thereforce, we want to force a bailout here if it errors out.
console.log('Saving session with waiting coming from duplicate check page.');
showIssLoadingModal(true);
await saveSession({ shouldAwaitSaveSessionQueue: true,bailoutOnError: true });
showIssLoadingModal(false);
}
const toQueryPage = to.query?.issPage;
const notToPayInAdvanceReturn = toQueryPage !== issPageValues.PAYMENT_RETURN;
const isInIframe = window !== window.top || fromQueryPage === issPageValues.PAYMENT_PAGE;
@ -204,10 +217,11 @@ router.afterEach(async (to, from) => {
to.state?.[routerParams.SKIP_SAVE_SESSION]
?? router.options.history.state?.[routerParams.SKIP_SAVE_SESSION]
);
if (from.name !== undefined && !skipSaveSession && !store.hasSubmittedOrder()) {
await saveSession({ bailoutOnError: from.name === issPageValues.ENTRY_PAGE});
}
if (from.name !== undefined && !skipSaveSession && !store.hasSubmittedOrder()) {
await saveSession({ bailoutOnError: false});
}
document.title = routerTitles[to.query.issPage] || 'Safelite Solutions®';
if (shouldRunExperiments) {

View file

@ -110,6 +110,6 @@ describe('Router afterEach skipSaveSession', () => {
);
expect(saveSession).toHaveBeenCalledTimes(1);
expect(saveSession).toHaveBeenCalledWith({ bailoutOnError: true });
expect(saveSession).toHaveBeenCalledWith({ bailoutOnError: false });
});
});