feat: isolated plugin system (#2742)

This commit is contained in:
Himself65
2023-06-09 16:43:46 +08:00
committed by GitHub
parent af6f431c15
commit f2ac2e5b84
51 changed files with 489 additions and 209 deletions

View File

@@ -22,6 +22,7 @@
"@affine/debug": "workspace:*",
"@affine/env": "workspace:*",
"@toeverything/hooks": "workspace:*",
"@toeverything/plugin-infra": "workspace:*",
"@toeverything/y-indexeddb": "workspace:*",
"firebase": "^9.22.1",
"jotai": "^2.1.1",

View File

@@ -1,6 +1,6 @@
import { prefixUrl } from '@affine/env';
import { rootStore } from '@toeverything/plugin-infra/manager';
import { rootStore } from '../atom';
import { createUserApis, createWorkspaceApis } from './api/index';
import { currentAffineUserAtom } from './atom';
import type { LoginResponse } from './login';

View File

@@ -8,11 +8,12 @@ import {
} from '@affine/env/workspace/legacy-cloud';
import { assertExists } from '@blocksuite/global/utils';
import type { Disposable } from '@blocksuite/store';
import { rootStore } from '@toeverything/plugin-infra/manager';
import { z } from 'zod';
import { WebsocketClient } from '../affine/channel';
import { storageChangeSlot } from '../affine/login';
import { rootStore, rootWorkspacesMetadataAtom } from '../atom';
import { rootWorkspacesMetadataAtom } from '../atom';
const logger = new DebugLogger('affine-sync');

View File

@@ -1,7 +1,7 @@
import type { WorkspaceFlavour } from '@affine/env/workspace';
import type { EditorContainer } from '@blocksuite/editor';
import { atom, createStore } from 'jotai';
import { atomWithStorage, createJSONStorage } from 'jotai/utils';
import { atom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
import Router from 'next/router';
export type RootWorkspaceMetadata = {
@@ -77,13 +77,3 @@ export const rootCurrentEditorAtom = atom<Readonly<EditorContainer> | null>(
null
);
//#endregion
const getStorage = () => createJSONStorage(() => localStorage);
export const getStoredWorkspaceMeta = () => {
const storage = getStorage();
return storage.getItem('jotai-workspaces', []) as RootWorkspaceMetadata[];
};
// global store
export const rootStore = createStore();

View File

@@ -4,9 +4,10 @@ import { WorkspaceFlavour } from '@affine/env/workspace';
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
import type { Generator, StoreOptions } from '@blocksuite/store';
import { createIndexeddbStorage, Workspace } from '@blocksuite/store';
import { rootStore } from '@toeverything/plugin-infra/manager';
import type { createWorkspaceApis } from './affine/api';
import { rootStore, rootWorkspacesMetadataAtom } from './atom';
import { rootWorkspacesMetadataAtom } from './atom';
import { createAffineBlobStorage } from './blob';
import { createSQLiteStorage } from './blob/sqlite-blob-storage';

View File

@@ -10,6 +10,7 @@
{ "path": "../y-indexeddb" },
{ "path": "../env" },
{ "path": "../debug" },
{ "path": "../hooks" }
{ "path": "../hooks" },
{ "path": "../plugin-infra" }
]
}