chore(core): remove template doc feature flag (#10252)

This commit is contained in:
L-Sun
2025-02-18 09:25:06 +00:00
parent e639f08b71
commit 4e546c78ef
11 changed files with 14 additions and 85 deletions

View File

@@ -1,5 +1,5 @@
import { AIChatBlockSpec } from '@affine/core/blocksuite/presets/blocks/ai-chat-block';
import { PeekViewService } from '@affine/core/modules/peek-view';
import { PeekViewService } from '@affine/core/modules/peek-view/services/peek-view';
import { AppThemeService } from '@affine/core/modules/theme';
import {
type BlockStdScope,

View File

@@ -66,9 +66,6 @@ const StarterBarNotEmpty = ({ doc }: { doc: Store }) => {
)
);
const enableAI = useLiveData(featureFlagService.flags.enable_ai.$);
const enableTemplateDoc = useLiveData(
featureFlagService.flags.enable_template_doc.$
);
const handleSelectTemplate = useAsyncCallback(
async (templateId: string) => {
@@ -109,7 +106,7 @@ const StarterBarNotEmpty = ({ doc }: { doc: Store }) => {
}
}, [editorService.editor]);
const showTemplate = !isTemplate && enableTemplateDoc;
const showTemplate = !isTemplate;
if (!enableAI && !showTemplate) {
return null;

View File

@@ -15,7 +15,6 @@ import type {
DatabaseRow,
DatabaseValueCell,
} from '@affine/core/modules/doc-info/types';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { GuardService } from '@affine/core/modules/permissions';
import { ViewService, WorkbenchService } from '@affine/core/modules/workbench';
import type { AffineDNDData } from '@affine/core/types/dnd';
@@ -132,13 +131,10 @@ export const DocPropertyRow = ({
const t = useI18n();
const docService = useService(DocService);
const docsService = useService(DocsService);
const featureFlagService = useService(FeatureFlagService);
const customPropertyValue = useLiveData(
docService.doc.customProperty$(propertyInfo.id)
);
const enableTemplateDoc = useLiveData(
featureFlagService.flags.enable_template_doc.$
);
const typeInfo = isSupportedDocPropertyType(propertyInfo.type)
? DocPropertyTypes[propertyInfo.type]
: undefined;
@@ -215,9 +211,6 @@ export const DocPropertyRow = ({
);
if (!ValueRenderer || typeof ValueRenderer !== 'function') return null;
if (propertyInfo.id === 'template' && !enableTemplateDoc) {
return null;
}
return (
<PropertyRoot

View File

@@ -1,21 +1,18 @@
import { Menu, MenuItem, MenuSeparator } from '@affine/component';
import { MenuItem as SidebarMenuItem } from '@affine/core/modules/app-sidebar/views';
import { DocsService } from '@affine/core/modules/doc';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { TemplateListMenuContentScrollable } from '@affine/core/modules/template-doc/view/template-list-menu';
import { WorkbenchService } from '@affine/core/modules/workbench';
import { inferOpenMode } from '@affine/core/utils';
import { useI18n } from '@affine/i18n';
import track from '@affine/track';
import { TemplateIcon } from '@blocksuite/icons/rc';
import { useLiveData, useService } from '@toeverything/infra';
import { useService } from '@toeverything/infra';
import { useCallback, useState } from 'react';
export const TemplateDocEntrance = () => {
const t = useI18n();
const [menuOpen, setMenuOpen] = useState(false);
const featureFlagService = useService(FeatureFlagService);
const enabled = useLiveData(featureFlagService.flags.enable_template_doc.$);
const toggleMenu = useCallback(() => {
setMenuOpen(prev => !prev);
@@ -26,10 +23,6 @@ export const TemplateDocEntrance = () => {
setMenuOpen(open);
}, []);
if (!enabled) {
return null;
}
return (
<SidebarMenuItem
data-testid="sidebar-template-doc-entrance"

View File

@@ -10,25 +10,18 @@ import {
} from '@affine/component/setting-components';
import { DocsService } from '@affine/core/modules/doc';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { TemplateDocService } from '@affine/core/modules/template-doc';
import { TemplateListMenu } from '@affine/core/modules/template-doc/view/template-list-menu';
import { useI18n } from '@affine/i18n';
import { DeleteIcon } from '@blocksuite/icons/rc';
import { useLiveData, useService, useServices } from '@toeverything/infra';
import { useLiveData, useService } from '@toeverything/infra';
import { useCallback } from 'react';
import * as styles from './template.css';
export const TemplateDocSetting = () => {
const t = useI18n();
const { featureFlagService, templateDocService } = useServices({
FeatureFlagService,
TemplateDocService,
});
const setting = templateDocService.setting;
const enabled = useLiveData(featureFlagService.flags.enable_template_doc.$);
const setting = useService(TemplateDocService).setting;
const enablePageTemplate = useLiveData(setting.enablePageTemplate$);
const pageTemplateDocId = useLiveData(setting.pageTemplateDocId$);
@@ -55,8 +48,6 @@ export const TemplateDocSetting = () => {
[setting]
);
if (!enabled) return null;
return (
<SettingWrapper title={t['com.affine.settings.workspace.template.title']()}>
<SettingRow

View File

@@ -1,5 +1,4 @@
import { Button, IconButton, Menu } from '@affine/component';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { GlobalStateService } from '@affine/core/modules/storage';
import { TemplateDocService } from '@affine/core/modules/template-doc';
import { TemplateListMenuContentScrollable } from '@affine/core/modules/template-doc/view/template-list-menu';
@@ -19,11 +18,7 @@ let animationPlayed = false;
export const JournalTemplateOnboarding = () => {
const containerRef = useRef<HTMLDivElement>(null);
const globalState = useService(GlobalStateService).globalState;
const featureFlagService = useService(FeatureFlagService);
const templateDocService = useService(TemplateDocService);
const enableTemplate = useLiveData(
featureFlagService.flags.enable_template_doc.$
);
const t = useI18n();
const dismissed = useLiveData(
@@ -65,7 +60,7 @@ export const JournalTemplateOnboarding = () => {
[templateDocService.setting]
);
if (dismissed || !enableTemplate) return null;
if (dismissed) return null;
return (
<div

View File

@@ -1,7 +1,6 @@
import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils';
import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks';
import { DocsService } from '@affine/core/modules/doc';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { TemplateDocService } from '@affine/core/modules/template-doc';
import { WorkbenchService } from '@affine/core/modules/workbench';
import { WorkspaceService } from '@affine/core/modules/workspace';
@@ -15,15 +14,11 @@ import { TabItem } from './tab-item';
export const AppTabCreate = ({ tab }: AppTabCustomFCProps) => {
const workbench = useService(WorkbenchService).workbench;
const workspaceService = useService(WorkspaceService);
const featureFlagService = useService(FeatureFlagService);
const templateDocService = useService(TemplateDocService);
const docsService = useService(DocsService);
const currentWorkspace = workspaceService.workspace;
const pageHelper = usePageHelper(currentWorkspace.docCollection);
const enableTemplateDoc = useLiveData(
featureFlagService.flags.enable_template_doc.$
);
const enablePageTemplate = useLiveData(
templateDocService.setting.enablePageTemplate$
);
@@ -34,7 +29,7 @@ export const AppTabCreate = ({ tab }: AppTabCustomFCProps) => {
const createPage = useAsyncCallback(
async (isActive: boolean) => {
if (isActive) return;
if (enableTemplateDoc && enablePageTemplate && pageTemplateDocId) {
if (enablePageTemplate && pageTemplateDocId) {
const docId =
await docsService.duplicateFromTemplate(pageTemplateDocId);
workbench.openDoc({ docId, fromTab: 'true' });
@@ -44,14 +39,7 @@ export const AppTabCreate = ({ tab }: AppTabCustomFCProps) => {
}
track.$.navigationPanel.$.createDoc();
},
[
docsService,
enablePageTemplate,
enableTemplateDoc,
pageHelper,
pageTemplateDocId,
workbench,
]
[docsService, enablePageTemplate, pageHelper, pageTemplateDocId, workbench]
);
return (

View File

@@ -3,7 +3,6 @@ import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-pa
import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks';
import { DocsService } from '@affine/core/modules/doc';
import { EditorSettingService } from '@affine/core/modules/editor-setting';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { TemplateDocService } from '@affine/core/modules/template-doc';
import { TemplateListMenuContentScrollable } from '@affine/core/modules/template-doc/view/template-list-menu';
import { WorkbenchService } from '@affine/core/modules/workbench';
@@ -30,16 +29,11 @@ import * as styles from './index.css';
* @return a function to create a new doc, will duplicate the template doc if the page template is enabled
*/
const useNewDoc = () => {
const featureFlagService = useService(FeatureFlagService);
const workspaceService = useService(WorkspaceService);
const templateDocService = useService(TemplateDocService);
const docsService = useService(DocsService);
const workbench = useService(WorkbenchService).workbench;
const enableTemplateDoc = useLiveData(
featureFlagService.flags.enable_template_doc.$
);
const currentWorkspace = workspaceService.workspace;
const enablePageTemplate = useLiveData(
templateDocService.setting.enablePageTemplate$
@@ -52,7 +46,7 @@ const useNewDoc = () => {
const createPage = useAsyncCallback(
async (e?: MouseEvent, mode?: DocMode) => {
if (enableTemplateDoc && enablePageTemplate && pageTemplateDocId) {
if (enablePageTemplate && pageTemplateDocId) {
const docId =
await docsService.duplicateFromTemplate(pageTemplateDocId);
workbench.openDoc(docId, { at: inferOpenMode(e) });
@@ -60,14 +54,7 @@ const useNewDoc = () => {
pageHelper.createPage(mode, { at: inferOpenMode(e) });
}
},
[
docsService,
enablePageTemplate,
enableTemplateDoc,
pageHelper,
pageTemplateDocId,
workbench,
]
[docsService, enablePageTemplate, pageHelper, pageTemplateDocId, workbench]
);
return createPage;

View File

@@ -222,15 +222,6 @@ export const AFFINE_FLAGS = {
configurable: !isMobile,
defaultState: false,
},
// TODO(@CatsJuice): remove this flag when ready
enable_template_doc: {
category: 'affine',
displayName: 'Enable template doc',
description:
'Allow users to mark a doc as a template, and create new docs from it',
configurable: true,
defaultState: isCanaryBuild,
},
enable_editor_rtl: {
category: 'affine',
displayName:

View File

@@ -2,7 +2,6 @@ import { type Framework } from '@toeverything/infra';
import { DocScope, DocService, DocsService } from '../doc';
import { EditorSettingService } from '../editor-setting';
import { FeatureFlagService } from '../feature-flag';
import { TemplateDocService } from '../template-doc';
import { WorkspaceScope } from '../workspace';
import { JournalService } from './services/journal';
@@ -25,7 +24,6 @@ export function configureJournalModule(framework: Framework) {
DocsService,
EditorSettingService,
TemplateDocService,
FeatureFlagService,
])
.store(JournalStore, [DocsService])
.scope(DocScope)

View File

@@ -8,7 +8,6 @@ import {
} from '../../../blocksuite/initialization';
import type { DocsService } from '../../doc';
import type { EditorSettingService } from '../../editor-setting';
import type { FeatureFlagService } from '../../feature-flag';
import type { TemplateDocService } from '../../template-doc';
import type { JournalStore } from '../store/journal';
@@ -21,8 +20,7 @@ export class JournalService extends Service {
private readonly store: JournalStore,
private readonly docsService: DocsService,
private readonly editorSettingService: EditorSettingService,
private readonly templateDocService: TemplateDocService,
private readonly featureFlagService: FeatureFlagService
private readonly templateDocService: TemplateDocService
) {
super();
}
@@ -66,8 +64,6 @@ export class JournalService extends Service {
.getTime(),
});
const enableTemplateDoc =
this.featureFlagService.flags.enable_template_doc.value;
const enablePageTemplate =
this.templateDocService.setting.enablePageTemplate$.value;
const pageTemplateDocId =
@@ -75,13 +71,13 @@ export class JournalService extends Service {
const journalTemplateDocId =
this.templateDocService.setting.journalTemplateDocId$.value;
// if journal template configured
if (enableTemplateDoc && journalTemplateDocId) {
if (journalTemplateDocId) {
this.docsService
.duplicateFromTemplate(journalTemplateDocId, docRecord.id)
.catch(console.error);
}
// journal template not configured, use page template
else if (enableTemplateDoc && enablePageTemplate && pageTemplateDocId) {
else if (enablePageTemplate && pageTemplateDocId) {
this.docsService
.duplicateFromTemplate(pageTemplateDocId, docRecord.id)
.catch(console.error);