Merge remote-tracking branch 'origin/release/2024.02.08' into feature/skiener/promo-unit-tests

This commit is contained in:
Scott Kiener 2024-01-22 13:14:33 -05:00
commit 9fd8c7aac4
6 changed files with 29 additions and 20 deletions

View file

@ -129,7 +129,7 @@ export default {
overflow-x: hidden;
overflow-y: auto;
outline: 0;
background: $gray-100;
background: $white;
&.full-screen {
top: 0;

View file

@ -387,7 +387,9 @@ export default {
text-decoration: underline;
}
.header-container {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
padding: 1rem 0 1.5rem 0;
p {
@ -395,6 +397,11 @@ export default {
font-weight: 400;
font-size: 1.25rem;
color: $black;
margin: 0;
}
img {
margin-right: 0.5rem;
}
}

View file

@ -9,16 +9,9 @@ export default {
return Object.hasOwn(store.getters.experimentSettings, settingName);
},
getSettingValue(settingName) {
if (this.hasSetting(settingName)) {
return store.getters.experimentSettings[settingName];
} else if (store.getters.hasSubmittedOrder) {
const experimentSettings = store.getters.submittedOrder.experiments
.filter((x) => x.isActive)
.reduce((r, c) => ({ ...r, ...c.settings }), {});
return experimentSettings[settingName] ?? null;
} else {
return null;
}
return this.hasSetting(settingName)
? store.getters.experimentSettings[settingName]
: null;
},
},
};

View file

@ -9,7 +9,7 @@ import { queryStrings } from "@/constants/query-strings";
import { getQuerystringParameter } from "@/helpers/querystring-helper";
import { getDeviceIdValue } from "@/helpers/heritage-integration/cookie-helper";
import { showFmgLoadingModal } from "@/helpers/loading-modal-helper";
import { fmgPageValues, homepageName } from "@/router/router-constants/fmgPage-values";
import { fmgPageValues, funnelStartPageName } from "@/router/router-constants/fmgPage-values";
// Heritage integration
import { isSavedSessionStillActive } from "@/helpers/heritage-integration/session-helper";
@ -17,6 +17,7 @@ import {
updateOrCreateFunnelCookie,
getFunnelCookie,
updateSessionIdCookie,
deleteFunnelCookie,
} from "@/helpers/heritage-integration/cookie-helper";
import { loadSessionIfPresent, saveSession } from "@/helpers/heritage-integration/order-helper";
import {
@ -49,12 +50,13 @@ const routes = [
// If the saved session has timed out, clear the session, execute 404 logic.
if (getFunnelCookie() !== null && !isSavedSessionStillActive()) {
await baseMixin.methods.dispatchStoreAction(storeActions.RESET_STATE);
deleteFunnelCookie();
GoToFunnelStartOn404(next);
}
// Intercept all navigation if a submitted order exists in storage
if (store.getters.hasSubmittedOrder) {
if (to.query.fmgPage !== homepageName) {
if (to.query.fmgPage !== funnelStartPageName) {
to.query.fmgPage = fmgPageValues.CONFIRMATION;
}
}
@ -141,6 +143,11 @@ const routes = [
} catch (error) {
console.log(error);
if (to.query?.fmgPage === funnelStartPageName) {
deleteFunnelCookie();
await baseMixin.methods.dispatchStoreAction(storeActions.RESET_STATE);
}
// If we don't have a route, go to our 404 page.
GoToFunnelStartOn404(next);
}
@ -185,7 +192,7 @@ router.beforeEach(async (to, from, next) => {
// Refresh page if navigating to self to prevent locking.
// For now only carved out for vehicle; all modals are opened through anchor tags at the moment,
// which also self navigate, but relied on the page remaining the same on self-navigation.
} else if (toQueryPage === fromQueryPage && toQueryPage === homepageName) {
} else if (toQueryPage === fromQueryPage && toQueryPage === funnelStartPageName) {
router.go(0);
} else {
next();
@ -403,7 +410,7 @@ function GoToFunnelStartOn404(next) {
next({
path: "/",
query: { fmgPage: homepageName },
query: { fmgPage: funnelStartPageName },
});
}

View file

@ -21,6 +21,6 @@ const fmgPageValues = {
CONFIRMATION: "confirmation",
};
const homepageName = fmgPageValues.VEHICLE;
const funnelStartPageName = fmgPageValues.VEHICLE;
export { fmgPageValues, homepageName };
export { fmgPageValues, funnelStartPageName };

View file

@ -2514,14 +2514,16 @@ export const actions = {
// create a submitted order object from vuex.
const submittedOrder = context.state.order;
//add experiments to submittedOrder
submittedOrder.experiments = context.state.applicationUser.experiments;
const experiments = context.state.applicationUser.experiments;
// set to local storage
window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder));
// clear vuex
context.commit(storeMutations.RESET_STATE);
//restore user's experiments
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
},
resetSubmittedOrder(context) {