import { AffineContext } from '@affine/component/context'; import { GlobalLoading } from '@affine/component/global-loading'; import { AppFallback } from '@affine/core/components/affine/app-container'; import { WindowsAppControls } from '@affine/core/components/pure/header/windows-app-controls'; import { Telemetry } from '@affine/core/components/telemetry'; import { router } from '@affine/core/desktop/router'; import { configureCommonModules } from '@affine/core/modules'; import { configureAppTabsHeaderModule } from '@affine/core/modules/app-tabs-header'; import { I18nProvider } from '@affine/core/modules/i18n'; import { configureElectronStateStorageImpls } from '@affine/core/modules/storage'; import { CustomThemeModifier } from '@affine/core/modules/theme-editor'; import { configureSqliteUserspaceStorageProvider } from '@affine/core/modules/userspace'; import { configureDesktopWorkbenchModule } from '@affine/core/modules/workbench'; import { configureBrowserWorkspaceFlavours, configureSqliteWorkspaceEngineStorageProvider, } from '@affine/core/modules/workspace-engine'; import createEmotionCache from '@affine/core/utils/create-emotion-cache'; import { CacheProvider } from '@emotion/react'; import { Framework, FrameworkRoot, getCurrentStore, LifecycleService, } from '@toeverything/infra'; import { Suspense } from 'react'; import { RouterProvider } from 'react-router-dom'; const desktopWhiteList = [ '/open-app/signin-redirect', '/open-app/url', '/upgrade-success', '/ai-upgrade-success', '/share', '/oauth', '/magic-link', ]; if ( !BUILD_CONFIG.isElectron && BUILD_CONFIG.debug && desktopWhiteList.every(path => !location.pathname.startsWith(path)) ) { document.body.innerHTML = `

Don't run electron entry in browser.

`; throw new Error('Wrong distribution'); } const cache = createEmotionCache(); const future = { v7_startTransition: true, } as const; const framework = new Framework(); configureCommonModules(framework); configureElectronStateStorageImpls(framework); configureBrowserWorkspaceFlavours(framework); configureSqliteWorkspaceEngineStorageProvider(framework); configureSqliteUserspaceStorageProvider(framework); configureDesktopWorkbenchModule(framework); configureAppTabsHeaderModule(framework); const frameworkProvider = framework.provider(); // setup application lifecycle events, and emit application start event window.addEventListener('focus', () => { frameworkProvider.get(LifecycleService).applicationFocus(); }); frameworkProvider.get(LifecycleService).applicationStart(); export function App() { return ( } router={router} future={future} /> {environment.isWindows && (
)}
); }