Merge pull request #1937 from Safelite/feature/Digital/CSR-1632
CSR-1632
This commit is contained in:
commit
0d6152f9f2
7 changed files with 73 additions and 2 deletions
|
|
@ -30,6 +30,7 @@ const applicationConfig = {
|
|||
OUTLOOK_CALENDAR:
|
||||
"https://outlook.office.com/calendar/deeplink/compose?path=/calendar/action/compose&rru=addevent",
|
||||
FRONTEND_LOGGER_PATH: "/analytics/api/v1/logging",
|
||||
AFFILIATE_COOKIE_CONTAINING_NAME: "_Track",
|
||||
};
|
||||
|
||||
export { applicationConfig };
|
||||
|
|
|
|||
|
|
@ -111,6 +111,9 @@ const storeMutations = {
|
|||
RESET_LEADGEN_SERVICEZIP_STATE: "resetLeadGenServiceZipState",
|
||||
RESET_LEADGEN_QUOTE_STATE: "resetLeadGenQuoteState",
|
||||
RESET_IS_LEADGEN: "resetIsLeadGen",
|
||||
|
||||
//Affiliate Cookies
|
||||
UPDATE_AFFILIATE_COOKIES: "updateAffiliateCookies",
|
||||
};
|
||||
|
||||
export { storeMutations };
|
||||
|
|
|
|||
|
|
@ -210,6 +210,17 @@ export function refreshCookieExpiration(name, expirationTime) {
|
|||
}
|
||||
}
|
||||
|
||||
export function getAffiliateCookies() {
|
||||
const affiliateCookies = [];
|
||||
const cookieContainingName = applicationConfig.AFFILIATE_COOKIE_CONTAINING_NAME;
|
||||
const affiliateCookiesAll = getCookiesContainingName(cookieContainingName);
|
||||
affiliateCookiesAll?.forEach((cookieName) => {
|
||||
const cookieValue = getCookieValueByName(cookieName);
|
||||
affiliateCookies.push({ CookieName: cookieName, CookieValue: cookieValue });
|
||||
});
|
||||
return affiliateCookies;
|
||||
}
|
||||
|
||||
/*
|
||||
===========================
|
||||
= PRIVATE FUNCTIONS =
|
||||
|
|
@ -292,3 +303,15 @@ function getCookieValueByName(name) {
|
|||
function isLocalhost() {
|
||||
return location.hostname.includes("localhost");
|
||||
}
|
||||
|
||||
function getCookiesContainingName(name) {
|
||||
const allCookies = document.cookie.split(";");
|
||||
const matchingCookies = [];
|
||||
for (const cookie of allCookies) {
|
||||
const [cookieName, cookieValue] = cookie.trim().split("=");
|
||||
if (cookieName.includes(name)) {
|
||||
matchingCookies.push(cookieName);
|
||||
}
|
||||
}
|
||||
return matchingCookies;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,9 +11,15 @@ import {
|
|||
setSessionIdIfUnset,
|
||||
isCookieSet,
|
||||
refreshCookieExpiration,
|
||||
getAffiliateCookies,
|
||||
} from "@/helpers/heritage-integration/cookie-helper.js";
|
||||
import { cookieNames } from "@/constants/cookie-names";
|
||||
import { removeAllTestCookies, setupCookies, setupCrypto } from "@/helpers/unit-test-helper";
|
||||
import {
|
||||
removeAllTestCookies,
|
||||
setupCookies,
|
||||
setupCrypto,
|
||||
setupAffiliateCookies,
|
||||
} from "@/helpers/unit-test-helper";
|
||||
import { deleteFunnelCookie } from "./cookie-helper";
|
||||
|
||||
const randomUUID = "68d89736-c277-46f1-8fee-c3dacdb23c08";
|
||||
|
|
@ -431,3 +437,21 @@ describe("cookies", () => {
|
|||
});
|
||||
});
|
||||
});
|
||||
describe("getAffiliateCookies", () => {
|
||||
it("should return an empty array if no affiliate cookies are found", () => {
|
||||
setupAffiliateCookies({});
|
||||
expect(getAffiliateCookies()).toEqual([]);
|
||||
});
|
||||
|
||||
it("should return an array of affiliate cookies when they are present", () => {
|
||||
setupAffiliateCookies({
|
||||
CookieName: "affiliate_cookie1_Track",
|
||||
CookieValue: "value_of_affiliate_cookie1",
|
||||
});
|
||||
|
||||
const expectedCookies = [
|
||||
{ CookieName: "affiliate_cookie1_Track", CookieValue: "value_of_affiliate_cookie1" },
|
||||
];
|
||||
expect(getAffiliateCookies()).toEqual(expectedCookies);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -139,6 +139,10 @@ export function setupCookies({ funnelCookieValue = "", includeHeritageCookie = t
|
|||
});
|
||||
}
|
||||
|
||||
export function setupAffiliateCookies(cookie) {
|
||||
setCookieProperties({ [cookie.CookieName]: cookie.CookieValue }, { isSecure: false });
|
||||
}
|
||||
|
||||
export function setupCrypto(mockValue) {
|
||||
global.crypto = {
|
||||
randomUUID: jest.fn(),
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import {
|
|||
getFunnelCookie,
|
||||
updateSessionIdCookie,
|
||||
deleteFunnelCookie,
|
||||
getAffiliateCookies,
|
||||
} from "@/helpers/heritage-integration/cookie-helper";
|
||||
import { loadSessionIfPresent, saveSession } from "@/helpers/heritage-integration/order-helper";
|
||||
import {
|
||||
|
|
@ -164,7 +165,11 @@ const routes = [
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
//Affiliate Cookies
|
||||
const affiliateCookies = getAffiliateCookies();
|
||||
if (affiliateCookies != null && affiliateCookies.length > 0) {
|
||||
store.commit(storeMutations.UPDATE_AFFILIATE_COOKIES, affiliateCookies);
|
||||
}
|
||||
const loadSessionResponse = await loadSessionIfPresent(
|
||||
to.query.isInsurance != null
|
||||
? to.query.isInsurance == "true"
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ const getDefaultState = () => {
|
|||
lastPageVisited: null,
|
||||
experiments: [],
|
||||
triggeredSiteEntry: false,
|
||||
affiliateCookies: [],
|
||||
},
|
||||
};
|
||||
};
|
||||
|
|
@ -732,6 +733,9 @@ export const mutations = {
|
|||
updateTriggeredSiteEntry(state, wasSiteEntryTriggered) {
|
||||
state.applicationUser.triggeredSiteEntry = wasSiteEntryTriggered;
|
||||
},
|
||||
updateAffiliateCookies(state, affiliateCookies) {
|
||||
state.applicationUser.affiliateCookies = affiliateCookies;
|
||||
},
|
||||
};
|
||||
|
||||
// Export Getters
|
||||
|
|
@ -1809,6 +1813,8 @@ export const actions = {
|
|||
|
||||
// create a new array to avoid mutating state
|
||||
const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace);
|
||||
//affiliate cookie save only when submitAfterSave
|
||||
const affiliateCookies = submitAfterSave ? applicationUser.affiliateCookies : null;
|
||||
|
||||
return globalMethods.callHttpClient({
|
||||
method: endpoints.SaveSession.method,
|
||||
|
|
@ -1822,6 +1828,7 @@ export const actions = {
|
|||
lastPage: applicationUser.lastPageVisited,
|
||||
pageData: applicationUser.pageData,
|
||||
savedSessionId: applicationUser.savedSessionId,
|
||||
affiliateCookies: affiliateCookies,
|
||||
},
|
||||
order: {
|
||||
vehicle: {
|
||||
|
|
@ -2796,6 +2803,7 @@ export const actions = {
|
|||
const submittedOrder = context.state.order;
|
||||
|
||||
const experiments = context.state.applicationUser.experiments;
|
||||
const affiliateCookies = context.state.applicationUser.affiliateCookies;
|
||||
|
||||
// set to local storage
|
||||
window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder));
|
||||
|
|
@ -2809,6 +2817,9 @@ export const actions = {
|
|||
//restore user's experiments
|
||||
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
|
||||
|
||||
//restore affiliate cookies
|
||||
context.commit(storeMutations.UPDATE_AFFILIATE_COOKIES, affiliateCookies);
|
||||
|
||||
//clear leadGen session storage
|
||||
window.sessionStorage.removeItem("leadGenState");
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue