From b21c6171e9d4574f4597a1d9e773074357e9b055 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Mon, 25 Jul 2022 09:30:00 -0400 Subject: [PATCH 1/2] CSR-706 | Remove state resetting on loadOrder As well as making loadOrder await the latest saveOrderPromise Also clearing saveOrderPromise if entering the funnel fresh to avoid a broken promise object --- src/constants/store-actions.js | 1 + src/constants/store-mutations.js | 1 + src/helpers/heritage-integration/order-helper.js | 2 ++ src/router/index.js | 3 +++ src/store/index.js | 8 ++++++-- 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 87331daea..6fa81d45f 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -31,6 +31,7 @@ const storeActions = { INITIALIZE_SESSION: "initializeSession", GET_EXPERIMENTS_BY_USER: "GetExperimentsByUser", CLEAR_VIN: "clearVin", + RESET_SAVE_ORDER_PROMISE: "resetSaveOrderPromise", // DEPENDENCY MUTATIONS RESET_VEHICLE_STATE_AND_DEPENDENCIES: "resetVehicleAndDependencies", diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 80697cc46..66b9ded0e 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -58,6 +58,7 @@ const storeMutations = { UPDATE_STATE_WITH_ORDER_INFORMATION: "updateStateWithOrderInformation", UPDATE_SAVE_ORDER_PROMISE: "updateSaveOrderPromise", UPDATE_LAST_PAGE_VISITED: "updateLastPageVisited", + RESET_SAVE_ORDER_PROMISE: "resetSaveOrderPromise", }; export { storeMutations }; diff --git a/src/helpers/heritage-integration/order-helper.js b/src/helpers/heritage-integration/order-helper.js index 9722744f0..2e6fcade0 100644 --- a/src/helpers/heritage-integration/order-helper.js +++ b/src/helpers/heritage-integration/order-helper.js @@ -60,6 +60,8 @@ export async function saveOrder() { and returns the response. */ async function loadOrder(referralNumber, referralDate, referralCorrelationId, accountNumber) { + // await the saveOrderPromise in the store to make sure we're loading up to date information + await store.getters.applicationUser.saveOrderPromise; const response = await baseMixin.methods.dispatchStoreAction(storeActions.LOAD_ORDER, { referralNumber: referralNumber.toString(), diff --git a/src/router/index.js b/src/router/index.js index d2a5ee154..98b26483b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -60,6 +60,9 @@ const routes = [ // On entering the funnel "fresh", read cookie information, decide what to do next. if (from.redirectedFrom === undefined) { + // clear the saveOrderPromise - if it exists in the vuex store but a new instance was created + // the saveOrderPromise will no longer point to a valid promise + baseMixin.methods.dispatchStoreAction(storeActions.RESET_SAVE_ORDER_PROMISE); const loadOrderResponse = await loadOrderIfPresent(); const pageToRedirectTo = await getPageToRouteExistingOrderTo(to, loadOrderResponse); diff --git a/src/store/index.js b/src/store/index.js index 90932c8bb..82d3323d1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -269,7 +269,9 @@ export const mutations = { resetState(state) { Object.assign(state, getDefaultState()); }, - + resetSaveOrderPromise(state) { + state.applicationUser.saveOrderPromise = null; + }, // Misc Mutations updateStateWithOrderInformation(state, orderInformation) { state.order.referralNumber = orderInformation.referralNumber; @@ -457,6 +459,9 @@ export const actions = { resetState(context) { context.commit(storeMutations.RESET_STATE); }, + resetSaveOrderPromise(context) { + context.commit(storeMutations.RESET_SAVE_ORDER_PROMISE); + }, // Content API Actions getRouteInfo(context, { pageName }) { @@ -701,7 +706,6 @@ export const actions = { accountNumber: accountNumber?.toString() }, }).then((response) => { - context.commit(storeMutations.RESET_STATE); context.commit(storeMutations.UPDATE_STATE_WITH_ORDER_INFORMATION, response.data); return response; }); From 62b72163d6127a8a09989bc4182e2ce221893b6f Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Mon, 25 Jul 2022 15:29:44 -0400 Subject: [PATCH 2/2] CSR-706 | Only clear state if referral does not match --- src/store/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/store/index.js b/src/store/index.js index 82d3323d1..64ba356e6 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -706,6 +706,10 @@ export const actions = { accountNumber: accountNumber?.toString() }, }).then((response) => { + // clear the state if the existing referral number does not equal what is returned from loadOrder + if (context.state.order.referralNumber != response.data.referralNumber) { + context.commit(storeMutations.RESET_STATE); + } context.commit(storeMutations.UPDATE_STATE_WITH_ORDER_INFORMATION, response.data); return response; });