refactor: remove deprecated atoms (#2615)

This commit is contained in:
Himself65
2023-05-31 14:54:59 +08:00
committed by himself65
parent a4ae5e3141
commit ab56d15f7b
7 changed files with 23 additions and 45 deletions
+1 -20
View File
@@ -1,11 +1,6 @@
import { DebugLogger } from '@affine/debug'; import { DebugLogger } from '@affine/debug';
import type { RootWorkspaceMetadata } from '@affine/workspace/atom'; import type { RootWorkspaceMetadata } from '@affine/workspace/atom';
import { import { rootWorkspacesMetadataAtom } from '@affine/workspace/atom';
rootCurrentEditorAtom,
rootCurrentPageIdAtom,
rootCurrentWorkspaceIdAtom,
rootWorkspacesMetadataAtom,
} from '@affine/workspace/atom';
import { WorkspaceFlavour } from '@affine/workspace/type'; import { WorkspaceFlavour } from '@affine/workspace/type';
import type { Page } from '@blocksuite/store'; import type { Page } from '@blocksuite/store';
import { atom } from 'jotai'; import { atom } from 'jotai';
@@ -17,11 +12,6 @@ import type { CreateWorkspaceMode } from '../components/affine/create-workspace-
const logger = new DebugLogger('web:atoms'); const logger = new DebugLogger('web:atoms');
// workspace necessary atoms // workspace necessary atoms
/**
* @deprecated Use `rootCurrentWorkspaceIdAtom` directly instead.
*/
export const currentWorkspaceIdAtom = rootCurrentWorkspaceIdAtom;
// todo(himself65): move this to the workspace package // todo(himself65): move this to the workspace package
rootWorkspacesMetadataAtom.onMount = setAtom => { rootWorkspacesMetadataAtom.onMount = setAtom => {
function createFirst(): RootWorkspaceMetadata[] { function createFirst(): RootWorkspaceMetadata[] {
@@ -81,15 +71,6 @@ rootWorkspacesMetadataAtom.onMount = setAtom => {
}; };
}; };
/**
* @deprecated Use `rootCurrentPageIdAtom` directly instead.
*/
export const currentPageIdAtom = rootCurrentPageIdAtom;
/**
* @deprecated Use `rootCurrentEditorAtom` directly instead.
*/
export const currentEditorAtom = rootCurrentEditorAtom;
// modal atoms // modal atoms
export const openWorkspacesModalAtom = atom(false); export const openWorkspacesModalAtom = atom(false);
export const openCreateWorkspaceModalAtom = atom<CreateWorkspaceMode>(false); export const openCreateWorkspaceModalAtom = atom<CreateWorkspaceMode>(false);
@@ -1,6 +1,7 @@
import './page-detail-editor.css'; import './page-detail-editor.css';
import { PageNotFoundError, Unreachable } from '@affine/env/constant'; import { PageNotFoundError, Unreachable } from '@affine/env/constant';
import { rootCurrentEditorAtom } from '@affine/workspace/atom';
import type { EditorContainer } from '@blocksuite/editor'; import type { EditorContainer } from '@blocksuite/editor';
import type { Page } from '@blocksuite/store'; import type { Page } from '@blocksuite/store';
import { assertExists } from '@blocksuite/store'; import { assertExists } from '@blocksuite/store';
@@ -23,7 +24,7 @@ import React, {
} from 'react'; } from 'react';
import type { MosaicNode } from 'react-mosaic-component'; import type { MosaicNode } from 'react-mosaic-component';
import { currentEditorAtom, workspacePreferredModeAtom } from '../atoms'; import { workspacePreferredModeAtom } from '../atoms';
import { contentLayoutAtom } from '../atoms/layout'; import { contentLayoutAtom } from '../atoms/layout';
import type { AffineOfficialWorkspace } from '../shared'; import type { AffineOfficialWorkspace } from '../shared';
import { BlockSuiteEditor as Editor } from './blocksuite/block-suite-editor'; import { BlockSuiteEditor as Editor } from './blocksuite/block-suite-editor';
@@ -59,7 +60,7 @@ const EditorWrapper = memo(function EditorWrapper({
); );
const currentMode = const currentMode =
useAtomValue(workspacePreferredModeAtom)[pageId] ?? 'page'; useAtomValue(workspacePreferredModeAtom)[pageId] ?? 'page';
const setEditor = useSetAtom(currentEditorAtom); const setEditor = useSetAtom(rootCurrentEditorAtom);
assertExists(meta); assertExists(meta);
return ( return (
<Editor <Editor
+3 -5
View File
@@ -23,11 +23,9 @@ import type React from 'react';
import { beforeAll, beforeEach, describe, expect, test, vi } from 'vitest'; import { beforeAll, beforeEach, describe, expect, test, vi } from 'vitest';
import { workspacesAtom } from '../../atoms'; import { workspacesAtom } from '../../atoms';
import { rootCurrentWorkspaceAtom } from '../../atoms/root';
import { BlockSuiteWorkspace } from '../../shared'; import { BlockSuiteWorkspace } from '../../shared';
import { import { useCurrentWorkspace } from '../current/use-current-workspace';
currentWorkspaceAtom,
useCurrentWorkspace,
} from '../current/use-current-workspace';
import { useAppHelper, useWorkspaces } from '../use-workspaces'; import { useAppHelper, useWorkspaces } from '../use-workspaces';
vi.mock( vi.mock(
@@ -169,7 +167,7 @@ describe('useWorkspacesHelper', () => {
wrapper: ProviderWrapper, wrapper: ProviderWrapper,
}); });
store.set(rootCurrentWorkspaceIdAtom, workspacesHook.result.current[1].id); store.set(rootCurrentWorkspaceIdAtom, workspacesHook.result.current[1].id);
await store.get(currentWorkspaceAtom); await store.get(rootCurrentWorkspaceAtom);
const currentWorkspaceHook = renderHook(() => useCurrentWorkspace(), { const currentWorkspaceHook = renderHook(() => useCurrentWorkspace(), {
wrapper: ProviderWrapper, wrapper: ProviderWrapper,
}); });
@@ -20,11 +20,9 @@ import { beforeAll, beforeEach, describe, expect, test, vi } from 'vitest';
import { LocalAdapter } from '../../adapters/local'; import { LocalAdapter } from '../../adapters/local';
import { workspacesAtom } from '../../atoms'; import { workspacesAtom } from '../../atoms';
import { rootCurrentWorkspaceAtom } from '../../atoms/root';
import { BlockSuiteWorkspace } from '../../shared'; import { BlockSuiteWorkspace } from '../../shared';
import { import { useCurrentWorkspace } from '../current/use-current-workspace';
currentWorkspaceAtom,
useCurrentWorkspace,
} from '../current/use-current-workspace';
import { import {
useRecentlyViewed, useRecentlyViewed,
useSyncRecentViewsWithRouter, useSyncRecentViewsWithRouter,
@@ -98,14 +96,14 @@ describe('useRecentlyViewed', () => {
providers: [], providers: [],
} satisfies LocalWorkspace); } satisfies LocalWorkspace);
store.set(rootCurrentWorkspaceIdAtom, blockSuiteWorkspace.id); store.set(rootCurrentWorkspaceIdAtom, blockSuiteWorkspace.id);
const workspace = await store.get(currentWorkspaceAtom); const workspace = await store.get(rootCurrentWorkspaceAtom);
expect(workspace?.id).toBe(blockSuiteWorkspace.id); expect(workspace?.id).toBe(blockSuiteWorkspace.id);
const currentHook = renderHook(() => useCurrentWorkspace(), { const currentHook = renderHook(() => useCurrentWorkspace(), {
wrapper: ProviderWrapper, wrapper: ProviderWrapper,
}); });
expect(currentHook.result.current[0]?.id).toEqual(workspaceId); expect(currentHook.result.current[0]?.id).toEqual(workspaceId);
store.set(rootCurrentWorkspaceIdAtom, blockSuiteWorkspace.id); store.set(rootCurrentWorkspaceIdAtom, blockSuiteWorkspace.id);
await store.get(currentWorkspaceAtom); await store.get(rootCurrentWorkspaceAtom);
const recentlyViewedHook = renderHook(() => useRecentlyViewed(), { const recentlyViewedHook = renderHook(() => useRecentlyViewed(), {
wrapper: ProviderWrapper, wrapper: ProviderWrapper,
}); });
@@ -1,9 +1,10 @@
import { rootCurrentPageIdAtom } from '@affine/workspace/atom';
import { atom, useAtomValue } from 'jotai'; import { atom, useAtomValue } from 'jotai';
import { currentPageIdAtom, workspacePreferredModeAtom } from '../../atoms'; import { workspacePreferredModeAtom } from '../../atoms';
const currentModeAtom = atom<'page' | 'edgeless'>(get => { const currentModeAtom = atom<'page' | 'edgeless'>(get => {
const pageId = get(currentPageIdAtom); const pageId = get(rootCurrentPageIdAtom);
const record = get(workspacePreferredModeAtom); const record = get(workspacePreferredModeAtom);
if (pageId) return record[pageId] ?? 'page'; if (pageId) return record[pageId] ?? 'page';
else { else {
@@ -1,22 +1,20 @@
import {
rootCurrentPageIdAtom,
rootCurrentWorkspaceIdAtom,
} from '@affine/workspace/atom';
import { useAtom, useAtomValue } from 'jotai'; import { useAtom, useAtomValue } from 'jotai';
import { useCallback } from 'react'; import { useCallback } from 'react';
import { currentPageIdAtom, currentWorkspaceIdAtom } from '../../atoms';
import { rootCurrentWorkspaceAtom } from '../../atoms/root'; import { rootCurrentWorkspaceAtom } from '../../atoms/root';
import type { AllWorkspace } from '../../shared'; import type { AllWorkspace } from '../../shared';
/**
* @deprecated use `rootCurrentWorkspaceAtom` instead
*/
export const currentWorkspaceAtom = rootCurrentWorkspaceAtom;
export function useCurrentWorkspace(): [ export function useCurrentWorkspace(): [
AllWorkspace, AllWorkspace,
(id: string | null) => void (id: string | null) => void
] { ] {
const currentWorkspace = useAtomValue(rootCurrentWorkspaceAtom); const currentWorkspace = useAtomValue(rootCurrentWorkspaceAtom);
const [, setId] = useAtom(currentWorkspaceIdAtom); const [, setId] = useAtom(rootCurrentWorkspaceIdAtom);
const [, setPageId] = useAtom(currentPageIdAtom); const [, setPageId] = useAtom(rootCurrentPageIdAtom);
return [ return [
currentWorkspace, currentWorkspace,
useCallback( useCallback(
@@ -1,6 +1,7 @@
import { Breadcrumbs, IconButton, ListSkeleton } from '@affine/component'; import { Breadcrumbs, IconButton, ListSkeleton } from '@affine/component';
import { StyledTableContainer } from '@affine/component/page-list'; import { StyledTableContainer } from '@affine/component/page-list';
import { QueryParamError } from '@affine/env/constant'; import { QueryParamError } from '@affine/env/constant';
import { rootCurrentWorkspaceIdAtom } from '@affine/workspace/atom';
import { SearchIcon } from '@blocksuite/icons'; import { SearchIcon } from '@blocksuite/icons';
import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url'; import { useBlockSuiteWorkspaceAvatarUrl } from '@toeverything/hooks/use-block-suite-workspace-avatar-url';
import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name'; import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-workspace-name';
@@ -9,7 +10,7 @@ import { useRouter } from 'next/router';
import type React from 'react'; import type React from 'react';
import { lazy, Suspense, useCallback, useEffect } from 'react'; import { lazy, Suspense, useCallback, useEffect } from 'react';
import { currentWorkspaceIdAtom, openQuickSearchModalAtom } from '../../atoms'; import { openQuickSearchModalAtom } from '../../atoms';
import { import {
publicWorkspaceAtom, publicWorkspaceAtom,
publicWorkspaceIdAtom, publicWorkspaceIdAtom,
@@ -96,7 +97,7 @@ const ListPage: NextPageWithLayout = () => {
const workspaceId = router.query.workspaceId; const workspaceId = router.query.workspaceId;
const setWorkspaceId = useSetAtom(publicWorkspaceIdAtom); const setWorkspaceId = useSetAtom(publicWorkspaceIdAtom);
// todo: remove this atom usage here // todo: remove this atom usage here
const setCurrentWorkspaceId = useSetAtom(currentWorkspaceIdAtom); const setCurrentWorkspaceId = useSetAtom(rootCurrentWorkspaceIdAtom);
useEffect(() => { useEffect(() => {
if (!router.isReady) { if (!router.isReady) {
return; return;