Merged in release/2024-08-16-LEGACY (pull request #1602)

- Improve handle beta code (AIO Version)
This commit is contained in:
Dave Richer
2024-08-14 18:42:09 +00:00

View File

@@ -1,37 +1,42 @@
export const BETA_KEY = 'betaSwitchImex'; export const BETA_KEY = "betaSwitchImex";
export const checkBeta = () => { export const checkBeta = () => {
const cookie = document.cookie.split('; ').find(row => row.startsWith(BETA_KEY)); const cookie = document.cookie.split("; ").find((row) => row.startsWith(BETA_KEY));
return cookie ? cookie.split('=')[1] === 'true' : false; return cookie ? cookie.split("=")[1] === "true" : false;
} };
export const setBeta = (value) => { export const setBeta = (value) => {
const domain = window.location.hostname.split('.').slice(-2).join('.'); const domain = window.location.hostname.split(".").slice(-2).join(".");
document.cookie = `${BETA_KEY}=${value}; path=/; domain=.${domain}`; document.cookie = `${BETA_KEY}=${value}; path=/; domain=.${domain}`;
} };
export const handleBeta = () => { 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")) {
if (window.location.hostname.startsWith('localhost')) { console.log("Not on beta or test, so no need to handle beta.");
console.log('Not on beta or test, so no need to handle beta.'); return;
return; }
}
const isBeta = checkBeta(); const isBeta = checkBeta();
const currentHostName = window.location.hostname;
const currentHostName = window.location.hostname; // Determine if the host name starts with "beta" or "www.beta"
const isBetaHost = currentHostName.startsWith("beta");
const isBetaHostWithWWW = currentHostName.startsWith("www.beta");
// Beta is enabled, but the current host name does start with beta. // Handle beta redirection
if (isBeta && !currentHostName.startsWith('beta')) { if (isBeta && !isBetaHost && !isBetaHostWithWWW) {
const href= `${window.location.protocol}//beta.${currentHostName}${window.location.pathname}${window.location.search}${window.location.hash}`; // From non-beta to beta
window.location.replace(href); 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);
}
};
// 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; export default handleBeta;