Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion BotProject/CSharp/ComposerDialogs/Main/Main.dialog
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"actions": [
{
"$type": "Microsoft.SendActivity",
"activity": "[bfdactivity-003038]"
"activity": "@{bfdactivity-003038()}"
}
]
}
Expand Down
2 changes: 1 addition & 1 deletion Composer/packages/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@emotion/core": "^10.0.7",
"@reach/router": "^1.2.1",
"axios": "^0.18.0",
"botbuilder-lg": "https://botbuilder.myget.org/F/botbuilder-declarative/npm/botbuilder-lg/-/4.7.0-preview2.tgz",
"botbuilder-lg": "4.7.0-preview.93464",
"format-message": "^6.2.3",
"immer": "^2.1.4",
"jwt-decode": "^2.2.0",
Expand Down
18 changes: 2 additions & 16 deletions Composer/packages/client/src/ShellApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,29 +133,15 @@ export const ShellApi: React.FC = () => {
const file = lgFiles.find(file => file.id === id);
if (!file) throw new Error(`lg file ${id} not found`);

const templates = lgUtil.parse(file.content);
const lines = file.content.split('\n');

return templates.map(t => {
const [start, end] = getTemplateBodyRange(t);
const body = lines.slice(start - 1, end).join('\n');

return { Name: t.Name, Parameters: t.Parameters, Body: body };
});
}

function getTemplateBodyRange(template) {
const startLineNumber = template.ParseTree._start.line + 1;
const endLineNumber = template.ParseTree._stop.line;
return [startLineNumber, endLineNumber];
return lgUtil.parse(file.content);
}

/**
*
* @param {
* id: string,
* templateName: string,
* template: { Name: string, ?Parameters: string[], Body: string }
* template: { name: string, ?parameters: string[], body: string }
* }
* when templateName exit in current file, will do update
* when templateName do not exit in current file, will do create
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ const shellApi: ShellApi = {
return apiClient.apiCall('updateLgTemplate', {
id,
templateName,
template: { Name: templateName, Body: template },
template: { name: templateName, body: template },
});
},

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the MIT License.

/* eslint-disable react/display-name */
import React, { useState, useEffect, useMemo, useContext } from 'react';
import React, { useState, useEffect, useMemo, useContext, useCallback } from 'react';
import { LgEditor, LGOption } from '@bfc/code-editor';
import get from 'lodash/get';
import debounce from 'lodash/debounce';
Expand Down Expand Up @@ -33,7 +33,7 @@ export default function CodeEditor(props: CodeEditorProps) {
useEffect(() => {
// reset content with file.content's initial state
if (isEmpty(file)) return;
const value = template ? get(template, 'Body', '') : get(file, 'content', '');
const value = template ? get(template, 'body', '') : get(file, 'content', '');
setContent(value);
}, [fileId, template]);

Expand All @@ -46,15 +46,15 @@ export default function CodeEditor(props: CodeEditorProps) {
const updateLgTemplate = useMemo(
() =>
debounce((body: string) => {
const templateName = get(template, 'Name');
const templateName = get(template, 'name');
if (!templateName) return;
const payload = {
file,
templateName,
template: {
Name: templateName,
Parameters: get(template, 'Parameters'),
Body: body,
name: templateName,
parameters: get(template, 'parameters'),
body,
},
};
actions.updateLgTemplate(payload);
Expand All @@ -74,30 +74,33 @@ export default function CodeEditor(props: CodeEditorProps) {
[file]
);

const _onChange = value => {
setContent(value);
const _onChange = useCallback(
value => {
setContent(value);

let diagnostics: Diagnostic[] = [];
if (inlineMode) {
const content = get(file, 'content', '');
const templateName = get(template, 'Name', '');
try {
const newContent = lgUtil.updateTemplate(content, templateName, {
Name: templateName,
Parameters: get(template, 'Parameters'),
Body: value,
});
diagnostics = lgUtil.check(newContent);
updateLgTemplate(value);
} catch (error) {
setErrorMsg(error.message);
let diagnostics: Diagnostic[] = [];
if (inlineMode) {
const content = get(file, 'content', '');
const templateName = get(template, 'name', '');
try {
const newContent = lgUtil.updateTemplate(content, templateName, {
name: templateName,
parameters: get(template, 'parameters'),
body: value,
});
diagnostics = lgUtil.check(newContent);
updateLgTemplate(value);
} catch (error) {
setErrorMsg(error.message);
}
} else {
diagnostics = lgUtil.check(value);
updateLgFile(value);
}
} else {
diagnostics = lgUtil.check(value);
updateLgFile(value);
}
setDiagnostics(diagnostics);
};
setDiagnostics(diagnostics);
},
[file, template]
);

const lgOption: LGOption = {
inline: inlineMode,
Expand Down
22 changes: 10 additions & 12 deletions Composer/packages/client/src/pages/language-generation/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

/** @jsx jsx */
import { jsx } from '@emotion/core';
import React, { useContext, Fragment, useEffect, useState, useMemo, Suspense } from 'react';
import React, { useContext, Fragment, useEffect, useState, useMemo, Suspense, useCallback } from 'react';
import formatMessage from 'format-message';
import { Toggle } from 'office-ui-fabric-react/lib/Toggle';
import { Nav, INavLinkGroup, INavLink } from 'office-ui-fabric-react/lib/Nav';
Expand Down Expand Up @@ -107,30 +107,28 @@ const LGPage: React.FC<RouteComponentProps> = props => {
}
}, [lgFiles]);

function onSelect(id) {
const onSelect = useCallback(id => {
if (id === '_all') {
navigateTo('/language-generation');
} else {
navigateTo(`language-generation/${id}`);
}
}
}, []);

function onToggleEditMode() {
const onToggleEditMode = useCallback(() => {
setEditMode(!editMode);
setInlineTemplate(null);
}
}, [editMode]);

// #TODO: get line number from lg parser, then deep link to code editor this
// Line
function onTableViewClickEdit(template: LGTemplate) {
const onTableViewClickEdit = useCallback((template: LGTemplate) => {
setInlineTemplate({
Name: get(template, 'Name', ''),
Parameters: get(template, 'Parameters'),
Body: get(template, 'Body', ''),
name: get(template, 'name', ''),
parameters: get(template, 'parameters'),
body: get(template, 'body', ''),
});
navigateTo(`/language-generation`);
setEditMode(true);
}
}, []);

const toolbarItems = [
{
Expand Down
Loading