From 2835d71b8cb0420f33d91fd200d2634b5854cd65 Mon Sep 17 00:00:00 2001 From: aliandi Date: Wed, 24 Apr 2019 16:17:11 -0300 Subject: [PATCH 1/8] add functionality --- .../appSettingsEditor/appSettingsEditor.tsx | 29 ++++++++- .../src/ui/editor/emulator/emulator.scss | 1 + .../src/ui/editor/emulator/emulator.tsx | 60 ++++++++++--------- .../ui/editor/emulator/toolbar/toolbar.scss | 1 - .../shared/src/types/serverSettingsTypes.ts | 6 ++ 5 files changed, 67 insertions(+), 30 deletions(-) diff --git a/packages/app/client/src/ui/editor/appSettingsEditor/appSettingsEditor.tsx b/packages/app/client/src/ui/editor/appSettingsEditor/appSettingsEditor.tsx index 7e9c8ed60..2ecea33a8 100644 --- a/packages/app/client/src/ui/editor/appSettingsEditor/appSettingsEditor.tsx +++ b/packages/app/client/src/ui/editor/appSettingsEditor/appSettingsEditor.tsx @@ -90,6 +90,7 @@ export class AppSettingsEditor extends React.Component - Auth + User settings - Sign-in + + + + + + + Application Updates => { diff --git a/packages/app/client/src/ui/editor/emulator/emulator.scss b/packages/app/client/src/ui/editor/emulator/emulator.scss index c828b0a75..1c87877c9 100644 --- a/packages/app/client/src/ui/editor/emulator/emulator.scss +++ b/packages/app/client/src/ui/editor/emulator/emulator.scss @@ -82,6 +82,7 @@ } .restart-icon { + margin-left: 20px; &::before { -webkit-mask: url(../../media/ic_refresh.svg); } } .save-transcript-icon { diff --git a/packages/app/client/src/ui/editor/emulator/emulator.tsx b/packages/app/client/src/ui/editor/emulator/emulator.tsx index 5bdedd662..42b20544a 100644 --- a/packages/app/client/src/ui/editor/emulator/emulator.tsx +++ b/packages/app/client/src/ui/editor/emulator/emulator.tsx @@ -33,11 +33,11 @@ import { createDirectLine } from 'botframework-webchat'; import { uniqueId, uniqueIdv4 } from '@bfemulator/sdk-shared'; -import { SplitButton, Splitter } from '@bfemulator/ui-react'; +import { Splitter } from '@bfemulator/ui-react'; import base64Url from 'base64url'; import { IEndpointService } from 'botframework-config/lib/schema'; import * as React from 'react'; -import { newNotification, Notification, SharedConstants } from '@bfemulator/app-shared'; +import { newNotification, Notification, SharedConstants, FrameworkSettings } from '@bfemulator/app-shared'; import { DebugMode } from '@bfemulator/app-shared'; import { Document } from '../../../data/reducer/editor'; @@ -117,17 +117,7 @@ export class Emulator extends React.Component { } componentWillReceiveProps(nextProps: EmulatorProps) { - const { props, keyboardEventListener, startNewConversation } = this; - const { document = {} } = props; - const { document: nextDocument = {} } = nextProps; - - const documentOrUserIdChanged = - (!nextDocument.directLine && document.documentId !== nextDocument.documentId) || - document.userId !== nextDocument.userId; - - if (documentOrUserIdChanged) { - startNewConversation(nextProps).catch(); - } + const { props, keyboardEventListener } = this; const switchedDocuments = props.activeDocumentId !== nextProps.activeDocumentId; const switchedToThisDocument = nextProps.activeDocumentId === props.documentId; @@ -143,19 +133,29 @@ export class Emulator extends React.Component { startNewConversation = async ( props: EmulatorProps = this.props, - requireNewConvoId: boolean = false, - requireNewUserId: boolean = false + requireNewConvoId?: boolean, + requireNewUserId?: boolean ): Promise => { + if (requireNewUserId == null) { + requireNewUserId = false; + } + if (requireNewConvoId == null) { + requireNewConvoId = false; + } + // Look for an existing conversation ID and use that, // otherwise, create a new one const conversationId = requireNewConvoId ? `${uniqueId()}|${props.mode}` : props.document.conversationId || `${uniqueId()}|${props.mode}`; - const userId = requireNewUserId ? uniqueIdv4() : props.document.userId; - if (requireNewUserId) { - await CommandServiceImpl.remoteCall(SharedConstants.Commands.Emulator.SetCurrentUser, userId); - } + const framework: FrameworkSettings = await CommandServiceImpl.remoteCall( + SharedConstants.Commands.Settings.LoadAppSettings + ); + const stableId = framework.userGUID || props.document.userId; + const userId = requireNewUserId ? uniqueIdv4() : stableId; + + await CommandServiceImpl.remoteCall(SharedConstants.Commands.Emulator.SetCurrentUser, userId); const options = { conversationId, @@ -267,13 +267,18 @@ export class Emulator extends React.Component { {this.props.mode === 'livechat' && (
- + + - )} - {debugMode === DebugMode.Normal && ( - + )} +