Spaces:
Sleeping
Sleeping
File size: 2,567 Bytes
1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 cfaaa6c 1dd9186 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | import { DEFAULT_BACKEND_URL, DEFAULT_LIVE_DEBUG_URL } from './api.js';
export const APP_SETTINGS_KEY = 'nodes_ui_flow_app_settings_v1';
function trimTrailingSlashes(value) {
return value.replace(/\/+$/, '');
}
export function normalizeBackendUrl(value) {
const trimmed = String(value ?? '').trim();
if (!trimmed) {
return '';
}
const withProtocol = /^[a-z][a-z\d+\-.]*:\/\//i.test(trimmed) ? trimmed : `http://${trimmed}`;
try {
const parsed = new URL(withProtocol);
parsed.search = '';
parsed.hash = '';
return trimTrailingSlashes(parsed.toString());
} catch (error) {
return '';
}
}
export function loadAppSettings() {
if (typeof window === 'undefined') {
return {
backendUrlOverride: '',
liveDebugUrlOverride: '',
};
}
try {
const raw = window.localStorage.getItem(APP_SETTINGS_KEY);
if (!raw) {
return {
backendUrlOverride: '',
liveDebugUrlOverride: '',
};
}
const parsed = JSON.parse(raw);
return {
backendUrlOverride: normalizeBackendUrl(parsed.backendUrlOverride),
liveDebugUrlOverride: normalizeBackendUrl(parsed.liveDebugUrlOverride),
};
} catch (error) {
console.error('Failed to load app settings:', error);
return {
backendUrlOverride: '',
liveDebugUrlOverride: '',
};
}
}
export function persistAppSettings(settings = {}) {
if (typeof window === 'undefined') {
return {
backendUrlOverride: '',
liveDebugUrlOverride: '',
};
}
const normalized = {
backendUrlOverride: normalizeBackendUrl(settings.backendUrlOverride),
liveDebugUrlOverride: normalizeBackendUrl(settings.liveDebugUrlOverride),
};
if (!normalized.backendUrlOverride && !normalized.liveDebugUrlOverride) {
window.localStorage.removeItem(APP_SETTINGS_KEY);
return normalized;
}
window.localStorage.setItem(APP_SETTINGS_KEY, JSON.stringify(normalized));
return normalized;
}
export function resolveBackendUrl(defaultBackendUrl, settings = {}) {
const normalizedDefault = normalizeBackendUrl(defaultBackendUrl) || DEFAULT_BACKEND_URL;
const normalizedOverride = normalizeBackendUrl(settings.backendUrlOverride);
return normalizedOverride || normalizedDefault;
}
export function resolveLiveDebugUrl(defaultLiveDebugUrl, settings = {}) {
const normalizedDefault = normalizeBackendUrl(defaultLiveDebugUrl) || DEFAULT_LIVE_DEBUG_URL;
const normalizedOverride = normalizeBackendUrl(settings.liveDebugUrlOverride);
return normalizedOverride || normalizedDefault;
}
|