From ca887168bb271427d5eb6a0d541bf10fdb4349dd Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Fri, 27 Jun 2025 14:28:58 +0530 Subject: [PATCH] [WIKI-501] fix: flagged extensions in slash commands (#3522) --- .../src/ee/extensions/document-extensions.tsx | 13 ++++++++----- .../src/ee/extensions/rich-text/extensions.tsx | 7 ++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/editor/src/ee/extensions/document-extensions.tsx b/packages/editor/src/ee/extensions/document-extensions.tsx index 125fb52ade..c4c06e086d 100644 --- a/packages/editor/src/ee/extensions/document-extensions.tsx +++ b/packages/editor/src/ee/extensions/document-extensions.tsx @@ -25,12 +25,13 @@ import { CustomCollaborationCursor } from "./collaboration-cursor"; * Each entry defines a single slash command option with its own enabling logic */ const slashCommandRegistry: { - isEnabled: (disabledExtensions: TExtensions[]) => boolean; + isEnabled: (disabledExtensions: TExtensions[], flaggedExtensions: TExtensions[]) => boolean; getOption: (props: TDocumentEditorAdditionalExtensionsProps) => TSlashCommandAdditionalOption | null; }[] = [ { // Work item embed slash command - isEnabled: (disabledExtensions) => !disabledExtensions.includes("issue-embed"), + isEnabled: (disabledExtensions, flaggedExtensions) => + !disabledExtensions.includes("issue-embed") && !flaggedExtensions.includes("issue-embed"), getOption: () => ({ commandKey: "issue-embed", key: "issue-embed", @@ -47,7 +48,8 @@ const slashCommandRegistry: { }, { // Page embed slash command - isEnabled: (disabledExtensions) => !disabledExtensions.includes("nested-pages"), + isEnabled: (disabledExtensions, flaggedExtensions) => + !disabledExtensions.includes("nested-pages") && !flaggedExtensions.includes("nested-pages"), getOption: ({ embedConfig }) => { // Only enable if page config with createCallback exists const pageConfig = embedConfig?.page; @@ -80,7 +82,8 @@ const slashCommandRegistry: { }, { // Attachment slash command - isEnabled: (disabledExtensions) => !disabledExtensions.includes("attachments"), + isEnabled: (disabledExtensions, flaggedExtensions) => + !disabledExtensions.includes("attachments") && !flaggedExtensions.includes("attachments"), getOption: () => ({ commandKey: "attachment", key: "attachment", @@ -106,7 +109,7 @@ const extensionRegistry: TDocumentEditorAdditionalExtensionsRegistry[] = [ getExtension: (props) => { // Get enabled slash command options from the registry const slashCommandOptions = slashCommandRegistry - .filter((command) => command.isEnabled(props.disabledExtensions || [])) + .filter((command) => command.isEnabled(props.disabledExtensions, props.flaggedExtensions)) .map((command) => command.getOption(props)) .filter((option): option is TSlashCommandAdditionalOption => option !== null); diff --git a/packages/editor/src/ee/extensions/rich-text/extensions.tsx b/packages/editor/src/ee/extensions/rich-text/extensions.tsx index 3d55a593f2..d6118a67d5 100644 --- a/packages/editor/src/ee/extensions/rich-text/extensions.tsx +++ b/packages/editor/src/ee/extensions/rich-text/extensions.tsx @@ -18,11 +18,12 @@ import { CustomAttachmentExtension } from "../attachments/extension"; * Each entry defines a single slash command option with its own enabling logic */ const slashCommandRegistry: { - isEnabled: (disabledExtensions: TExtensions[]) => boolean; + isEnabled: (disabledExtensions: TExtensions[], flaggedExtensions: TExtensions[]) => boolean; getOption: (props: TRichTextEditorAdditionalExtensionsProps) => TSlashCommandAdditionalOption | null; }[] = [ { - isEnabled: (disabledExtensions) => !disabledExtensions.includes("attachments"), + isEnabled: (disabledExtensions, flaggedExtensions) => + !disabledExtensions.includes("attachments") && !flaggedExtensions.includes("attachments"), getOption: () => ({ commandKey: "attachment", key: "attachment", @@ -44,7 +45,7 @@ const extensionRegistry: TRichTextEditorAdditionalExtensionsRegistry[] = [ const { disabledExtensions, flaggedExtensions } = props; // Get enabled slash command options from the registry const slashCommandOptions = slashCommandRegistry - .filter((command) => command.isEnabled(disabledExtensions || [])) + .filter((command) => command.isEnabled(disabledExtensions, flaggedExtensions)) .map((command) => command.getOption(props)) .filter((option): option is TSlashCommandAdditionalOption => option !== null);