nodes-ui-flow / src /lib /settings.js
markitzeroo
Deploy updated nodes UI flow
1dd9186
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;
}