fix(core): possible crash issues (#4783)

This commit is contained in:
Peng Xiao
2023-10-31 16:56:14 +08:00
committed by GitHub
parent 0ad0ab50d0
commit f08408ebe5
3 changed files with 23 additions and 10 deletions

View File

@@ -1,6 +1,8 @@
import type { AffineOfficialWorkspace } from '@affine/env/workspace';
import {
type AffineOfficialWorkspace,
WorkspaceFlavour,
} from '@affine/env/workspace';
import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
import { assertExists } from '@blocksuite/global/utils';
import type { Workspace } from '@blocksuite/store';
import { getBlockSuiteWorkspaceAtom } from '@toeverything/infra/__internal__/workspace';
import type { Atom } from 'jotai';
@@ -24,12 +26,21 @@ export function useWorkspace(workspaceId: string): AffineOfficialWorkspace {
const workspace = useAtomValue(workspaceAtom);
if (!workspaceWeakMap.has(workspace)) {
const baseAtom = atom(async get => {
const metadata = await get(rootWorkspacesMetadataAtom);
const flavour = metadata.find(({ id }) => id === workspaceId)?.flavour;
assertExists(flavour, 'workspace flavour not found');
const metadataList = await get(rootWorkspacesMetadataAtom);
const flavour = metadataList.find(({ id }) => id === workspaceId)
?.flavour;
if (!flavour) {
// when last workspace is removed, we may encounter this warning. it should be fine
console.warn(
'workspace not found in rootWorkspacesMetadataAtom, maybe it is removed',
workspaceId
);
}
return {
id: workspaceId,
flavour,
flavour: flavour ?? WorkspaceFlavour.LOCAL,
blockSuiteWorkspace: workspace,
};
});