diff --git a/client/src/App/App.jsx b/client/src/App/App.jsx index 441359097..6fe558910 100644 --- a/client/src/App/App.jsx +++ b/client/src/App/App.jsx @@ -18,7 +18,7 @@ import { checkUserSession } from "../redux/user/user.actions"; import { selectBodyshop, selectCurrentEula, selectCurrentUser } from "../redux/user/user.selectors"; import PrivateRoute from "../components/PrivateRoute"; import "./App.styles.scss"; -import handleBeta from "../utils/betaHandler"; +import handleBeta from "../utils/handleBeta"; import Eula from "../components/eula/eula.component"; import InstanceRenderMgr from "../utils/instanceRenderMgr"; import ProductFruitsWrapper from "./ProductFruitsWrapper.jsx"; diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 47b59a309..f0de7f403 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -43,7 +43,7 @@ import { selectRecentItems, selectSelectedHeader } from "../../redux/application import { setModalContext } from "../../redux/modals/modals.actions"; import { signOutStart } from "../../redux/user/user.actions"; import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; -import { checkBeta, handleBeta, setBeta } from "../../utils/betaHandler"; +import { checkBeta, handleBeta, setBeta } from "../../utils/handleBeta"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; diff --git a/client/src/utils/betaHandler.js b/client/src/utils/betaHandler.js deleted file mode 100644 index 804b38b7d..000000000 --- a/client/src/utils/betaHandler.js +++ /dev/null @@ -1,36 +0,0 @@ -export const BETA_KEY = "betaSwitchImex"; - -export const checkBeta = () => { - const cookie = document.cookie.split("; ").find((row) => row.startsWith(BETA_KEY)); - return cookie ? cookie.split("=")[1] === "true" : false; -}; - -export const setBeta = (value) => { - const domain = window.location.hostname.split(".").slice(-2).join("."); - document.cookie = `${BETA_KEY}=${value}; path=/; domain=.${domain}`; -}; - -export const handleBeta = () => { - // If the current host name does not start with beta or test, then we don't need to do anything. - if (window.location.hostname.startsWith("localhost")) { - console.log("Not on beta or test, so no need to handle beta."); - return; - } - - const isBeta = checkBeta(); - - const currentHostName = window.location.hostname; - - // Beta is enabled, but the current host name does start with beta. - if (isBeta && !currentHostName.startsWith("beta")) { - const href = `${window.location.protocol}//beta.${currentHostName}${window.location.pathname}${window.location.search}${window.location.hash}`; - window.location.replace(href); - } - - // Beta is not enabled, but the current host name does start with beta. - else if (!isBeta && currentHostName.startsWith("beta")) { - const href = `${window.location.protocol}//${currentHostName.replace("beta.", "")}${window.location.pathname}${window.location.search}${window.location.hash}`; - window.location.replace(href); - } -}; -export default handleBeta; diff --git a/client/src/utils/handleBeta.js b/client/src/utils/handleBeta.js index 804b38b7d..34bdab626 100644 --- a/client/src/utils/handleBeta.js +++ b/client/src/utils/handleBeta.js @@ -11,26 +11,32 @@ export const setBeta = (value) => { }; export const handleBeta = () => { - // If the current host name does not start with beta or test, then we don't need to do anything. if (window.location.hostname.startsWith("localhost")) { console.log("Not on beta or test, so no need to handle beta."); return; } const isBeta = checkBeta(); - const currentHostName = window.location.hostname; - // Beta is enabled, but the current host name does start with beta. - if (isBeta && !currentHostName.startsWith("beta")) { - const href = `${window.location.protocol}//beta.${currentHostName}${window.location.pathname}${window.location.search}${window.location.hash}`; - window.location.replace(href); - } + // Determine if the host name starts with "beta" or "www.beta" + const isBetaHost = currentHostName.startsWith("beta"); + const isBetaHostWithWWW = currentHostName.startsWith("www.beta"); - // Beta is not enabled, but the current host name does start with beta. - else if (!isBeta && currentHostName.startsWith("beta")) { - const href = `${window.location.protocol}//${currentHostName.replace("beta.", "")}${window.location.pathname}${window.location.search}${window.location.hash}`; + // Handle beta redirection + if (isBeta && !isBetaHost && !isBetaHostWithWWW) { + // From non-beta to beta + const newHostName = currentHostName.startsWith("www.") + ? `www.beta.${currentHostName.replace(/^www\./, "")}` + : `beta.${currentHostName}`; + const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`; + window.location.replace(href); + } else if (!isBeta && (isBetaHost || isBetaHostWithWWW)) { + // From beta to non-beta + const newHostName = currentHostName.replace(/^www\./, "").replace(/^beta\./, "www."); + const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`; window.location.replace(href); } }; + export default handleBeta;