Renders VS Code through its own app entrypoint Keeps shared app effects focused and reusable Avoids importing the full desktop app root in VS Code
59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { StrictMode } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
import '@/styles/fonts';
|
|
import '@/index.css';
|
|
import '@/lib/debug';
|
|
import { SessionAuthGate } from '@/components/auth/SessionAuthGate';
|
|
import { ThemeProvider } from '@/components/providers/ThemeProvider';
|
|
import { ThemeSystemProvider } from '@/contexts/ThemeSystemContext';
|
|
import type { RuntimeAPIs } from '@/lib/api/types';
|
|
import { startAppearanceAutoSave } from '@/lib/appearanceAutoSave';
|
|
import { applyPersistedDirectoryPreferences } from '@/lib/directoryPersistence';
|
|
import { initializeLocale, I18nProvider } from '@/lib/i18n';
|
|
import { initializeAppearancePreferences, syncDesktopSettings } from '@/lib/persistence';
|
|
import { startModelPrefsAutoSave } from '@/lib/modelPrefsAutoSave';
|
|
import { startTypographyWatcher } from '@/lib/typographyWatcher';
|
|
import { VSCodeApp } from './VSCodeApp';
|
|
|
|
const initializeSharedPreferences = () => {
|
|
initializeLocale();
|
|
|
|
void initializeAppearancePreferences().then(() => {
|
|
void Promise.all([
|
|
syncDesktopSettings(),
|
|
applyPersistedDirectoryPreferences(),
|
|
]).catch((err) => {
|
|
console.error('[vscode-main] settings init failed:', err);
|
|
});
|
|
|
|
startAppearanceAutoSave();
|
|
startModelPrefsAutoSave();
|
|
startTypographyWatcher();
|
|
}).catch((err) => {
|
|
console.error('[vscode-main] appearance init failed:', err);
|
|
});
|
|
};
|
|
|
|
export function renderVSCodeApp(apis: RuntimeAPIs) {
|
|
initializeSharedPreferences();
|
|
|
|
const rootElement = document.getElementById('root');
|
|
if (!rootElement) {
|
|
throw new Error('Root element not found');
|
|
}
|
|
|
|
createRoot(rootElement).render(
|
|
<StrictMode>
|
|
<I18nProvider>
|
|
<ThemeSystemProvider>
|
|
<ThemeProvider>
|
|
<SessionAuthGate>
|
|
<VSCodeApp apis={apis} />
|
|
</SessionAuthGate>
|
|
</ThemeProvider>
|
|
</ThemeSystemProvider>
|
|
</I18nProvider>
|
|
</StrictMode>,
|
|
);
|
|
}
|