diff --git a/Composer/packages/client/src/pages/botProject/BotProjectSettings.tsx b/Composer/packages/client/src/pages/botProject/BotProjectSettings.tsx index a5ca43b742..6559c9fc9e 100644 --- a/Composer/packages/client/src/pages/botProject/BotProjectSettings.tsx +++ b/Composer/packages/client/src/pages/botProject/BotProjectSettings.tsx @@ -28,6 +28,7 @@ import { createBotSettingUrl, navigateTo } from '../../utils/navigation'; import { mergePropertiesManagedByRootBot } from '../../recoilModel/dispatchers/utils/project'; import { useFeatureFlag } from '../../utils/hooks'; +import { openDeleteBotModal } from './DeleteBotButton'; import BotProjectSettingsTableView from './BotProjectSettingsTableView'; // -------------------- Styles -------------------- // @@ -73,6 +74,7 @@ const BotProjectSettings: React.FC(false); const [showTeachingBubble, setShowTeachingBubble] = useState(true); const [toolbarItems, setToolbarItems] = useState([]); + const { deleteBot } = useRecoilValue(dispatcherState); const isRootBot = !!botProject?.isRootBot; const botName = botProject?.name; @@ -87,7 +89,6 @@ const BotProjectSettings: React.FC { TelemetryClient.track('GettingStartedLinkClicked', { method: 'button', url: link }); @@ -150,7 +151,12 @@ const BotProjectSettings: React.FC buttonClick(linkToDelete), + onClick: () => { + openDeleteBotModal(async () => { + await deleteBot(projectId); + navigateTo('home'); + }); + }, styles: defaultToolbarButtonStyles, }, align: 'left', diff --git a/Composer/packages/client/src/pages/botProject/DeleteBotButton.tsx b/Composer/packages/client/src/pages/botProject/DeleteBotButton.tsx index 0eea56c889..b72baf5eba 100644 --- a/Composer/packages/client/src/pages/botProject/DeleteBotButton.tsx +++ b/Composer/packages/client/src/pages/botProject/DeleteBotButton.tsx @@ -8,9 +8,7 @@ import { OpenConfirmModal } from '@bfc/ui-shared'; import { css, jsx } from '@emotion/core'; import formatMessage from 'format-message'; import { PrimaryButton } from 'office-ui-fabric-react/lib/Button'; -import { FontIcon } from 'office-ui-fabric-react/lib/Icon'; import { FontWeights } from 'office-ui-fabric-react/lib/Styling'; -import { Text } from 'office-ui-fabric-react/lib/Text'; import { dispatcherState } from '../../recoilModel'; import { navigateTo } from '../../utils/navigation'; @@ -41,78 +39,34 @@ type DeleteBotButtonProps = { scrollToSectionId: string; }; +export const openDeleteBotModal = async (onConfirm: () => Promise) => { + const warningText = formatMessage( + 'Are you sure you want to delete your bot? This action cannot be undone and your bot and all related files in the bot project folder will be permanently deleted. Your Azure resources will remain unchanged.' + ); + const title = formatMessage('Delete Bot'); + const settings = { + onRenderContent: () => { + return
{warningText}
; + }, + confirmText: formatMessage('Yes, delete'), + }; + const res = await OpenConfirmModal(title, null, settings); + if (res) { + await onConfirm(); + } +}; + export const DeleteBotButton: React.FC = (props) => { const { projectId, scrollToSectionId = '' } = props; const { deleteBot } = useRecoilValue(dispatcherState); - const openDeleteBotModal = async () => { - const boldWarningText = formatMessage( - 'Warning: the action you are about to take cannot be undone. Going further will delete this bot and any related files in the bot project folder.' - ); - const warningText = formatMessage('External resources will not be changed.'); - const title = formatMessage('Delete Bot'); - const checkboxLabel = formatMessage('I want to delete this bot'); - const settings = { - onRenderContent: () => { - return ( -
- -
- - {boldWarningText} - - - {warningText} - -
-
- ); - }, - disabled: true, - checkboxProps: { kind: 'doubleConfirm' as const, checkboxLabel }, - confirmBtnText: formatMessage('Delete'), - }; - const res = await OpenConfirmModal(title, null, settings); - if (res) { - await deleteBot(projectId); - navigateTo('home'); - } - }; const deleteRef = React.useRef(null); + const onConfirm = async () => { + await deleteBot(projectId); + navigateTo('home'); + }; + useEffect(() => { if (deleteRef.current && scrollToSectionId === '#deleteBot') { deleteRef.current.scrollIntoView({ behavior: 'smooth' }); @@ -122,7 +76,7 @@ export const DeleteBotButton: React.FC = (props) => { return (
{formatMessage('Delete this bot')}
- + openDeleteBotModal(onConfirm)}> {formatMessage('Delete')}