Fix referrer RegEx for permanent version redirect (#3864)

This commit is contained in:
Alexander Zinchuk 2023-09-15 17:14:00 +02:00
parent 6e144e9f7c
commit 3654b693e3

View File

@ -3,7 +3,7 @@ import { getActions } from '../global';
import { PRODUCTION_HOSTNAME, WEB_VERSION_BASE } from '../config'; import { PRODUCTION_HOSTNAME, WEB_VERSION_BASE } from '../config';
import { clearWebsync } from './websync'; import { clearWebsync } from './websync';
const SEARCH_ENGINE_REFERRERS = ['google', 'bing', 'duckduckgo', 'ya', 'yandex']; const SEARCH_ENGINE_REGEX = /(^|\.)(google|bing|duckduckgo|ya|yandex)\./i;
// Handled by the legacy version. Cannot be updated // Handled by the legacy version. Cannot be updated
const PERMANENT_VERSION_KEY = 'kz_version'; const PERMANENT_VERSION_KEY = 'kz_version';
const AVAILABLE_VERSIONS = ['Z', 'K'] as const; const AVAILABLE_VERSIONS = ['Z', 'K'] as const;
@ -34,7 +34,10 @@ export function checkAndAssignPermanentWebVersion() {
if (window.location.hostname !== PRODUCTION_HOSTNAME) return; if (window.location.hostname !== PRODUCTION_HOSTNAME) return;
const referrer = document.referrer.toLowerCase(); const referrer = document.referrer.toLowerCase();
if (!SEARCH_ENGINE_REFERRERS.some((engine) => referrer.match(`(\\/\\/:|\\.)${engine}\\.`))) return; if (!referrer) return;
try {
const isSearchEngine = new URL(referrer).host.match(SEARCH_ENGINE_REGEX);
if (!isSearchEngine) return;
const currentVersion = getPermanentWebVersion(); const currentVersion = getPermanentWebVersion();
if (currentVersion) { if (currentVersion) {
@ -54,4 +57,7 @@ export function checkAndAssignPermanentWebVersion() {
} }
switchPermanentWebVersion('K'); switchPermanentWebVersion('K');
} catch (e) {
// Ignore
}
} }