feat(core): new worker workspace engine (#9257)

This commit is contained in:
EYHN
2025-01-17 00:22:18 +08:00
committed by GitHub
parent 7dc470e7ea
commit a2ffdb4047
219 changed files with 4267 additions and 7194 deletions

View File

@@ -17,13 +17,20 @@ import type {
WorkspaceMetadata,
} from '@affine/core/modules/workspace';
import { WorkspacesService } from '@affine/core/modules/workspace';
import { FrameworkScope, useLiveData, useServices } from '@toeverything/infra';
import {
FrameworkScope,
LiveData,
useLiveData,
useServices,
} from '@toeverything/infra';
import {
type PropsWithChildren,
useEffect,
useLayoutEffect,
useMemo,
useState,
} from 'react';
import { map } from 'rxjs';
import { AppFallback } from '../../components/app-fallback';
import { WorkspaceDialogs } from '../../dialogs';
@@ -33,11 +40,11 @@ declare global {
/**
* @internal debug only
*/
// eslint-disable-next-line no-var
// oxlint-disable-next-line no-var
var currentWorkspace: Workspace | undefined;
// eslint-disable-next-line no-var
// oxlint-disable-next-line no-var
var exportWorkspaceSnapshot: (docs?: string[]) => Promise<void>;
// eslint-disable-next-line no-var
// oxlint-disable-next-line no-var
var importWorkspaceSnapshot: () => Promise<void>;
interface WindowEventMap {
'affine:workspace:change': CustomEvent<{ id: string }>;
@@ -106,7 +113,20 @@ export const WorkspaceLayout = ({
]);
const isRootDocReady =
useLiveData(workspace?.engine.rootDocState$.map(v => v.ready)) ?? false;
useLiveData(
useMemo(
() =>
workspace
? LiveData.from(
workspace.engine.doc
.docState$(workspace.id)
.pipe(map(v => v.ready)),
false
)
: null,
[workspace]
)
) ?? false;
if (!workspace) {
return null; // skip this, workspace will be set in layout effect
@@ -125,10 +145,10 @@ export const WorkspaceLayout = ({
{/* ---- some side-effect components ---- */}
<PeekViewManagerModal />
{workspace?.flavour === 'local' ? (
<LocalQuotaModal />
) : (
{workspace?.flavour !== 'local' ? (
<CloudQuotaModal />
) : (
<LocalQuotaModal />
)}
<AiLoginRequiredModal />
<WorkspaceSideEffects />