From e1bd13a018253ef8571a14008531bafa6c24f965 Mon Sep 17 00:00:00 2001 From: EYHN Date: Mon, 25 Dec 2023 03:34:22 +0000 Subject: [PATCH] refactor(core): remove adapter (#5324) workspace adapter is no longer used. --- packages/common/env/src/workspace.ts | 52 ------------------- .../frontend/core/src/adapters/cloud/ui.tsx | 15 ------ .../core/src/adapters/local/index.tsx | 17 ------ packages/frontend/core/src/adapters/shared.ts | 15 ------ .../frontend/core/src/adapters/workspace.ts | 35 ------------- .../components/adapter-worksapce-wrapper.tsx | 14 ----- .../setting-modal/workspace-setting/index.tsx | 4 +- .../core/src/layouts/workspace-layout.tsx | 6 +-- .../swr-config-provider.tsx} | 10 ++-- 9 files changed, 8 insertions(+), 160 deletions(-) delete mode 100644 packages/frontend/core/src/adapters/cloud/ui.tsx delete mode 100644 packages/frontend/core/src/adapters/local/index.tsx delete mode 100644 packages/frontend/core/src/adapters/shared.ts delete mode 100644 packages/frontend/core/src/adapters/workspace.ts delete mode 100644 packages/frontend/core/src/components/adapter-worksapce-wrapper.tsx rename packages/frontend/core/src/{components/cloud/provider.tsx => providers/swr-config-provider.tsx} (87%) diff --git a/packages/common/env/src/workspace.ts b/packages/common/env/src/workspace.ts index 9f99f5c077..9381241e95 100644 --- a/packages/common/env/src/workspace.ts +++ b/packages/common/env/src/workspace.ts @@ -1,5 +1,3 @@ -import type { PropsWithChildren, ReactNode } from 'react'; - export enum WorkspaceSubPath { ALL = 'all', Collection = 'collection', @@ -8,18 +6,6 @@ export enum WorkspaceSubPath { SHARED = 'shared', } -export enum ReleaseType { - // if workspace is not released yet, we will not show it in the workspace list - UNRELEASED = 'unreleased', - STABLE = 'stable', -} - -export enum LoadPriority { - HIGH = 1, - MEDIUM = 2, - LOW = 3, -} - export enum WorkspaceFlavour { /** * New AFFiNE Cloud Workspace using Nest.js Server. @@ -27,41 +13,3 @@ export enum WorkspaceFlavour { AFFINE_CLOUD = 'affine-cloud', LOCAL = 'local', } - -export const settingPanel = { - General: 'general', - Collaboration: 'collaboration', - Publish: 'publish', - Export: 'export', - Sync: 'sync', -} as const; -export const settingPanelValues = Object.values(settingPanel); -export type SettingPanel = (typeof settingPanel)[keyof typeof settingPanel]; - -export type WorkspaceHeaderProps = { - rightSlot?: ReactNode; - currentEntry: - | { - subPath: WorkspaceSubPath; - } - | { - pageId: string; - }; -}; - -interface FC

{ - (props: P): ReactNode; -} - -export interface WorkspaceUISchema { - Provider: FC; - LoginCard?: FC; -} - -export interface WorkspaceAdapter { - releaseType: ReleaseType; - flavour: Flavour; - // The Adapter will be loaded according to the priority - loadPriority: LoadPriority; - UI: WorkspaceUISchema; -} diff --git a/packages/frontend/core/src/adapters/cloud/ui.tsx b/packages/frontend/core/src/adapters/cloud/ui.tsx deleted file mode 100644 index 9548d3d4a6..0000000000 --- a/packages/frontend/core/src/adapters/cloud/ui.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import type { WorkspaceUISchema } from '@affine/env/workspace'; -import { lazy } from 'react'; - -import { Provider } from '../shared'; - -const LoginCard = lazy(() => - import('../../components/cloud/login-card').then(({ LoginCard }) => ({ - default: LoginCard, - })) -); - -export const UI = { - Provider, - LoginCard, -} satisfies WorkspaceUISchema; diff --git a/packages/frontend/core/src/adapters/local/index.tsx b/packages/frontend/core/src/adapters/local/index.tsx deleted file mode 100644 index 4abdd9700c..0000000000 --- a/packages/frontend/core/src/adapters/local/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import type { WorkspaceAdapter } from '@affine/env/workspace'; -import { - LoadPriority, - ReleaseType, - WorkspaceFlavour, -} from '@affine/env/workspace'; - -import { Provider } from '../shared'; - -export const LocalAdapter: WorkspaceAdapter = { - releaseType: ReleaseType.STABLE, - flavour: WorkspaceFlavour.LOCAL, - loadPriority: LoadPriority.LOW, - UI: { - Provider, - }, -}; diff --git a/packages/frontend/core/src/adapters/shared.ts b/packages/frontend/core/src/adapters/shared.ts deleted file mode 100644 index 6a075b042f..0000000000 --- a/packages/frontend/core/src/adapters/shared.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { lazy } from 'react'; - -export const Provider = lazy(() => - import('../components/cloud/provider').then(({ Provider }) => ({ - default: Provider, - })) -); - -export const NewWorkspaceSettingDetail = lazy(() => - import('../components/affine/new-workspace-setting-detail').then( - ({ WorkspaceSettingDetail }) => ({ - default: WorkspaceSettingDetail, - }) - ) -); diff --git a/packages/frontend/core/src/adapters/workspace.ts b/packages/frontend/core/src/adapters/workspace.ts deleted file mode 100644 index 7ef8e67950..0000000000 --- a/packages/frontend/core/src/adapters/workspace.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Unreachable } from '@affine/env/constant'; -import type { - WorkspaceAdapter, - WorkspaceUISchema, -} from '@affine/env/workspace'; -import { - LoadPriority, - ReleaseType, - WorkspaceFlavour, -} from '@affine/env/workspace'; - -import { UI as CloudUI } from './cloud/ui'; -import { LocalAdapter } from './local'; - -export const WorkspaceAdapters = { - [WorkspaceFlavour.LOCAL]: LocalAdapter, - [WorkspaceFlavour.AFFINE_CLOUD]: { - releaseType: ReleaseType.UNRELEASED, - flavour: WorkspaceFlavour.AFFINE_CLOUD, - loadPriority: LoadPriority.HIGH, - UI: CloudUI, - }, -} satisfies { - [Key in WorkspaceFlavour]: WorkspaceAdapter; -}; - -export function getUIAdapter( - flavour: Flavour -): WorkspaceUISchema { - const ui = WorkspaceAdapters[flavour].UI as WorkspaceUISchema; - if (!ui) { - throw new Unreachable(); - } - return ui; -} diff --git a/packages/frontend/core/src/components/adapter-worksapce-wrapper.tsx b/packages/frontend/core/src/components/adapter-worksapce-wrapper.tsx deleted file mode 100644 index fda0cdec77..0000000000 --- a/packages/frontend/core/src/components/adapter-worksapce-wrapper.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { waitForCurrentWorkspaceAtom } from '@affine/workspace/atom'; -import { assertExists } from '@blocksuite/global/utils'; -import { useAtomValue } from 'jotai'; -import type { FC, PropsWithChildren } from 'react'; - -import { WorkspaceAdapters } from '../adapters/workspace'; - -export const AdapterProviderWrapper: FC = ({ children }) => { - const currentWorkspace = useAtomValue(waitForCurrentWorkspaceAtom); - - const Provider = WorkspaceAdapters[currentWorkspace.flavour].UI.Provider; - assertExists(Provider); - return {children}; -}; diff --git a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/index.tsx b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/index.tsx index 87b6956cc6..be9c6dd83a 100644 --- a/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/index.tsx +++ b/packages/frontend/core/src/components/affine/setting-modal/workspace-setting/index.tsx @@ -1,7 +1,7 @@ import type { WorkspaceMetadata } from '@affine/workspace/metadata'; -import { NewWorkspaceSettingDetail } from '../../../../adapters/shared'; import { useIsWorkspaceOwner } from '../../../../hooks/affine/use-is-workspace-owner'; +import { WorkspaceSettingDetail } from '../../new-workspace-setting-detail'; export const WorkspaceSetting = ({ workspaceMetadata, @@ -10,7 +10,7 @@ export const WorkspaceSetting = ({ }) => { const isOwner = useIsWorkspaceOwner(workspaceMetadata); return ( - diff --git a/packages/frontend/core/src/layouts/workspace-layout.tsx b/packages/frontend/core/src/layouts/workspace-layout.tsx index e903416643..207e1a6624 100644 --- a/packages/frontend/core/src/layouts/workspace-layout.tsx +++ b/packages/frontend/core/src/layouts/workspace-layout.tsx @@ -27,7 +27,6 @@ import { useLocation, useParams } from 'react-router-dom'; import { Map as YMap } from 'yjs'; import { openQuickSearchModalAtom, openSettingModalAtom } from '../atoms'; -import { AdapterProviderWrapper } from '../components/adapter-worksapce-wrapper'; import { AppContainer } from '../components/affine/app-container'; import { SyncAwareness } from '../components/affine/awareness'; import { usePageHelper } from '../components/blocksuite/block-suite-page-list/utils'; @@ -41,6 +40,7 @@ import { AllWorkspaceModals, CurrentWorkspaceModals, } from '../providers/modal-provider'; +import { SWRConfigProvider } from '../providers/swr-config-provider'; import { pathGenerator } from '../shared'; const CMDKQuickSearchModal = lazy(() => @@ -78,7 +78,7 @@ export const WorkspaceLayout = function WorkspaceLayout({ children, }: PropsWithChildren) { return ( - + {/* load all workspaces is costly, do not block the whole UI */} @@ -87,7 +87,7 @@ export const WorkspaceLayout = function WorkspaceLayout({ }> {children} - + ); }; diff --git a/packages/frontend/core/src/components/cloud/provider.tsx b/packages/frontend/core/src/providers/swr-config-provider.tsx similarity index 87% rename from packages/frontend/core/src/components/cloud/provider.tsx rename to packages/frontend/core/src/providers/swr-config-provider.tsx index 6b9daf4d24..fcdbc2b3bc 100644 --- a/packages/frontend/core/src/components/cloud/provider.tsx +++ b/packages/frontend/core/src/providers/swr-config-provider.tsx @@ -7,7 +7,7 @@ import { useCallback } from 'react'; import type { SWRConfiguration } from 'swr'; import { SWRConfig } from 'swr'; -const cloudConfig: SWRConfiguration = { +const swrConfig: SWRConfiguration = { suspense: true, use: [ useSWRNext => (key, fetcher, config) => { @@ -49,10 +49,6 @@ const cloudConfig: SWRConfiguration = { ], }; -export const Provider = (props: PropsWithChildren): ReactNode => { - if (!runtimeConfig.enableCloud) { - return props.children; - } - - return {props.children}; +export const SWRConfigProvider = (props: PropsWithChildren): ReactNode => { + return {props.children}; };