From f5f720526fb64a7e07e38a67950cf8fa7a6fae50 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Wed, 25 Mar 2026 15:10:57 -0400 Subject: [PATCH] CASH-2415 CASH-2415 changes to allow forcing experiments on querystring --- src/constants/endpoints.js | 4 ++++ src/constants/store-actions.js | 1 + src/constants/store-mutations.js | 1 - .../helpers/initialize-from-querystrings.js | 17 ++++++++++++----- src/router/methods/helpers/run-experiments.js | 12 ++++++++++++ src/store/index.js | 19 +++++++++++++++++++ 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/constants/endpoints.js b/src/constants/endpoints.js index d25fce6a3..c77b1bbad 100644 --- a/src/constants/endpoints.js +++ b/src/constants/endpoints.js @@ -196,6 +196,10 @@ const endpoints = { url: "/experiments/api/v1/experiments/run", method: "POST", }, + ForceExperiments: { + url: "/experiments/api/v1/experiments/forceVariations", + method: "POST", + }, GetInsuranceCompanyList: { url: "/account/api/v1/account/insurance-companies", method: "GET", diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 26bcc25e1..4f405eb0f 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -47,6 +47,7 @@ const storeActions = { TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA: "taxOrderItemsAndSaveServerData", GET_EXPERIMENTS_BY_USER: "GetExperimentsByUser", RUN_EXPERIMENTS_FOR_TRIGGER: "runExperimentsForTrigger", + FORCE_EXPERIMENTS: "forceExperiments", CLEAR_VIN: "clearVin", RESET_SAVE_SESSION_PROMISE: "resetSaveSessionPromise", GET_SIGNATURE: "getSignature", diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 5c6c2e22d..567812702 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -118,7 +118,6 @@ const storeMutations = { UPDATE_EXTERNAL_PARAMETER_IS_INSURANCE: "updateExternalParameterIsInsurance", UPDATE_EXTERNAL_PARAMETER_VIN_SELECTION: "updateExternalParameterVinSelection", UPDATE_EXTERNAL_PARAMETER_SERVICE_PACKAGE: "updateExternalParameterServicePackage", - UPDATE_EXTERNAL_PARAMETER_SOURCE: "updateExternalParameterSource", UPDATE_EXTERNAL_PARAMETER_PHONE_NUMBER: "updateExternalParameterPhoneNumber", UPDATE_EXTERNAL_PARAMETER_QS_STASH: "updateExternalParameterQsStash", diff --git a/src/router/methods/helpers/initialize-from-querystrings.js b/src/router/methods/helpers/initialize-from-querystrings.js index 8dff4423d..24f137a8f 100644 --- a/src/router/methods/helpers/initialize-from-querystrings.js +++ b/src/router/methods/helpers/initialize-from-querystrings.js @@ -9,6 +9,7 @@ import { getQuerystringParameter } from "@/helpers/querystring-helper"; import { queryStrings } from "@/constants/query-strings"; import { externalParameterStatus } from "@/constants/external-parameters"; import { debugLog } from "@/helpers/debug-log-helper"; +import { runExperiments, forceExperiments } from "@/router/methods/helpers/run-experiments"; export async function initializeFromQueryStrings() { // Get advertiser info @@ -16,6 +17,17 @@ export async function initializeFromQueryStrings() { // Read all external paramter queries and write to store. updateExternalParameterState(); + + forceExperimentsFromQuerystrings(); +} + +async function forceExperimentsFromQuerystrings() { + const experimentsFromQueryString = getQuerystringParameter(queryStrings.EXPERIMENTS); + if (experimentsFromQueryString) { + var qs = decodeURIComponent(window.location.search); + let forcedExperiments = qs.substring(qs.indexOf(queryStrings.EXPERIMENTS)); + await forceExperiments(forcedExperiments); + } } function setupAdvertisersAndAffiliates() { @@ -39,7 +51,6 @@ function updateExternalParameterState() { const externalParameterVinSelection = getQuerystringParameter(queryStrings.VIN_SELECTION); const externalParameterServicePackage = getQuerystringParameter(queryStrings.SERVICE_PACKAGE); const externalParameterNumberOfChips = getQuerystringParameter(queryStrings.NUMBER_OF_CHIPS); - const externalParameterSource = getQuerystringParameter(queryStrings.EXPERIMENTS); const externalParameterPhoneNumber = getQuerystringParameter(queryStrings.PHONE_NUMBER); if (!externalParameterZipCode) { @@ -58,7 +69,6 @@ function updateExternalParameterState() { debugLog("externalParameterVinSelection:", externalParameterVinSelection); debugLog("externalParameterServicePackage:", externalParameterServicePackage); debugLog("externalParameterNumberOfChips:", externalParameterNumberOfChips); - debugLog("externalParameterSource:", externalParameterSource); debugLog("externalPhoneNumber:", externalParameterPhoneNumber); } @@ -115,9 +125,6 @@ function updateExternalParameterState() { externalParameterVinSelection ); } - if (externalParameterSource) { - store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_SOURCE, externalParameterSource); - } if (externalParameterPhoneNumber) { store.commit( storeMutations.UPDATE_EXTERNAL_PARAMETER_PHONE_NUMBER, diff --git a/src/router/methods/helpers/run-experiments.js b/src/router/methods/helpers/run-experiments.js index 97472ad0c..edcfddeb4 100644 --- a/src/router/methods/helpers/run-experiments.js +++ b/src/router/methods/helpers/run-experiments.js @@ -28,3 +28,15 @@ export async function runExperiments(nextPageName) { nextPageName ); } + +export async function forceExperiments(forceExperimentQueryStringValues) { + await baseMixin.methods.dispatchStoreActionWithLogging( + storeActions.FORCE_EXPERIMENTS, + { + deviceId: getDeviceIdValue(), + queryStringExperiments: forceExperimentQueryStringValues, + }, + "/", + false + ); +} diff --git a/src/store/index.js b/src/store/index.js index e740bf0d3..23b8cf2a3 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1816,6 +1816,25 @@ export const actions = { context.commit(storeMutations.UPDATE_EXPERIMENTS, response.data.experiments); }, + async forceExperiments( + context, + { payload: { deviceId, queryStringExperiments }, pageNameToLog } + ) { + var payload = { + applicationName: applicationConfig.APPLICATION_NAME, + deviceId: deviceId, + queryStringExperiments: queryStringExperiments, + }; + + const response = await globalMethods.callHttpClient({ + method: endpoints.ForceExperiments.method, + endpoint: endpoints.ForceExperiments.url, + payload: payload, + logApiCall: true, + pageNameToLog: pageNameToLog, + }); + }, + getEvoxImage(context, { relativeUrl }) { return globalMethods.callHttpClient({ method: endpoints.GetPageData.method,