From 9f3fdb8597365fb728e869f5f289eaefa6e4a2a2 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Mon, 26 Apr 2021 15:49:08 -0500 Subject: [PATCH 1/4] Add T&C accept for teams --- .../pages/botProject/adapters/ABSChannels.tsx | 34 ++++++++++++++++++- .../src/components/ConfirmDialog.tsx | 9 +++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx index 6a8c47d1ca..027d2ae627 100644 --- a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx +++ b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx @@ -18,6 +18,7 @@ import { Stack } from 'office-ui-fabric-react/lib/Stack'; import { OpenConfirmModal } from '@bfc/ui-shared'; import { Callout } from 'office-ui-fabric-react/lib/Callout'; import { Text } from 'office-ui-fabric-react/lib/Text'; +import { format } from 'prettier'; import TelemetryClient from '../../../telemetry/TelemetryClient'; import { LoadingSpinner } from '../../../components/LoadingSpinner'; @@ -200,6 +201,7 @@ export const ABSChannels: React.FC = (props) => { channelName: channelId, location: 'global', properties: { + acceptedTerms: opts?.acceptedTerms, isEnabled: true, }, }, @@ -247,7 +249,37 @@ export const ABSChannels: React.FC = (props) => { } await httpClient.put(url, data, { headers: { Authorization: `Bearer ${token}` } }); if (channelId === CHANNELS.TEAMS) { - setShowTeamsCallOut(true); + const createResults = await httpClient.get(url, { headers: { Authorization: `Bearer ${token}` } }); + if (!createResults.data?.properties?.properties?.acceptedTerms === true) { + if ( + await OpenConfirmModal(formatMessage('Microsoft Teams terms and conditions'), null, { + disabled: true, + confirmText: formatMessage('Agree'), + checkboxProps: { + kind: 'doubleConfirm', + checkboxLabel: ( +
+ {formatMessage('I agree to the ')} + + {formatMessage('Microsoft Channel Publication Terms')} + + {formatMessage(' and the ')} + + {formatMessage('Microsoft Privacy Statement')} + + {formatMessage(' for my deployment to the Microsoft Teams channel.')} +
+ ), + }, + }) + ) { + return await createChannelService(channelId, { ...opts, acceptedTerms: true }); + } else { + return await deleteChannelService(channelId); + } + } else { + setShowTeamsCallOut(true); + } } // success!! setChannelStatus({ diff --git a/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx b/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx index f65a63dbbd..8da2b3c9ab 100644 --- a/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx +++ b/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx @@ -63,7 +63,7 @@ const confirmationContainer = css` /** * When we want the user to check the box to confirm their action, in addition to confirming the dialog. */ -type DoubleConfirmCheckboxProps = { kind: 'doubleConfirm'; checkboxLabel?: string }; +type DoubleConfirmCheckboxProps = { kind: 'doubleConfirm'; checkboxLabel?: React.ReactElement }; /** * When we want to ask user for extra checks in addition to the original action confirmation. */ @@ -118,7 +118,10 @@ const ConfirmDialog: React.FC = (props) => { } function defaultContentRender() { - return
{subTitle}
; + console.log('RENDERING SUBTITLE', subTitle); + if (subTitle) { + return
{subTitle}
; + } } const renderCheckbox = React.useCallback(() => { @@ -131,7 +134,7 @@ const ConfirmDialog: React.FC = (props) => { {checkboxProps.kind === 'doubleConfirm' ? ( ) : ( From 5a8cc64186d9c108a8f20eea6d27da3ee30f75ac Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Mon, 26 Apr 2021 15:56:20 -0500 Subject: [PATCH 2/4] remove mystery dep --- .../client/src/pages/botProject/adapters/ABSChannels.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx index 027d2ae627..773b79f7b2 100644 --- a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx +++ b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx @@ -18,7 +18,6 @@ import { Stack } from 'office-ui-fabric-react/lib/Stack'; import { OpenConfirmModal } from '@bfc/ui-shared'; import { Callout } from 'office-ui-fabric-react/lib/Callout'; import { Text } from 'office-ui-fabric-react/lib/Text'; -import { format } from 'prettier'; import TelemetryClient from '../../../telemetry/TelemetryClient'; import { LoadingSpinner } from '../../../components/LoadingSpinner'; From 4b047668881efff572ec05a603102291fbcbb65e Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Mon, 26 Apr 2021 15:57:57 -0500 Subject: [PATCH 3/4] remove console --- Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx b/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx index 8da2b3c9ab..0a5d12787f 100644 --- a/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx +++ b/Composer/packages/lib/ui-shared/src/components/ConfirmDialog.tsx @@ -118,7 +118,6 @@ const ConfirmDialog: React.FC = (props) => { } function defaultContentRender() { - console.log('RENDERING SUBTITLE', subTitle); if (subTitle) { return
{subTitle}
; } From 0f04b5c94fe6bdc8cbe71c179e84e695c3991b27 Mon Sep 17 00:00:00 2001 From: Ben Brown Date: Thu, 27 May 2021 11:18:04 -0500 Subject: [PATCH 4/4] Update formatMessage to use formatMessage.rich for complex content --- .../pages/botProject/adapters/ABSChannels.tsx | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx index 4443edf5a0..237411d975 100644 --- a/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx +++ b/Composer/packages/client/src/pages/botProject/adapters/ABSChannels.tsx @@ -297,15 +297,25 @@ export const ABSChannels: React.FC = (props) => { kind: 'doubleConfirm', checkboxLabel: (
- {formatMessage('I agree to the ')} - - {formatMessage('Microsoft Channel Publication Terms')} - - {formatMessage(' and the ')} - - {formatMessage('Microsoft Privacy Statement')} - - {formatMessage(' for my deployment to the Microsoft Teams channel.')} + {formatMessage.rich( + 'I agree to the Microsoft Channel Publication Terms and the Microsoft Privacy Statement for my deployment to the Microsoft Teams channel.', + { + a: ({ children }) => ( + + {children} + + ), + a2: ({ children }) => ( + + {children} + + ), + } + )}
), },