mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
refactor: mode atom (#3221)
This commit is contained in:
12
apps/web/src/atoms/mode.ts
Normal file
12
apps/web/src/atoms/mode.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { currentPageIdAtom } from '@toeverything/plugin-infra/manager';
|
||||||
|
import { atom } from 'jotai/vanilla';
|
||||||
|
|
||||||
|
import { pageSettingFamily } from './index';
|
||||||
|
|
||||||
|
export const currentModeAtom = atom<'page' | 'edgeless'>(get => {
|
||||||
|
const pageId = get(currentPageIdAtom);
|
||||||
|
if (!pageId) {
|
||||||
|
return 'page';
|
||||||
|
}
|
||||||
|
return get(pageSettingFamily(pageId)).mode;
|
||||||
|
});
|
||||||
@@ -23,7 +23,7 @@ import {
|
|||||||
|
|
||||||
import { guideDownloadClientTipAtom } from '../../../atoms/guide';
|
import { guideDownloadClientTipAtom } from '../../../atoms/guide';
|
||||||
import { contentLayoutAtom } from '../../../atoms/layout';
|
import { contentLayoutAtom } from '../../../atoms/layout';
|
||||||
import { useCurrentMode } from '../../../hooks/current/use-current-mode';
|
import { currentModeAtom } from '../../../atoms/mode';
|
||||||
import type { AffineOfficialWorkspace } from '../../../shared';
|
import type { AffineOfficialWorkspace } from '../../../shared';
|
||||||
import { DownloadClientTip } from './download-tips';
|
import { DownloadClientTip } from './download-tips';
|
||||||
import EditPage from './header-right-items/edit-page';
|
import EditPage from './header-right-items/edit-page';
|
||||||
@@ -205,7 +205,7 @@ export const Header = forwardRef<
|
|||||||
const open = useAtomValue(appSidebarOpenAtom);
|
const open = useAtomValue(appSidebarOpenAtom);
|
||||||
const appSidebarFloating = useAtomValue(appSidebarFloatingAtom);
|
const appSidebarFloating = useAtomValue(appSidebarFloatingAtom);
|
||||||
|
|
||||||
const mode = useCurrentMode();
|
const mode = useAtomValue(currentModeAtom);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { MuiFade, Tooltip } from '@affine/component';
|
import { MuiFade, Tooltip } from '@affine/component';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import { CloseIcon, NewIcon, UserGuideIcon } from '@blocksuite/icons';
|
import { CloseIcon, NewIcon, UserGuideIcon } from '@blocksuite/icons';
|
||||||
import { useSetAtom } from 'jotai';
|
import { useSetAtom } from 'jotai/react';
|
||||||
|
import { useAtomValue } from 'jotai/react';
|
||||||
import { useCallback, useState } from 'react';
|
import { useCallback, useState } from 'react';
|
||||||
|
|
||||||
import { openOnboardingModalAtom, openSettingModalAtom } from '../../../atoms';
|
import { openOnboardingModalAtom, openSettingModalAtom } from '../../../atoms';
|
||||||
import { useCurrentMode } from '../../../hooks/current/use-current-mode';
|
import { currentModeAtom } from '../../../atoms/mode';
|
||||||
import { ShortcutsModal } from '../shortcuts-modal';
|
import { ShortcutsModal } from '../shortcuts-modal';
|
||||||
import { ContactIcon, HelpIcon, KeyboardIcon } from './icons';
|
import { ContactIcon, HelpIcon, KeyboardIcon } from './icons';
|
||||||
import {
|
import {
|
||||||
@@ -27,7 +28,7 @@ export const HelpIsland = ({
|
|||||||
}: {
|
}: {
|
||||||
showList?: IslandItemNames[];
|
showList?: IslandItemNames[];
|
||||||
}) => {
|
}) => {
|
||||||
const mode = useCurrentMode();
|
const mode = useAtomValue(currentModeAtom);
|
||||||
const setOpenOnboarding = useSetAtom(openOnboardingModalAtom);
|
const setOpenOnboarding = useSetAtom(openOnboardingModalAtom);
|
||||||
const setOpenSettingModalAtom = useSetAtom(openSettingModalAtom);
|
const setOpenSettingModalAtom = useSetAtom(openSettingModalAtom);
|
||||||
const [spread, setShowSpread] = useState(false);
|
const [spread, setShowSpread] = useState(false);
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
import { currentPageIdAtom } from '@toeverything/plugin-infra/manager';
|
|
||||||
import { atom, useAtomValue } from 'jotai';
|
|
||||||
|
|
||||||
import { pageSettingFamily } from '../../atoms';
|
|
||||||
|
|
||||||
const currentModeAtom = atom<'page' | 'edgeless'>(get => {
|
|
||||||
const pageId = get(currentPageIdAtom);
|
|
||||||
// fixme(himself65): pageId should not be null
|
|
||||||
if (!pageId) {
|
|
||||||
return 'page';
|
|
||||||
}
|
|
||||||
return get(pageSettingFamily(pageId))?.mode ?? 'page';
|
|
||||||
});
|
|
||||||
|
|
||||||
export const useCurrentMode = () => {
|
|
||||||
return useAtomValue(currentModeAtom);
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user