refactor: ui adapter (#2577)

This commit is contained in:
Himself65
2023-05-29 21:56:00 +08:00
committed by GitHub
parent cb6ca52b03
commit 58ba11e13c
8 changed files with 87 additions and 153 deletions

View File

@@ -96,7 +96,7 @@ function AuthContext({ children }: PropsWithChildren): ReactElement {
return <>{children}</>;
}
export const AffinePlugin: WorkspaceAdapter<WorkspaceFlavour.AFFINE> = {
export const AffineAdapter: WorkspaceAdapter<WorkspaceFlavour.AFFINE> = {
releaseType: ReleaseType.STABLE,
flavour: WorkspaceFlavour.AFFINE,
loadPriority: LoadPriority.HIGH,
@@ -175,7 +175,7 @@ export const AffinePlugin: WorkspaceAdapter<WorkspaceFlavour.AFFINE> = {
await mutate(matcher => matcher === QueryKey.getWorkspaces);
// refresh the local storage
await AffinePlugin.CRUD.list();
await AffineAdapter.CRUD.list();
return id;
},
delete: async workspace => {
@@ -208,7 +208,7 @@ export const AffinePlugin: WorkspaceAdapter<WorkspaceFlavour.AFFINE> = {
return null;
}
const workspaces: AffineLegacyCloudWorkspace[] =
await AffinePlugin.CRUD.list();
await AffineAdapter.CRUD.list();
return (
workspaces.find(workspace => workspace.id === workspaceId) ?? null
);

View File

@@ -45,7 +45,7 @@ const PageDetailEditor = lazy(() =>
const logger = new DebugLogger('use-create-first-workspace');
export const LocalPlugin: WorkspaceAdapter<WorkspaceFlavour.LOCAL> = {
export const LocalAdapter: WorkspaceAdapter<WorkspaceFlavour.LOCAL> = {
releaseType: ReleaseType.STABLE,
flavour: WorkspaceFlavour.LOCAL,
loadPriority: LoadPriority.LOW,

View File

@@ -1,12 +1,13 @@
import type { AppEvents } from '@affine/workspace/type';
import { Unreachable } from '@affine/env';
import type { AppEvents, WorkspaceUISchema } from '@affine/workspace/type';
import {
LoadPriority,
ReleaseType,
WorkspaceFlavour,
} from '@affine/workspace/type';
import { AffinePlugin } from './affine';
import { LocalPlugin } from './local';
import { AffineAdapter } from './affine';
import { LocalAdapter } from './local';
import type { WorkspaceAdapter } from './type';
const unimplemented = () => {
@@ -14,8 +15,8 @@ const unimplemented = () => {
};
export const WorkspaceAdapters = {
[WorkspaceFlavour.AFFINE]: AffinePlugin,
[WorkspaceFlavour.LOCAL]: LocalPlugin,
[WorkspaceFlavour.AFFINE]: AffineAdapter,
[WorkspaceFlavour.LOCAL]: LocalAdapter,
[WorkspaceFlavour.AFFINE_CLOUD]: {
releaseType: ReleaseType.UNRELEASED,
flavour: WorkspaceFlavour.AFFINE_CLOUD,
@@ -59,3 +60,13 @@ export const WorkspaceAdapters = {
} satisfies {
[Key in WorkspaceFlavour]: WorkspaceAdapter<Key>;
};
export function getUIAdapter<Flavour extends WorkspaceFlavour>(
flavour: Flavour
): WorkspaceUISchema<Flavour> {
const ui = WorkspaceAdapters[flavour].UI as WorkspaceUISchema<Flavour>;
if (!ui) {
throw new Unreachable();
}
return ui;
}