From 71a1586866c0496836f0ab14e1694ec3821c9426 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Mon, 11 May 2026 21:34:23 +0200 Subject: [PATCH] Strip dead server-sync from UiSettingsContext + re-export ui-settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UiSettingsContext referenced UiSettingsLoadComposer / UiSettingsSaveComposer / UiSettingsDataEvent — none of which exist on the renderer, and the corresponding Arcturus packet handlers don't exist either (grep across the emulator turns up zero matches for 'UiSettings'). The feature is real (theme color/image stored in localStorage works) but the cross-device sync was wired against a non-existent server endpoint. Strip the server-bound code path: settings keep persisting to localStorage as before. The full sync becomes a follow-up that will need both renderer composer classes AND the Arcturus packet handler landing together. Also re-export src/api/ui-settings/ from src/api/index so InterfaceImageTabView / InterfaceColorTabView can import useUiSettings + PRESET_COLORS / THEME_PRESETS via the root barrel as the rest of the codebase does. Net tsgo error count: -7 (3 from UiSettingsContext imports + 4 from InterfaceColor/ImageTabView consumers). --- src/api/index.ts | 1 + src/api/ui-settings/UiSettingsContext.tsx | 68 ++++------------------- 2 files changed, 12 insertions(+), 57 deletions(-) diff --git a/src/api/index.ts b/src/api/index.ts index 6bb1536..321608a 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -25,6 +25,7 @@ export * from './purse'; export * from './room'; export * from './room/events'; export * from './room/widgets'; +export * from './ui-settings'; export * from './user'; export * from './utils'; export * from './wired'; diff --git a/src/api/ui-settings/UiSettingsContext.tsx b/src/api/ui-settings/UiSettingsContext.tsx index 0bde41d..f9311cf 100644 --- a/src/api/ui-settings/UiSettingsContext.tsx +++ b/src/api/ui-settings/UiSettingsContext.tsx @@ -1,7 +1,14 @@ -import { GetCommunication, UiSettingsDataEvent, UiSettingsLoadComposer, UiSettingsSaveComposer } from '@nitrots/nitro-renderer'; -import { createContext, FC, PropsWithChildren, useCallback, useContext, useEffect, useRef, useState } from 'react'; +import { createContext, FC, PropsWithChildren, useCallback, useContext, useEffect, useState } from 'react'; import { DEFAULT_UI_SETTINGS, IUiSettings } from './IUiSettings'; +/** + * UI settings currently persist to localStorage only. The cross-device + * server-side sync (UiSettingsLoadComposer / UiSettingsSaveComposer / + * UiSettingsDataEvent) is a planned addition that requires both the + * renderer composer classes and the Arcturus packet handlers — none of + * which exist yet. Until those land, settings stay per-browser. + */ + const STORAGE_KEY = 'nitro.ui.settings'; interface IUiSettingsContext @@ -67,60 +74,9 @@ const ALL_CSS_VARS = [ '--ui-dark-bg', '--ui-dark-border' ]; -const sendComposer = (composer: any): void => -{ - try - { - GetCommunication()?.connection?.send(composer); - } - catch(e) - {} -}; - export const UiSettingsProvider: FC = ({ children }) => { const [ settings, setSettings ] = useState(loadSettings); - const serverSaveTimerRef = useRef>(null); - - // Carica dal server al mount e ascolta risposta - useEffect(() => - { - sendComposer(new UiSettingsLoadComposer()); - - const connection = GetCommunication()?.connection; - - if(!connection) return; - - const handler = (event: any) => - { - try - { - const parser = event.getParser(); - const json = parser?.settingsJson; - - if(json && json !== '{}') - { - const serverSettings = { ...DEFAULT_UI_SETTINGS, ...JSON.parse(json) }; - setSettings(serverSettings); - saveSettings(serverSettings); - } - } - catch(e) - {} - }; - - connection.addMessageEvent(new UiSettingsDataEvent(handler)); - }, []); - - const syncToServer = useCallback((settingsToSave: IUiSettings) => - { - if(serverSaveTimerRef.current) clearTimeout(serverSaveTimerRef.current); - - serverSaveTimerRef.current = setTimeout(() => - { - sendComposer(new UiSettingsSaveComposer(JSON.stringify(settingsToSave))); - }, 1000); - }, []); const updateSettings = useCallback((partial: Partial) => { @@ -128,18 +84,16 @@ export const UiSettingsProvider: FC = ({ children }) => { const updated = { ...prev, ...partial }; saveSettings(updated); - syncToServer(updated); return updated; }); - }, [ syncToServer ]); + }, []); const resetSettings = useCallback(() => { setSettings({ ...DEFAULT_UI_SETTINGS }); saveSettings(DEFAULT_UI_SETTINGS); - syncToServer(DEFAULT_UI_SETTINGS); - }, [ syncToServer ]); + }, []); const getHeaderStyle = useCallback((): React.CSSProperties => {