From d18422c40664eccd706bc48b47feb1dd91ad8b5b Mon Sep 17 00:00:00 2001 From: Srinaath Ravichandran Date: Sun, 22 Nov 2020 17:12:29 -0800 Subject: [PATCH] fix: Dialog creation, trigger creation error resolved (#4934) * Dialog creation issues fixed Signed-off-by: Srinaath Ravichandran * Project tree prevent rerender Signed-off-by: Srinaath Ravichandran Co-authored-by: Srinaath Ravichandran --- .../src/components/ProjectTree/ProjectTree.tsx | 6 +++++- .../client/src/recoilModel/dispatchers/multilang.ts | 5 +++++ Composer/packages/client/src/shell/useShell.ts | 13 +++++++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx b/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx index bc3d6c66a3..8ba1ac3910 100644 --- a/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx +++ b/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx @@ -224,6 +224,10 @@ export const ProjectTree: React.FC = ({ const jsonSchemaFilesByProjectId = useRecoilValue(jsonSchemaFilesByProjectIdSelector); + const createSubtree = useCallback(() => { + return projectCollection.map(createBotSubtree); + }, [projectCollection]); + if (rootProjectId == null) { // this should only happen before a project is loaded in, so it won't last very long return ; @@ -658,7 +662,7 @@ export const ProjectTree: React.FC = ({ } }; - const projectTree = projectCollection.map(createBotSubtree); + const projectTree = createSubtree(); return (
{ @@ -90,12 +91,14 @@ export const multilangDispatcher = () => { const { set, snapshot } = callbackHelpers; const prevlgFiles = await snapshot.getPromise(lgFilesState(projectId)); const prevluFiles = await snapshot.getPromise(luFilesState(projectId)); + const prevQnaFiles = await snapshot.getPromise(qnaFilesState(projectId)); const prevSettings = await snapshot.getPromise(settingsState(projectId)); const onAddLanguageDialogComplete = (await snapshot.getPromise(onAddLanguageDialogCompleteState(projectId))).func; // copy files from default language const lgFiles = copyLanguageResources(prevlgFiles, defaultLang, languages); const luFiles = copyLanguageResources(prevluFiles, defaultLang, languages); + const qnaFiles = copyLanguageResources(prevQnaFiles, defaultLang, languages); const settings: any = cloneDeep(prevSettings); if (Array.isArray(settings.languages)) { @@ -112,6 +115,8 @@ export const multilangDispatcher = () => { set(lgFilesState(projectId), [...prevlgFiles, ...lgFiles]); set(luFilesState(projectId), [...prevluFiles, ...luFiles]); + set(qnaFilesState(projectId), [...prevQnaFiles, ...qnaFiles]); + set(settingsState(projectId), settings); if (typeof onAddLanguageDialogComplete === 'function') { diff --git a/Composer/packages/client/src/shell/useShell.ts b/Composer/packages/client/src/shell/useShell.ts index b176663acb..6a67f0840f 100644 --- a/Composer/packages/client/src/shell/useShell.ts +++ b/Composer/packages/client/src/shell/useShell.ts @@ -261,10 +261,15 @@ export function useShell(source: EventSource, projectId: string): Shell { confirm: OpenConfirmModal, }; - const currentDialog = useMemo(() => dialogs.find((d) => d.id === dialogId) ?? stubDialog(), [ - dialogs, - dialogId, - ]) as DialogInfo; + const currentDialog = useMemo(() => { + let result: any = dialogs.find((d) => d.id === dialogId) ?? dialogs.find((dialog) => dialog.isRoot); + if (!result) { + // Should not hit here as the seed content should atleast be the root dialog if no current dialog + result = stubDialog(); + } + return result; + }, [dialogs, dialogId]); + const editorData = useMemo(() => { return source === 'PropertyEditor' ? getDialogData(dialogsMap, dialogId, focused || selected || '')