Skip to content

Commit

Permalink
chore: add missing type declarations in 'useDialogEditApi' (microsoft…
Browse files Browse the repository at this point in the history
…#4801)

* fix async move

* add type declarations for useDialogEditApi

* fix ts type

Co-authored-by: Soroush <hatpick@gmail.com>
Co-authored-by: Chris Whitten <christopher.whitten@microsoft.com>
Co-authored-by: Andy Brown <asbrown002@gmail.com>
  • Loading branch information
4 people authored and EricDahlvang committed Nov 27, 2020
1 parent 015b135 commit 1991353
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import createCache from '@emotion/cache';
import React, { useRef, useMemo, useEffect } from 'react';
import isEqual from 'lodash/isEqual';
import formatMessage from 'format-message';
import { DialogFactory, SchemaDefinitions } from '@bfc/shared';
import { DialogFactory, MicrosoftIDialog, SchemaDefinitions } from '@bfc/shared';
import { useShellApi, JSONSchema7, FlowUISchema, FlowWidget } from '@bfc/extension-client';
import { MarqueeSelection } from 'office-ui-fabric-react/lib/MarqueeSelection';

Expand Down Expand Up @@ -88,7 +88,7 @@ const VisualDesigner: React.FC<VisualDesignerProps> = ({ onFocus, onBlur, schema
dataCache.current = inputData;
}

const data = dataCache.current;
const data = dataCache.current as MicrosoftIDialog;
const focusedId = Array.isArray(focusedActions) && focusedActions[0] ? focusedActions[0] : '';

// Compute schema diff
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

import { BaseSchema, ShellApi } from '@botframework-composer/types';
import { MicrosoftIDialog, MicrosoftIRecognizer, ShellApi } from '@botframework-composer/types';
import { DialogUtils } from '@bfc/shared';

export interface DialogApiContext {
copyAction: (actionId: string) => BaseSchema;
deleteAction: (actionId: BaseSchema) => BaseSchema;
copyActions: (actionIds: string[]) => BaseSchema[];
deleteActions: (actionIds: BaseSchema[]) => BaseSchema[];
copyAction: (actionId: string) => MicrosoftIDialog;
deleteAction: (actionId: MicrosoftIDialog) => MicrosoftIDialog;
copyActions: (actionIds: string[]) => MicrosoftIDialog[];
deleteActions: (actionIds: MicrosoftIDialog[]) => MicrosoftIDialog[];
}

const { disableNodes, enableNodes, appendNodesAfter, queryNodes, insertNodes, deleteNode, deleteNodes } = DialogUtils;
Expand All @@ -18,57 +18,90 @@ export function useDialogEditApi(shellApi: ShellApi) {

async function insertActions(
dialogId: string,
dialogData,
dialogData: MicrosoftIDialog,
targetArrayPath: string,
targetArrayPosition: number,
actionsToInsert: BaseSchema[]
) {
actionsToInsert: MicrosoftIDialog[]
): Promise<MicrosoftIDialog> {
const newNodes = await constructActions(dialogId, actionsToInsert);
return insertNodes(dialogData, targetArrayPath, targetArrayPosition, newNodes);
return insertNodes(dialogData, targetArrayPath, targetArrayPosition, newNodes) as MicrosoftIDialog;
}

async function insertAction(
dialogId: string,
dialogData,
dialogData: MicrosoftIDialog,
targetArrayPath: string,
targetArrayPosition: number,
actionToInsert: BaseSchema
) {
actionToInsert: MicrosoftIDialog
): Promise<MicrosoftIDialog> {
return insertActions(dialogId, dialogData, targetArrayPath, targetArrayPosition, [actionToInsert]);
}

async function insertActionsAfter(dialogId: string, dialogData, targetId: string, actionsToInsert: BaseSchema[]) {
async function insertActionsAfter(
dialogId: string,
dialogData: MicrosoftIDialog,
targetId: string,
actionsToInsert: MicrosoftIDialog[]
): Promise<MicrosoftIDialog> {
const newNodes = await constructActions(dialogId, actionsToInsert);
return appendNodesAfter(dialogData, targetId, newNodes);
return appendNodesAfter(dialogData, targetId, newNodes) as MicrosoftIDialog;
}

function deleteSelectedAction(dialogId, dialogData, actionId: string) {
function deleteSelectedAction(
dialogId: string,
dialogData: MicrosoftIDialog,
actionId: string
): Promise<MicrosoftIDialog> {
return deleteNode(dialogData, actionId, (node) => deleteAction(dialogId, node));
}

function deleteSelectedActions(dialogId: string, dialogData, actionIds: string[]) {
function deleteSelectedActions(
dialogId: string,
dialogData: MicrosoftIDialog,
actionIds: string[]
): Promise<MicrosoftIDialog> {
return deleteNodes(dialogData, actionIds, (nodes) => deleteActions(dialogId, nodes));
}

function disableSelectedActions(dialogId: string, dialogData, actionIds: string[]) {
function disableSelectedActions(
dialogId: string,
dialogData: MicrosoftIDialog,
actionIds: string[]
): MicrosoftIDialog {
return disableNodes(dialogData, actionIds);
}

function enableSelectedActions(dialogId: string, dialogData, actionIds: string[]) {
function enableSelectedActions(
dialogId: string,
dialogData: MicrosoftIDialog,
actionIds: string[]
): MicrosoftIDialog {
return enableNodes(dialogData, actionIds);
}
async function copySelectedActions(dialogId, dialogData, actionIds: string[]) {
async function copySelectedActions(
dialogId: string,
dialogData: MicrosoftIDialog,
actionIds: string[]
): Promise<MicrosoftIDialog[]> {
const actions = queryNodes(dialogData, actionIds);
return copyActions(dialogId, actions);
}

async function cutSelectedActions(dialogId, dialogData, actionIds: string[]) {
async function cutSelectedActions(
dialogId: string,
dialogData: MicrosoftIDialog,
actionIds: string[]
): Promise<{ dialog: MicrosoftIDialog; cutActions: MicrosoftIDialog[] }> {
const cutActions = await copySelectedActions(dialogId, dialogData, actionIds);
const newDialog = await deleteSelectedActions(dialogId, dialogData, actionIds);
return { dialog: newDialog, cutActions };
}

function updateRecognizer(dialogId, dialogData, recognizer) {
function updateRecognizer(
dialogId: string,
dialogData: MicrosoftIDialog,
recognizer: MicrosoftIRecognizer | string
): MicrosoftIDialog {
dialogData.recognizer = recognizer;
return dialogData;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

import { DialogUtils, SDKKinds, ShellApi, registerEditorAPI } from '@bfc/shared';
import { DialogUtils, SDKKinds, ShellApi, registerEditorAPI, MicrosoftIDialog } from '@bfc/shared';
import get from 'lodash/get';
import { useDialogApi } from '@bfc/extension-client';

Expand All @@ -21,7 +21,12 @@ import { calculateRangeSelection } from '../utils/calculateRangeSelection';
import { useDialogEditApi } from './useDialogEditApi';

export const useEditorEventApi = (
state: { path: string; data: any; nodeContext: NodeRendererContextValue; selectionContext: SelectionContextData },
state: {
path: string;
data: MicrosoftIDialog;
nodeContext: NodeRendererContextValue;
selectionContext: SelectionContextData;
},
shellApi: ShellApi
) => {
const { actionsContainLuIntent } = shellApi;
Expand Down Expand Up @@ -64,7 +69,7 @@ export const useEditorEventApi = (
const trackActionChange = (actionPath: string) => {
const affectedPaths = DialogUtils.getParentPaths(actionPath);
for (const path of affectedPaths) {
const json = get(data, path);
const json = get(data, path) as MicrosoftIDialog;
designerCache.uncacheBoundary(json);
}
};
Expand Down

0 comments on commit 1991353

Please sign in to comment.