diff --git a/packages/frontend/core/src/blocksuite/block-suite-editor/doc-icon-picker.tsx b/packages/frontend/core/src/blocksuite/block-suite-editor/doc-icon-picker.tsx index c89cf666f1..755bf97a25 100644 --- a/packages/frontend/core/src/blocksuite/block-suite-editor/doc-icon-picker.tsx +++ b/packages/frontend/core/src/blocksuite/block-suite-editor/doc-icon-picker.tsx @@ -1,4 +1,5 @@ import { IconEditor, IconRenderer } from '@affine/component'; +import { EditorSettingService } from '@affine/core/modules/editor-setting'; import { ExplorerIconService } from '@affine/core/modules/explorer-icon/services/explorer-icon'; import { useI18n } from '@affine/i18n'; import { SmileSolidIcon } from '@blocksuite/icons/rc'; @@ -35,10 +36,13 @@ export const DocIconPicker = ({ }) => { const t = useI18n(); const explorerIconService = useService(ExplorerIconService); + const editorSetting = useService(EditorSettingService).editorSetting; const icon = useLiveData(explorerIconService.icon$('doc', docId)); + const settings = useLiveData(editorSetting.settings$); const isPlaceholder = !icon?.icon; + const shouldShowAddIconOption = settings.displayAddIconOption; if (readonly) { return isPlaceholder ? null : ( @@ -51,6 +55,10 @@ export const DocIconPicker = ({ ); } + if (isPlaceholder && !shouldShowAddIconOption) { + return null; + } + return ( { 'YYYY-MM-DD', 'com.affine.settings.editorSettings.general.auto-date-title.format.journal': 'Journal style (localized)', + 'com.affine.settings.editorSettings.general.add-icon-option.title': + 'Display add icon option', + 'com.affine.settings.editorSettings.general.add-icon-option.description': + 'Show or hide the add icon option for docs without an icon.', }; const useI18n = () => @@ -86,6 +91,7 @@ describe('NewDocDateTitleSettings', () => { editorSettingService.editorSetting['settings$'].value = { autoTitleNewDocWithCurrentDate: true, newDocDateTitleFormat: 'DD-MM-YYYY', + displayAddIconOption: true, }; }); @@ -97,7 +103,7 @@ describe('NewDocDateTitleSettings', () => { test('persists the auto title toggle through EditorSettingService', () => { render(); - fireEvent.click(screen.getByRole('checkbox')); + fireEvent.click(screen.getByTestId('auto-title-new-doc-trigger')); expect(editorSettingSet).toHaveBeenCalledWith( 'autoTitleNewDocWithCurrentDate', @@ -140,6 +146,7 @@ describe('NewDocDateTitleSettings', () => { editorSettingService.editorSetting['settings$'].value = { autoTitleNewDocWithCurrentDate: false, newDocDateTitleFormat: 'DD-MM-YYYY', + displayAddIconOption: true, }; render(); @@ -149,4 +156,15 @@ describe('NewDocDateTitleSettings', () => { ).toBeNull(); expect(screen.queryByText('New doc date format')).toBeNull(); }); + + test('persists the add icon option toggle through EditorSettingService', () => { + render(); + + fireEvent.click(screen.getByTestId('display-add-icon-option-trigger')); + + expect(editorSettingSet).toHaveBeenCalledWith( + 'displayAddIconOption', + false + ); + }); }); diff --git a/packages/frontend/core/src/desktop/dialogs/setting/general-setting/editor/general.tsx b/packages/frontend/core/src/desktop/dialogs/setting/general-setting/editor/general.tsx index 5a17c9e75a..e5baa97631 100644 --- a/packages/frontend/core/src/desktop/dialogs/setting/general-setting/editor/general.tsx +++ b/packages/frontend/core/src/desktop/dialogs/setting/general-setting/editor/general.tsx @@ -464,6 +464,13 @@ export const NewDocDateTitleSettings = () => { [editorSettingService.editorSetting] ); + const onToggleDisplayAddIconOption = useCallback( + (checked: boolean) => { + editorSettingService.editorSetting.set('displayAddIconOption', checked); + }, + [editorSettingService.editorSetting] + ); + return ( <> { ]()} > + + + {settings.autoTitleNewDocWithCurrentDate ? (