feat(core): apply default doc mode setting (#8083)

This commit is contained in:
EYHN
2024-09-04 08:31:36 +00:00
parent 01b2339173
commit eb16c273ee
6 changed files with 51 additions and 38 deletions

View File

@@ -406,8 +406,9 @@ export const General = () => {
<FontFamilySettings />
<CustomFontFamilySettings />
<NewDocDefaultModeSettings />
{/* //TODO(@akumatus): implement these settings
<DeFaultCodeBlockSettings />
<SpellCheckSettings />
<SpellCheckSettings /> */}
</SettingWrapper>
);
};

View File

@@ -1,47 +1,41 @@
import { toast } from '@affine/component';
import { useDocCollectionHelper } from '@affine/core/hooks/use-block-suite-workspace-helper';
import { EditorSettingService } from '@affine/core/modules/editor-settting';
import { WorkbenchService } from '@affine/core/modules/workbench';
import type { DocMode } from '@blocksuite/blocks';
import {
DocsService,
initEmptyPage,
useLiveData,
useServices,
} from '@toeverything/infra';
import { DocsService, initEmptyPage, useServices } from '@toeverything/infra';
import { useCallback, useMemo } from 'react';
import type { DocCollection } from '../../../shared';
export const usePageHelper = (docCollection: DocCollection) => {
const { docsService, workbenchService, editorSettingService } = useServices({
const { docsService, workbenchService } = useServices({
DocsService,
WorkbenchService,
EditorSettingService,
});
const workbench = workbenchService.workbench;
const { createDoc } = useDocCollectionHelper(docCollection);
const docRecordList = docsService.list;
const settings = useLiveData(editorSettingService.editorSetting.settings$);
const createPageAndOpen = useCallback(
(mode?: DocMode, open?: boolean | 'new-tab') => {
const page = createDoc();
initEmptyPage(page);
const primaryMode = mode || settings.newDocDefaultMode;
docRecordList.doc$(page.id).value?.setPrimaryMode(primaryMode as DocMode);
if (mode) {
docRecordList.doc$(page.id).value?.setPrimaryMode(mode);
}
if (open !== false)
workbench.openDoc(page.id, {
at: open === 'new-tab' ? 'new-tab' : 'active',
});
return page;
},
[createDoc, docRecordList, settings.newDocDefaultMode, workbench]
[createDoc, docRecordList, workbench]
);
const createEdgelessAndOpen = useCallback(
(open?: boolean | 'new-tab') => {
return createPageAndOpen('edgeless' as DocMode, open);
return createPageAndOpen('edgeless', open);
},
[createPageAndOpen]
);

View File

@@ -1,7 +1,6 @@
import { openSettingModalAtom } from '@affine/core/atoms';
import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';
import { track } from '@affine/core/mixpanel';
import { EditorSettingService } from '@affine/core/modules/editor-settting';
import {
ExplorerCollections,
ExplorerFavorites,
@@ -13,7 +12,6 @@ import { CMDKQuickSearchService } from '@affine/core/modules/quicksearch/service
import { isNewTabTrigger } from '@affine/core/utils';
import { apis, events } from '@affine/electron-api';
import { useI18n } from '@affine/i18n';
import type { DocMode } from '@blocksuite/blocks';
import {
AllDocsIcon,
GithubIcon,
@@ -79,17 +77,12 @@ export type RootAppSidebarProps = {
*
*/
export const RootAppSidebar = (): ReactElement => {
const {
workbenchService,
workspaceService,
cMDKQuickSearchService,
editorSettingService,
} = useServices({
WorkspaceService,
WorkbenchService,
CMDKQuickSearchService,
EditorSettingService,
});
const { workbenchService, workspaceService, cMDKQuickSearchService } =
useServices({
WorkspaceService,
WorkbenchService,
CMDKQuickSearchService,
});
const currentWorkspace = workspaceService.workspace;
const { appSettings } = useAppSettingHelper();
const docCollection = currentWorkspace.docCollection;
@@ -106,18 +99,16 @@ export const RootAppSidebar = (): ReactElement => {
const pageHelper = usePageHelper(currentWorkspace.docCollection);
const settings = useLiveData(editorSettingService.editorSetting.settings$);
const onClickNewPage = useAsyncCallback(
async (e?: MouseEvent) => {
const page = pageHelper.createPage(
settings.newDocDefaultMode as DocMode,
undefined,
isNewTabTrigger(e) ? 'new-tab' : true
);
page.load();
track.$.navigationPanel.$.createDoc({ mode: settings.newDocDefaultMode });
track.$.navigationPanel.$.createDoc();
},
[pageHelper, settings.newDocDefaultMode]
[pageHelper]
);
useEffect(() => {