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:
|
OUTLOOK_CALENDAR:
|
||||||
"https://outlook.office.com/calendar/deeplink/compose?path=/calendar/action/compose&rru=addevent",
|
"https://outlook.office.com/calendar/deeplink/compose?path=/calendar/action/compose&rru=addevent",
|
||||||
FRONTEND_LOGGER_PATH: "/analytics/api/v1/logging",
|
FRONTEND_LOGGER_PATH: "/analytics/api/v1/logging",
|
||||||
|
AFFILIATE_COOKIE_CONTAINING_NAME: "_Track",
|
||||||
};
|
};
|
||||||
|
|
||||||
export { applicationConfig };
|
export { applicationConfig };
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,9 @@ const storeMutations = {
|
||||||
RESET_LEADGEN_SERVICEZIP_STATE: "resetLeadGenServiceZipState",
|
RESET_LEADGEN_SERVICEZIP_STATE: "resetLeadGenServiceZipState",
|
||||||
RESET_LEADGEN_QUOTE_STATE: "resetLeadGenQuoteState",
|
RESET_LEADGEN_QUOTE_STATE: "resetLeadGenQuoteState",
|
||||||
RESET_IS_LEADGEN: "resetIsLeadGen",
|
RESET_IS_LEADGEN: "resetIsLeadGen",
|
||||||
|
|
||||||
|
//Affiliate Cookies
|
||||||
|
UPDATE_AFFILIATE_COOKIES: "updateAffiliateCookies",
|
||||||
};
|
};
|
||||||
|
|
||||||
export { storeMutations };
|
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 =
|
= PRIVATE FUNCTIONS =
|
||||||
|
|
@ -292,3 +303,15 @@ function getCookieValueByName(name) {
|
||||||
function isLocalhost() {
|
function isLocalhost() {
|
||||||
return location.hostname.includes("localhost");
|
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,
|
setSessionIdIfUnset,
|
||||||
isCookieSet,
|
isCookieSet,
|
||||||
refreshCookieExpiration,
|
refreshCookieExpiration,
|
||||||
|
getAffiliateCookies,
|
||||||
} from "@/helpers/heritage-integration/cookie-helper.js";
|
} from "@/helpers/heritage-integration/cookie-helper.js";
|
||||||
import { cookieNames } from "@/constants/cookie-names";
|
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";
|
import { deleteFunnelCookie } from "./cookie-helper";
|
||||||
|
|
||||||
const randomUUID = "68d89736-c277-46f1-8fee-c3dacdb23c08";
|
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) {
|
export function setupCrypto(mockValue) {
|
||||||
global.crypto = {
|
global.crypto = {
|
||||||
randomUUID: jest.fn(),
|
randomUUID: jest.fn(),
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import {
|
||||||
getFunnelCookie,
|
getFunnelCookie,
|
||||||
updateSessionIdCookie,
|
updateSessionIdCookie,
|
||||||
deleteFunnelCookie,
|
deleteFunnelCookie,
|
||||||
|
getAffiliateCookies,
|
||||||
} 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 {
|
||||||
|
|
@ -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(
|
const loadSessionResponse = await loadSessionIfPresent(
|
||||||
to.query.isInsurance != null
|
to.query.isInsurance != null
|
||||||
? to.query.isInsurance == "true"
|
? to.query.isInsurance == "true"
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,7 @@ const getDefaultState = () => {
|
||||||
lastPageVisited: null,
|
lastPageVisited: null,
|
||||||
experiments: [],
|
experiments: [],
|
||||||
triggeredSiteEntry: false,
|
triggeredSiteEntry: false,
|
||||||
|
affiliateCookies: [],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -732,6 +733,9 @@ export const mutations = {
|
||||||
updateTriggeredSiteEntry(state, wasSiteEntryTriggered) {
|
updateTriggeredSiteEntry(state, wasSiteEntryTriggered) {
|
||||||
state.applicationUser.triggeredSiteEntry = wasSiteEntryTriggered;
|
state.applicationUser.triggeredSiteEntry = wasSiteEntryTriggered;
|
||||||
},
|
},
|
||||||
|
updateAffiliateCookies(state, affiliateCookies) {
|
||||||
|
state.applicationUser.affiliateCookies = affiliateCookies;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Export Getters
|
// Export Getters
|
||||||
|
|
@ -1809,6 +1813,8 @@ export const actions = {
|
||||||
|
|
||||||
// create a new array to avoid mutating state
|
// create a new array to avoid mutating state
|
||||||
const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace);
|
const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace);
|
||||||
|
//affiliate cookie save only when submitAfterSave
|
||||||
|
const affiliateCookies = submitAfterSave ? applicationUser.affiliateCookies : null;
|
||||||
|
|
||||||
return globalMethods.callHttpClient({
|
return globalMethods.callHttpClient({
|
||||||
method: endpoints.SaveSession.method,
|
method: endpoints.SaveSession.method,
|
||||||
|
|
@ -1822,6 +1828,7 @@ export const actions = {
|
||||||
lastPage: applicationUser.lastPageVisited,
|
lastPage: applicationUser.lastPageVisited,
|
||||||
pageData: applicationUser.pageData,
|
pageData: applicationUser.pageData,
|
||||||
savedSessionId: applicationUser.savedSessionId,
|
savedSessionId: applicationUser.savedSessionId,
|
||||||
|
affiliateCookies: affiliateCookies,
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
vehicle: {
|
vehicle: {
|
||||||
|
|
@ -2796,6 +2803,7 @@ export const actions = {
|
||||||
const submittedOrder = context.state.order;
|
const submittedOrder = context.state.order;
|
||||||
|
|
||||||
const experiments = context.state.applicationUser.experiments;
|
const experiments = context.state.applicationUser.experiments;
|
||||||
|
const affiliateCookies = context.state.applicationUser.affiliateCookies;
|
||||||
|
|
||||||
// set to local storage
|
// set to local storage
|
||||||
window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder));
|
window.sessionStorage.setItem("submittedOrder", JSON.stringify(submittedOrder));
|
||||||
|
|
@ -2809,6 +2817,9 @@ export const actions = {
|
||||||
//restore user's experiments
|
//restore user's experiments
|
||||||
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
|
context.commit(storeMutations.UPDATE_EXPERIMENTS, experiments);
|
||||||
|
|
||||||
|
//restore affiliate cookies
|
||||||
|
context.commit(storeMutations.UPDATE_AFFILIATE_COOKIES, affiliateCookies);
|
||||||
|
|
||||||
//clear leadGen session storage
|
//clear leadGen session storage
|
||||||
window.sessionStorage.removeItem("leadGenState");
|
window.sessionStorage.removeItem("leadGenState");
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue