feat(core): apply default doc mode setting (#8083)
This commit is contained in:
@@ -406,8 +406,9 @@ export const General = () => {
|
||||
<FontFamilySettings />
|
||||
<CustomFontFamilySettings />
|
||||
<NewDocDefaultModeSettings />
|
||||
{/* //TODO(@akumatus): implement these settings
|
||||
<DeFaultCodeBlockSettings />
|
||||
<SpellCheckSettings />
|
||||
<SpellCheckSettings /> */}
|
||||
</SettingWrapper>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -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]
|
||||
);
|
||||
|
||||
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user