remove isRichTextV2Enabled feature flag (#10562)

This commit is contained in:
Etienne
2025-02-28 14:34:06 +01:00
committed by GitHub
parent ea1ac3708c
commit 2aa72de210
14 changed files with 31 additions and 135 deletions

View File

@ -12,7 +12,6 @@ import {
MaintainedWorkspacesMigrationCommandOptions,
MaintainedWorkspacesMigrationCommandRunner,
} from 'src/database/commands/migration-command/maintained-workspaces-migration-command.runner';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlag } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
@ -174,8 +173,6 @@ export class MigrateRichTextFieldCommand extends MaintainedWorkspacesMigrationCo
workspaceId,
});
await this.enableRichTextV2FeatureFlag(workspaceId);
if (!this.options.dryRun) {
await this.workspaceMetadataVersionService.incrementMetadataVersion(
workspaceId,
@ -190,24 +187,6 @@ export class MigrateRichTextFieldCommand extends MaintainedWorkspacesMigrationCo
}
}
private async enableRichTextV2FeatureFlag(
workspaceId: string,
): Promise<void> {
if (!this.options.dryRun) {
await this.featureFlagRepository.upsert(
{
workspaceId,
key: FeatureFlagKey.IsRichTextV2Enabled,
value: true,
},
{
conflictPaths: ['workspaceId', 'key'],
skipUpdateIfNoValuesChanged: true,
},
);
}
}
private buildRichTextFieldStandardId(richTextField: FieldMetadataEntity) {
switch (true) {
case richTextField.standardId === TASK_STANDARD_FIELD_IDS.body: {

View File

@ -8,7 +8,6 @@ import {
MaintainedWorkspacesMigrationCommandOptions,
MaintainedWorkspacesMigrationCommandRunner,
} from 'src/database/commands/migration-command/maintained-workspaces-migration-command.runner';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlag } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
@ -66,14 +65,6 @@ export class MigrateSearchVectorOnNoteAndTaskEntitiesCommand extends MaintainedW
`Running command for workspace ${workspaceId} ${index + 1}/${total}`,
);
await this.featureFlagRepository.findOneOrFail({
where: {
workspaceId,
key: FeatureFlagKey.IsRichTextV2Enabled,
value: true,
},
});
const noteObjectMetadata =
await this.objectMetadataRepository.findOneOrFail({
select: ['id'],

View File

@ -75,11 +75,6 @@ export const seedFeatureFlags = async (
workspaceId: workspaceId,
value: true,
},
{
key: FeatureFlagKey.IsRichTextV2Enabled,
workspaceId: workspaceId,
value: true,
},
{
key: FeatureFlagKey.IsNewRelationEnabled,
workspaceId: workspaceId,

View File

@ -1,6 +1,5 @@
import { QueryResultGetterHandlerInterface } from 'src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/interfaces/query-result-getter-handler.interface';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { FileService } from 'src/engine/core-modules/file/services/file.service';
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
@ -22,14 +21,7 @@ export class ActivityQueryResultGetterHandler
activity: TaskWorkspaceEntity | NoteWorkspaceEntity,
workspaceId: string,
): Promise<TaskWorkspaceEntity | NoteWorkspaceEntity> {
const isRichTextV2Enabled = await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IsRichTextV2Enabled,
workspaceId,
);
const blocknoteJson = isRichTextV2Enabled
? activity.bodyV2?.blocknote
: activity.body;
const blocknoteJson = activity.bodyV2?.blocknote;
if (!activity.id || !blocknoteJson) {
return activity;
@ -44,7 +36,7 @@ export class ActivityQueryResultGetterHandler
// TODO: Remove this once we have removed the old rich text
// eslint-disable-next-line no-console
console.warn(
`Failed to parse body for activity ${activity.id} in workspace ${workspaceId}, for rich text version ${isRichTextV2Enabled ? 'v2' : 'v1'}`,
`Failed to parse body for activity ${activity.id} in workspace ${workspaceId}, for rich text version 'v2'`,
);
// eslint-disable-next-line no-console
console.warn(blocknoteJson);
@ -76,19 +68,12 @@ export class ActivityQueryResultGetterHandler
}),
);
if (isRichTextV2Enabled) {
return {
...activity,
bodyV2: {
blocknote: JSON.stringify(blocknoteWithSignedPayload),
markdown: activity.bodyV2?.markdown ?? null,
},
};
}
return {
...activity,
body: JSON.stringify(blocknoteWithSignedPayload),
bodyV2: {
blocknote: JSON.stringify(blocknoteWithSignedPayload),
markdown: activity.bodyV2?.markdown ?? null,
},
};
}
}

View File

@ -205,6 +205,10 @@ export class QueryRunnerArgsFactory {
}
case FieldMetadataType.NUMBER:
return [key, value === null ? null : Number(value)];
case FieldMetadataType.RICH_TEXT:
throw new Error(
'Rich text is not supported, please use RICH_TEXT_V2 instead',
);
case FieldMetadataType.RICH_TEXT_V2: {
const richTextV2Value = richTextV2ValueSchema.parse(value);

View File

@ -13,7 +13,6 @@ export enum FeatureFlagKey {
IsCustomDomainEnabled = 'IS_CUSTOM_DOMAIN_ENABLED',
IsApprovedAccessDomainsEnabled = 'IS_APPROVED_ACCESS_DOMAINS_ENABLED',
IsBillingPlansEnabled = 'IS_BILLING_PLANS_ENABLED',
IsRichTextV2Enabled = 'IS_RICH_TEXT_V2_ENABLED',
IsNewRelationEnabled = 'IS_NEW_RELATION_ENABLED',
IsPermissionsEnabled = 'IS_PERMISSIONS_ENABLED',
}