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-x: hidden;
overflow-y: auto; overflow-y: auto;
outline: 0; outline: 0;
background: $gray-100; background: $white;
&.full-screen { &.full-screen {
top: 0; top: 0;

View file

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

View file

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

View file

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

View file

@ -21,6 +21,6 @@ const fmgPageValues = {
CONFIRMATION: "confirmation", 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. // create a submitted order object from vuex.
const submittedOrder = context.state.order; const submittedOrder = context.state.order;
//add experiments to submittedOrder const experiments = context.state.applicationUser.experiments;
submittedOrder.experiments = context.state.applicationUser.experiments;
// set to local storage // set to local storage
window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder)); window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder));
// clear vuex // clear vuex
context.commit(storeMutations.RESET_STATE); context.commit(storeMutations.RESET_STATE);
//restore user's experiments
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
}, },
resetSubmittedOrder(context) { resetSubmittedOrder(context) {