fix: prevent duplicate preview URL auth tokens

Stops embedded browser URLs from accumulating repeated oc_url_token params
Strips preview-only query params before persisting browser navigation
Adds regression coverage for replacing URL auth tokens
This commit is contained in:
Bohdan Triapitsyn
2026-06-28 00:10:35 +03:00
parent 757c704956
commit 1b67aa3c21
3 changed files with 40 additions and 10 deletions
+6 -8
View File
@@ -91,14 +91,12 @@ const withUrlAuth = (urlValue: string): string => {
const token = getRuntimeUrlAuthTokenSync();
if (!token) return urlValue;
if (ABSOLUTE_URL_PATTERN.test(urlValue)) {
const url = new URL(urlValue);
url.searchParams.set('oc_url_token', token);
return url.toString();
}
const separator = urlValue.includes('?') ? '&' : '?';
return `${urlValue}${separator}oc_url_token=${encodeURIComponent(token)}`;
const url = ABSOLUTE_URL_PATTERN.test(urlValue)
? new URL(urlValue)
: new URL(urlValue, 'http://openchamber.local');
url.searchParams.set('oc_url_token', token);
if (ABSOLUTE_URL_PATTERN.test(urlValue)) return url.toString();
return `${url.pathname}${url.search}${url.hash}`;
};
const toWebSocketUrl = (candidate: string, config: RuntimeUrlConfig): string => {