diff --git a/Composer/packages/client/src/pages/design/SideBar.tsx b/Composer/packages/client/src/pages/design/SideBar.tsx index 6819c5a3cf..4852d96b56 100644 --- a/Composer/packages/client/src/pages/design/SideBar.tsx +++ b/Composer/packages/client/src/pages/design/SideBar.tsx @@ -4,7 +4,7 @@ /** @jsx jsx */ import { jsx } from '@emotion/core'; import formatMessage from 'format-message'; -import { Diagnostic } from '@bfc/shared'; +import { Diagnostic, DialogInfo } from '@bfc/shared'; import { useRecoilValue } from 'recoil'; import { OpenConfirmModal, dialogStyle } from '@bfc/ui-shared'; import { useSetRecoilState } from 'recoil'; @@ -47,13 +47,13 @@ function onRenderContent(subTitle, style) { ); } -function getAllRef(targetId, dialogs) { - let refs: string[] = []; +function getAllRef(targetId: string, dialogs: DialogInfo[]) { + const refs: string[] = []; + + // find target dialog's all parent dialogs.forEach((dialog) => { - if (dialog.id === targetId) { - refs = refs.concat(dialog.referredDialogs); - } else if (!dialog.referredDialogs.every((item) => item !== targetId)) { - refs.push(dialog.displayName || dialog.id); + if (dialog.referredDialogs?.some((name) => name === targetId)) { + refs.push(dialog.id); } }); return refs; diff --git a/Composer/packages/lib/indexers/src/dialogIndexer.ts b/Composer/packages/lib/indexers/src/dialogIndexer.ts index d68b42702b..991fd27157 100644 --- a/Composer/packages/lib/indexers/src/dialogIndexer.ts +++ b/Composer/packages/lib/indexers/src/dialogIndexer.ts @@ -149,7 +149,7 @@ function extractReferredDialogs(dialog): string[] { * */ const visitor: VisitorFunc = (path: string, value: any): boolean => { // it's a valid schema dialog node. - if (has(value, '$kind') && value.$kind === SDKKinds.BeginDialog) { + if (has(value, '$kind') && value.$kind === SDKKinds.BeginDialog && value.dialog) { const dialogName = value.dialog; dialogs.push(dialogName); }