diff --git a/Composer/packages/client/src/ShellApi.ts b/Composer/packages/client/src/ShellApi.ts index 28188758e9..ad661bfd24 100644 --- a/Composer/packages/client/src/ShellApi.ts +++ b/Composer/packages/client/src/ShellApi.ts @@ -126,16 +126,6 @@ export const ShellApi: React.FC = () => { return true; } - function getLgTemplates({ id }, event) { - if (isEventSourceValid(event) === false) return false; - - if (id === undefined) throw new Error('must have a file id'); - const file = lgFiles.find(file => file.id === id); - if (!file) throw new Error(`lg file ${id} not found`); - - return lgUtil.parse(file.content); - } - /** * * @param { @@ -302,7 +292,6 @@ export const ShellApi: React.FC = () => { apiClient.registerApi('copyLgTemplate', copyLgTemplateHandler); apiClient.registerApi('removeLgTemplate', removeLgTemplateHandler); apiClient.registerApi('removeLgTemplates', removeLgTemplatesHandler); - apiClient.registerApi('getLgTemplates', ({ id }, event) => getLgTemplates({ id }, event)); apiClient.registerApi('navTo', navTo); apiClient.registerApi('onFocusEvent', focusEvent); apiClient.registerApi('onFocusSteps', focusSteps); diff --git a/Composer/packages/client/src/extension-container/ExtensionContainer.tsx b/Composer/packages/client/src/extension-container/ExtensionContainer.tsx index bb37bc25b1..6e211c3e8f 100644 --- a/Composer/packages/client/src/extension-container/ExtensionContainer.tsx +++ b/Composer/packages/client/src/extension-container/ExtensionContainer.tsx @@ -70,10 +70,6 @@ const shellApi: ShellApi = { return apiClient.apiCall('updateLgFile', { id, content }); }, - getLgTemplates: id => { - return apiClient.apiCall('getLgTemplates', { id }); - }, - createLgTemplate: (id, template, position) => { return apiClient.apiCall('createLgTemplate', { id, template, position }); }, diff --git a/Composer/packages/extensions/obiformeditor/demo/src/index.tsx b/Composer/packages/extensions/obiformeditor/demo/src/index.tsx index 8dee3657fe..75138c68a8 100644 --- a/Composer/packages/extensions/obiformeditor/demo/src/index.tsx +++ b/Composer/packages/extensions/obiformeditor/demo/src/index.tsx @@ -89,7 +89,10 @@ const luFiles: LuFile[] = [ parsedContent: { LUISJsonStructure: { intents: [{ name: 'FirstHello' }, { name: 'FirstGoodBye' }], - utterances: [{ intent: 'FirstHello', text: 'Hi' }, { intent: 'FirstGoodBye', text: 'Goodbye' }], + utterances: [ + { intent: 'FirstHello', text: 'Hi' }, + { intent: 'FirstGoodBye', text: 'Goodbye' }, + ], }, }, }, @@ -100,7 +103,10 @@ const luFiles: LuFile[] = [ parsedContent: { LUISJsonStructure: { intents: [{ name: 'SecondHello' }, { name: 'SecondGoodBye' }], - utterances: [{ intent: 'SecondHello', text: 'Good morning' }, { intent: 'SecondGoodBye', text: 'See ya!' }], + utterances: [ + { intent: 'SecondHello', text: 'Good morning' }, + { intent: 'SecondGoodBye', text: 'See ya!' }, + ], }, }, }, @@ -111,7 +117,10 @@ const luFiles: LuFile[] = [ parsedContent: { LUISJsonStructure: { intents: [{ name: 'ThirdHello' }, { name: 'ThirdGoodbye' }], - utterances: [{ intent: 'ThirdHello', text: 'Hello' }, { intent: 'ThirdGoodbye', text: 'Later' }], + utterances: [ + { intent: 'ThirdHello', text: 'Hello' }, + { intent: 'ThirdGoodbye', text: 'Later' }, + ], }, }, }, @@ -154,7 +163,6 @@ const mockShellApi = [ 'updateLgFile', 'createLuFile', 'createLgFile', - 'getLgTemplates', 'createLgTemplate', 'updateLgTemplate', 'validateExpression', diff --git a/Composer/packages/extensions/visual-designer/src/editors/ObiEditor.tsx b/Composer/packages/extensions/visual-designer/src/editors/ObiEditor.tsx index 392d736235..f0248d351a 100644 --- a/Composer/packages/extensions/visual-designer/src/editors/ObiEditor.tsx +++ b/Composer/packages/extensions/visual-designer/src/editors/ObiEditor.tsx @@ -5,7 +5,7 @@ import { jsx } from '@emotion/core'; import { useContext, FC, useEffect, useState, useRef } from 'react'; import { MarqueeSelection, Selection } from 'office-ui-fabric-react/lib/MarqueeSelection'; -import { deleteAction, deleteActions, LgTemplateRef, LgMetaData } from '@bfc/shared'; +import { deleteAction, deleteActions, LgTemplateRef, LgMetaData, LgFile } from '@bfc/shared'; import { NodeEventTypes } from '../constants/NodeEventTypes'; import { KeyboardCommandTypes, KeyboardPrimaryTypes } from '../constants/KeyboardCommandTypes'; @@ -349,6 +349,7 @@ interface ObiEditorProps { path: string; // Obi raw json data: any; + lgFiles: LgFile[]; focusedSteps: string[]; onFocusSteps: (stepIds: string[], fragment?: string) => any; focusedEvent: string; diff --git a/Composer/packages/extensions/visual-designer/src/index.tsx b/Composer/packages/extensions/visual-designer/src/index.tsx index c54693165d..e3547529a9 100644 --- a/Composer/packages/extensions/visual-designer/src/index.tsx +++ b/Composer/packages/extensions/visual-designer/src/index.tsx @@ -31,6 +31,7 @@ const VisualDesigner: React.FC = ({ data: inputData, shellApi, hosted, + lgFiles, }): JSX.Element => { const dataCache = useRef({}); @@ -53,7 +54,6 @@ const VisualDesigner: React.FC = ({ onCopy, saveData, updateLgTemplate, - getLgTemplates, copyLgTemplate, removeLgTemplate, removeLgTemplates, @@ -67,9 +67,9 @@ const VisualDesigner: React.FC = ({ focusedId, focusedEvent, focusedTab, + lgFiles, clipboardActions: clipboardActions || [], updateLgTemplate, - getLgTemplates, copyLgTemplate, removeLgTemplate, removeLgTemplates, @@ -84,6 +84,7 @@ const VisualDesigner: React.FC = ({ key={dialogId} path={dialogId} data={data} + lgFiles={lgFiles} focusedSteps={focusedActions} onFocusSteps={onFocusSteps} focusedEvent={focusedEvent} diff --git a/Composer/packages/extensions/visual-designer/src/store/NodeRendererContext.ts b/Composer/packages/extensions/visual-designer/src/store/NodeRendererContext.ts index 36aa1abd0f..a2a8afa93f 100644 --- a/Composer/packages/extensions/visual-designer/src/store/NodeRendererContext.ts +++ b/Composer/packages/extensions/visual-designer/src/store/NodeRendererContext.ts @@ -2,19 +2,15 @@ // Licensed under the MIT License. import React from 'react'; -import { ShellApi } from '@bfc/shared'; +import { ShellApi, LgFile } from '@bfc/shared'; -type ShellApiFuncs = - | 'getLgTemplates' - | 'copyLgTemplate' - | 'removeLgTemplate' - | 'removeLgTemplates' - | 'updateLgTemplate'; +type ShellApiFuncs = 'copyLgTemplate' | 'removeLgTemplate' | 'removeLgTemplates' | 'updateLgTemplate'; interface NodeRendererContextValue extends Pick { focusedId?: string; focusedEvent?: string; focusedTab?: string; + lgFiles: LgFile[]; clipboardActions: any[]; } @@ -22,8 +18,8 @@ export const NodeRendererContext = React.createContext focusedId: '', focusedEvent: '', focusedTab: '', + lgFiles: [], clipboardActions: [], - getLgTemplates: () => Promise.resolve([]), copyLgTemplate: () => Promise.resolve(''), removeLgTemplate: () => Promise.resolve(), removeLgTemplates: () => Promise.resolve(), diff --git a/Composer/packages/extensions/visual-designer/src/utils/hooks.ts b/Composer/packages/extensions/visual-designer/src/utils/hooks.ts index 7cf2a288fd..9ba9f122f0 100644 --- a/Composer/packages/extensions/visual-designer/src/utils/hooks.ts +++ b/Composer/packages/extensions/visual-designer/src/utils/hooks.ts @@ -8,7 +8,7 @@ import { LgTemplateRef } from '@bfc/shared'; import { NodeRendererContext } from '../store/NodeRendererContext'; export const useLgTemplate = (str?: string, dialogId?: string) => { - const { getLgTemplates } = useContext(NodeRendererContext); + const { lgFiles } = useContext(NodeRendererContext); const [templateText, setTemplateText] = useState(''); let cancelled = false; @@ -18,12 +18,15 @@ export const useLgTemplate = (str?: string, dialogId?: string) => { if (templateId && dialogId) { // this is an LG template, go get it's content - if (!getLgTemplates || typeof getLgTemplates !== 'function') { + + const lgFile = Array.isArray(lgFiles) ? lgFiles.find(({ id }) => id === 'common') : null; + + if (!lgFile) { setTemplateText(str || ''); + return; } - const templates = getLgTemplates ? await getLgTemplates('common') : []; - const [template] = templates.filter(({ name }) => { + const template = lgFile.templates.find(({ name }) => { return name === templateId; }); diff --git a/Composer/packages/lib/shared/src/types/shell.ts b/Composer/packages/lib/shared/src/types/shell.ts index f6918f78b4..e0f1a426c3 100644 --- a/Composer/packages/lib/shared/src/types/shell.ts +++ b/Composer/packages/lib/shared/src/types/shell.ts @@ -125,7 +125,6 @@ export interface ShellApi { createLuFile: (id: string) => Promise; updateLuFile: (luFile: { id: string; content: string }) => Promise; updateLgFile: (id: string, content: string) => Promise; - getLgTemplates: (id: string) => Promise; copyLgTemplate: (id: string, fromTemplateName: string, toTemplateName?: string) => Promise; createLgTemplate: (id: string, template: Partial, position: number) => Promise; updateLgTemplate: (id: string, templateName: string, templateStr: string) => Promise;