@microsoft/omnichannel-chat-widget 0.1.0-main.fdf1fdf → 1.0.1-main.068a14e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -34
- package/lib/cjs/assets/Icons.js +4 -2
- package/lib/cjs/common/Constants.js +31 -171
- package/lib/cjs/common/KeyCodes.js +3 -4
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
- package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +111 -0
- package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +63 -27
- package/lib/cjs/common/telemetry/TelemetryHelper.js +21 -59
- package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
- package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
- package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
- package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
- package/lib/cjs/common/utils.js +40 -106
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
- package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +18 -49
- package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -37
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
- package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
- package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
- package/lib/cjs/components/headerstateful/HeaderStateful.js +19 -31
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
- package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +5 -10
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -6
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -12
- package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +14 -20
- package/lib/cjs/components/livechatwidget/common/Deferred.js +6 -11
- package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
- package/lib/cjs/components/livechatwidget/common/authHelper.js +13 -15
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +4 -13
- package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
- package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
- package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +127 -49
- package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
- package/lib/cjs/components/livechatwidget/common/endChat.js +65 -70
- package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
- package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
- package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +25 -101
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +82 -151
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +256 -12
- package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
- package/lib/cjs/components/livechatwidget/common/startChat.js +185 -128
- package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
- package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
- package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +284 -253
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +37 -25
- package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
- package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
- package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
- package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -24
- package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
- package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
- package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
- package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -38
- package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -24
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -37
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
- package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -18
- package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
- package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -33
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -45
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
- package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
- package/lib/cjs/contexts/ChatContextStore.js +0 -2
- package/lib/cjs/contexts/ChatSDKStore.js +0 -2
- package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
- package/lib/cjs/contexts/common/ConversationState.js +0 -1
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +34 -29
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +18 -13
- package/lib/cjs/contexts/createReducer.js +190 -110
- package/lib/cjs/controller/componentController.js +2 -31
- package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
- package/lib/cjs/hooks/useChatContextStore.js +0 -6
- package/lib/cjs/hooks/useChatSDKStore.js +0 -6
- package/lib/cjs/hooks/useDebounce.js +28 -0
- package/lib/cjs/hooks/useWindowDimensions.js +30 -0
- package/lib/cjs/index.js +0 -5
- package/lib/cjs/plugins/newMessageEventHandler.js +29 -36
- package/lib/esm/assets/Icons.js +2 -1
- package/lib/esm/common/Constants.js +27 -158
- package/lib/esm/common/KeyCodes.js +3 -3
- package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
- package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
- package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +67 -24
- package/lib/esm/common/telemetry/TelemetryHelper.js +21 -47
- package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
- package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
- package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
- package/lib/esm/common/utils.js +38 -53
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
- package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +20 -30
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
- package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
- package/lib/esm/components/headerstateful/HeaderStateful.js +19 -16
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
- package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +5 -7
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -4
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -9
- package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +14 -16
- package/lib/esm/components/livechatwidget/common/Deferred.js +6 -9
- package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
- package/lib/esm/components/livechatwidget/common/authHelper.js +13 -10
- package/lib/esm/components/livechatwidget/common/createAdapter.js +6 -6
- package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
- package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
- package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +128 -35
- package/lib/esm/components/livechatwidget/common/endChat.js +69 -57
- package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
- package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
- package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +28 -67
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +80 -129
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +259 -6
- package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
- package/lib/esm/components/livechatwidget/common/startChat.js +184 -99
- package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
- package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +287 -188
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +38 -13
- package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
- package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
- package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
- package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -12
- package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
- package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
- package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
- package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -22
- package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -6
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +19 -11
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -14
- package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
- package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -22
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -40
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
- package/lib/esm/contexts/ChatAdapterStore.js +2 -1
- package/lib/esm/contexts/ChatContextStore.js +2 -1
- package/lib/esm/contexts/ChatSDKStore.js +2 -1
- package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
- package/lib/esm/contexts/common/ConversationState.js +0 -1
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +34 -29
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +18 -9
- package/lib/esm/contexts/createReducer.js +190 -107
- package/lib/esm/controller/componentController.js +3 -2
- package/lib/esm/hooks/useChatAdapterStore.js +0 -4
- package/lib/esm/hooks/useChatContextStore.js +0 -4
- package/lib/esm/hooks/useChatSDKStore.js +0 -4
- package/lib/esm/hooks/useDebounce.js +22 -0
- package/lib/esm/hooks/useWindowDimensions.js +23 -0
- package/lib/esm/plugins/newMessageEventHandler.js +29 -26
- package/lib/types/assets/Icons.d.ts +1 -0
- package/lib/types/common/Constants.d.ts +21 -0
- package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
- package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
- package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +45 -9
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
- package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
- package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
- package/lib/types/common/utils.d.ts +1 -0
- package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -7
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
- package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
- package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
- package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
- package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +3 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +6 -2
- package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
- package/lib/types/components/loadingpanestateful/LoadingPaneStateful.d.ts +1 -2
- package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
- package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.d.ts +4 -0
- package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.d.ts +4 -0
- package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
- package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
- package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
- package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +1 -1
- package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +9 -3
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +34 -28
- package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
- package/lib/types/hooks/useDebounce.d.ts +3 -0
- package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
- package/package.json +3 -3
package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -4,37 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.downloadTranscript = void 0;
|
|
7
|
-
|
|
8
7
|
var _Constants = require("../../../common/Constants");
|
|
9
|
-
|
|
10
8
|
var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
|
|
11
|
-
|
|
12
9
|
var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
|
|
13
|
-
|
|
14
10
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
15
|
-
|
|
16
11
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
17
|
-
|
|
18
12
|
const processDisplayName = displayName => {
|
|
19
13
|
// if displayname matches "teamsvisitor:<some alphanumeric string>", we replace it with "Customer"
|
|
20
14
|
const displayNameRegex = ".+:.+";
|
|
21
15
|
const matchedTeamsDisplayName = displayName.match(displayNameRegex);
|
|
22
|
-
|
|
23
16
|
if (displayName.indexOf("teamsvisitor") >= 0 && matchedTeamsDisplayName && matchedTeamsDisplayName.length > 0) {
|
|
24
17
|
displayName = "Customer";
|
|
25
18
|
}
|
|
26
|
-
|
|
27
19
|
return displayName;
|
|
28
20
|
};
|
|
29
|
-
|
|
30
21
|
const constructIconName = displayName => {
|
|
31
22
|
if (!displayName) {
|
|
32
23
|
return "";
|
|
33
24
|
}
|
|
34
|
-
|
|
35
25
|
let iconName = "C";
|
|
36
26
|
const displayNameSplit = displayName.split(" ");
|
|
37
|
-
|
|
38
27
|
if (displayNameSplit.length > 1) {
|
|
39
28
|
// get the first letter of name and surname
|
|
40
29
|
iconName = displayNameSplit[0][0] + displayNameSplit[1][0];
|
|
@@ -42,55 +31,42 @@ const constructIconName = displayName => {
|
|
|
42
31
|
// get the first letter of name
|
|
43
32
|
iconName = displayNameSplit[0][0];
|
|
44
33
|
}
|
|
45
|
-
|
|
46
34
|
return iconName;
|
|
47
35
|
};
|
|
48
|
-
|
|
49
36
|
const processCreatedDateTime = (createdDateTime, chatCount) => {
|
|
50
|
-
const formattedDate = new Date(createdDateTime);
|
|
51
|
-
|
|
52
|
-
const formattedTimeString = formattedDate.toLocaleTimeString("en-us"
|
|
53
|
-
/* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */
|
|
54
|
-
, {
|
|
37
|
+
const formattedDate = new Date(createdDateTime);
|
|
38
|
+
// TODO: Localization:
|
|
39
|
+
const formattedTimeString = formattedDate.toLocaleTimeString("en-us" /* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */, {
|
|
55
40
|
hour: "2-digit",
|
|
56
41
|
minute: "2-digit"
|
|
57
42
|
});
|
|
58
43
|
const formattedSplitTimeString = formattedTimeString.split(" ");
|
|
59
44
|
let finalizedTimeString = "";
|
|
60
|
-
|
|
61
45
|
if (formattedSplitTimeString && formattedSplitTimeString.length > 1) {
|
|
62
46
|
finalizedTimeString = formattedSplitTimeString[0] + " " + formattedSplitTimeString[1];
|
|
63
47
|
}
|
|
64
|
-
|
|
65
48
|
if (chatCount == 0) {
|
|
66
49
|
return formattedDate.toLocaleDateString("en-us") + " " + finalizedTimeString;
|
|
67
50
|
}
|
|
68
|
-
|
|
69
51
|
return finalizedTimeString;
|
|
70
52
|
};
|
|
71
|
-
|
|
72
53
|
const processContent = (transcriptContent, isAgentChat, renderMarkDown) => {
|
|
73
54
|
if (transcriptContent.toString().toLowerCase().indexOf(_Constants.TranscriptConstants.TranscriptMessageEmojiMessageType) >= 0) {
|
|
74
55
|
// eslint-disable-next-line no-useless-escape
|
|
75
56
|
const emojiRegex = "<img src=\"http.*:\/\/.+\/objects\/.+\/views.+\">";
|
|
76
57
|
const matchedEmojiImgTag = transcriptContent.match(emojiRegex);
|
|
77
|
-
|
|
78
58
|
if (matchedEmojiImgTag && matchedEmojiImgTag.length > 0 && transcriptContent.toString().toLowerCase().indexOf(matchedEmojiImgTag[0]) >= 0) {
|
|
79
59
|
transcriptContent = transcriptContent.replace(matchedEmojiImgTag[0], "");
|
|
80
60
|
}
|
|
81
61
|
}
|
|
82
|
-
|
|
83
62
|
if (!isAgentChat && transcriptContent.toString().toLowerCase().indexOf("a href") >= 0 && transcriptContent.toString().toLowerCase().indexOf("target") >= 0) {
|
|
84
63
|
transcriptContent = transcriptContent.slice(0, transcriptContent.toString().indexOf("target")) + " style='color:white' " + transcriptContent.slice(transcriptContent.toString().indexOf("target"));
|
|
85
64
|
}
|
|
86
|
-
|
|
87
65
|
if (renderMarkDown) {
|
|
88
66
|
transcriptContent = renderMarkDown(transcriptContent);
|
|
89
67
|
}
|
|
90
|
-
|
|
91
68
|
return transcriptContent;
|
|
92
69
|
};
|
|
93
|
-
|
|
94
70
|
const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMessage) => {
|
|
95
71
|
const chats = JSON.parse(chatTranscripts).reverse();
|
|
96
72
|
const docTypeTag = "<!DOCTYPE html>";
|
|
@@ -105,8 +81,9 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
105
81
|
let tabIndex = 1;
|
|
106
82
|
const mainTranscriptSection = "<div class='allTranscripts' style='max-width:60%;min-width:30%;margin-left:20%;background-color:#FFFFFF;'>";
|
|
107
83
|
let previousDisplayName = "";
|
|
108
|
-
let chatCount = 0;
|
|
84
|
+
let chatCount = 0;
|
|
109
85
|
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
87
|
chats.forEach(value => {
|
|
111
88
|
let dialogNameMarginTop = "6px";
|
|
112
89
|
let dialogboxMarginleft = "40px";
|
|
@@ -118,14 +95,10 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
118
95
|
let fontColor = _Constants.TranscriptConstants.CustomerFontColor;
|
|
119
96
|
const isSystemMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.systemMessageTag) !== -1;
|
|
120
97
|
const isControlMessage = value.isControlMessage && value.isControlMessage === true;
|
|
121
|
-
|
|
122
98
|
const isAdaptiveCard = value.contentType && value.contentType.toLowerCase() === _Constants.TranscriptConstants.AdaptiveCardType;
|
|
123
|
-
|
|
124
99
|
const isInternalMessage = value.deliveryMode && value.deliveryMode.toLowerCase() === _Constants.TranscriptConstants.InternalMode;
|
|
125
|
-
|
|
126
100
|
const isHiddenMessage = value.tags && value.tags.toLowerCase().indexOf(_Constants.Constants.hiddenTag.toLowerCase()) !== -1;
|
|
127
101
|
const shouldIgnoreMessage = isSystemMessage || isControlMessage || isAdaptiveCard || isInternalMessage || isHiddenMessage;
|
|
128
|
-
|
|
129
102
|
if (shouldIgnoreMessage) {
|
|
130
103
|
return;
|
|
131
104
|
} else if (value.from) {
|
|
@@ -141,19 +114,15 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
141
114
|
displayName = value.from.user.displayName;
|
|
142
115
|
dialogColor = _Constants.TranscriptConstants.CustomerDialogColor;
|
|
143
116
|
}
|
|
144
|
-
|
|
145
117
|
displayName = processDisplayName(displayName);
|
|
146
118
|
iconName = constructIconName(displayName);
|
|
147
|
-
|
|
148
119
|
if (value.attachments && value.attachments.length > 0 && value.attachments[0].name) {
|
|
149
120
|
fileAttachmentName = value.attachments[0].name;
|
|
150
121
|
value.content = attachmentMessage ? attachmentMessage + " " + fileAttachmentName : "The following attachment was uploaded during the conversation: " + fileAttachmentName;
|
|
151
122
|
}
|
|
152
123
|
}
|
|
153
|
-
|
|
154
124
|
let displayNamePlaceholder = processCreatedDateTime(value.createdDateTime, chatCount);
|
|
155
125
|
let iconPara = "";
|
|
156
|
-
|
|
157
126
|
if (displayName !== previousDisplayName) {
|
|
158
127
|
dialogboxMarginleft = "0px";
|
|
159
128
|
displayNamePlaceholder = "<b>" + displayName + " </b> " + processCreatedDateTime(value.createdDateTime, chatCount);
|
|
@@ -164,17 +133,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
164
133
|
</div>";
|
|
165
134
|
tabIndex++;
|
|
166
135
|
}
|
|
167
|
-
|
|
168
136
|
if (displayName !== previousDisplayName) {
|
|
169
137
|
if (previousDisplayName === "") {
|
|
170
138
|
dialogNameMarginTop = "0px";
|
|
171
139
|
}
|
|
172
|
-
|
|
173
140
|
if (previousDisplayName !== "") {
|
|
174
141
|
dialogNameMarginTop = "20px";
|
|
175
142
|
}
|
|
176
143
|
}
|
|
177
|
-
|
|
178
144
|
const displayNameDiv = "<div style='margin-right:-2px;margin-top:" + dialogNameMarginTop + ";margin-bottom:-2px;margin-left:42px;top:-2px;position:relative;'>\
|
|
179
145
|
<font tabindex ='" + tabIndex + "' size = '1px' color='#000000' style='font-family:Segoe UI,SegoeUI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500;'>\
|
|
180
146
|
" + displayNamePlaceholder + "\
|
|
@@ -188,16 +154,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
188
154
|
});
|
|
189
155
|
const str = docTypeTag + docStartTag + docMetaTag + bodyStartTag + mainTranscriptSection + beautifiedChats + divEndTag + bodyEndTag + docEndTag;
|
|
190
156
|
return str;
|
|
191
|
-
};
|
|
192
|
-
|
|
157
|
+
};
|
|
193
158
|
|
|
159
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
194
160
|
const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage) => {
|
|
195
161
|
let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
|
|
196
|
-
|
|
197
162
|
if (typeof data === _Constants.Constants.String) {
|
|
198
163
|
data = JSON.parse(data);
|
|
199
164
|
}
|
|
200
|
-
|
|
201
165
|
if (data[_Constants.Constants.ChatMessagesJson] !== null && data[_Constants.Constants.ChatMessagesJson] !== undefined) {
|
|
202
166
|
const chatTranscripts = window.btoa(encodeURIComponent(beautifyChatTranscripts(data[_Constants.Constants.ChatMessagesJson], renderMarkDown, attachmentMessage)));
|
|
203
167
|
const byteCharacters = decodeURIComponent(window.atob(chatTranscripts));
|
|
@@ -217,9 +181,7 @@ const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError,
|
|
|
217
181
|
exception: "Download transcript failed: response null or undefined."
|
|
218
182
|
}
|
|
219
183
|
});
|
|
220
|
-
|
|
221
184
|
_NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.DownloadTranscriptError, bannerMessageOnError ?? _Constants.Constants.defaultDownloadTranscriptError);
|
|
222
185
|
}
|
|
223
186
|
};
|
|
224
|
-
|
|
225
187
|
exports.downloadTranscript = downloadTranscript;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
|
|
4
|
-
|
|
5
4
|
var _react = require("@testing-library/react");
|
|
6
|
-
|
|
7
5
|
jest.mock("@microsoft/omnichannel-chat-sdk");
|
|
8
6
|
describe("DownloadTranscriptStateful unit test", () => {
|
|
9
7
|
afterEach(() => {
|
|
@@ -18,10 +16,10 @@ describe("DownloadTranscriptStateful unit test", () => {
|
|
|
18
16
|
};
|
|
19
17
|
const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
|
|
20
18
|
jest.spyOn(chatSDK, "getLiveChatTranscript").mockResolvedValue(Promise.resolve());
|
|
21
|
-
|
|
22
19
|
try {
|
|
23
20
|
await chatSDK.getLiveChatTranscript();
|
|
24
|
-
expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1);
|
|
21
|
+
expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1);
|
|
22
|
+
// eslint-disable-next-line no-empty
|
|
25
23
|
} catch (ex) {}
|
|
26
24
|
});
|
|
27
25
|
it("Method getLiveChatTranscript throws exception", async () => {
|
|
@@ -33,9 +31,9 @@ describe("DownloadTranscriptStateful unit test", () => {
|
|
|
33
31
|
};
|
|
34
32
|
const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
|
|
35
33
|
jest.spyOn(chatSDK, "getLiveChatTranscript").mockRejectedValue(new Error(errorMessage));
|
|
36
|
-
|
|
37
34
|
try {
|
|
38
|
-
await chatSDK.getLiveChatTranscript();
|
|
35
|
+
await chatSDK.getLiveChatTranscript();
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
37
|
} catch (ex) {
|
|
40
38
|
expect(ex.message).toEqual(errorMessage);
|
|
41
39
|
}
|
|
@@ -48,9 +46,9 @@ describe("DownloadTranscriptStateful unit test", () => {
|
|
|
48
46
|
widgetId: ""
|
|
49
47
|
};
|
|
50
48
|
const chatSDK = new _omnichannelChatSdk.OmnichannelChatSDK(omnichannelConfig);
|
|
51
|
-
|
|
52
49
|
try {
|
|
53
|
-
await chatSDK.getLiveChatTranscript();
|
|
50
|
+
await chatSDK.getLiveChatTranscript();
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
52
|
} catch (ex) {
|
|
55
53
|
expect(ex.message).toEqual(errorMessage);
|
|
56
54
|
}
|
|
@@ -4,46 +4,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.HeaderStateful = void 0;
|
|
7
|
-
|
|
8
7
|
var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
|
|
12
9
|
var _ConversationState = require("../../contexts/common/ConversationState");
|
|
13
|
-
|
|
14
10
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
15
|
-
|
|
16
11
|
var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
|
|
17
|
-
|
|
18
12
|
var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
|
|
19
|
-
|
|
20
13
|
var _defaultOutOfOfficeHeaderStyleProps = require("./common/styleProps/defaultOutOfOfficeHeaderStyleProps");
|
|
21
|
-
|
|
22
14
|
var _useChatAdapterStore = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
|
|
23
|
-
|
|
24
15
|
var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
25
|
-
|
|
16
|
+
var _ConversationEndEntity = require("../../contexts/common/ConversationEndEntity");
|
|
26
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
-
|
|
30
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
-
|
|
32
20
|
const HeaderStateful = props => {
|
|
33
21
|
var _state$domainStates$l, _state$domainStates$l2, _headerProps$controlP, _headerProps$controlP2, _headerProps$controlP3, _outOfOfficeHeaderPro;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
const [state, dispatch] = (0, _useChatContextStore.default)();
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
24
|
const [adapter] = (0, _useChatAdapterStore.default)();
|
|
38
25
|
const {
|
|
39
26
|
headerProps,
|
|
40
27
|
outOfOfficeHeaderProps,
|
|
41
28
|
endChat
|
|
42
|
-
} = props;
|
|
43
|
-
|
|
29
|
+
} = props;
|
|
30
|
+
//Setting OutOfOperatingHours Flag
|
|
44
31
|
const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.useState)(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
|
|
45
32
|
const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
46
33
|
const conversationState = (0, _react.useRef)(state.appStates.conversationState);
|
|
34
|
+
const conversationEndedBy = (0, _react.useRef)(state.appStates.conversationEndedBy);
|
|
47
35
|
const controlProps = {
|
|
48
36
|
id: "oc-lcw-header",
|
|
49
37
|
dir: state.domainStates.globalDir,
|
|
@@ -52,19 +40,18 @@ const HeaderStateful = props => {
|
|
|
52
40
|
Event: _TelemetryConstants.TelemetryEvent.HeaderMinimizeButtonClicked,
|
|
53
41
|
Description: "Header Minimize button clicked."
|
|
54
42
|
});
|
|
55
|
-
|
|
56
43
|
dispatch({
|
|
57
44
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
|
|
58
45
|
payload: true
|
|
59
46
|
});
|
|
60
47
|
},
|
|
61
48
|
onCloseClick: async () => {
|
|
49
|
+
var _props$headerProps, _props$headerProps$co, _props$headerProps$co2;
|
|
62
50
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
63
51
|
Event: _TelemetryConstants.TelemetryEvent.HeaderCloseButtonClicked,
|
|
64
52
|
Description: "Header Close button clicked."
|
|
65
53
|
});
|
|
66
|
-
|
|
67
|
-
if (conversationState.current === _ConversationState.ConversationState.Active) {
|
|
54
|
+
if (conversationState.current === _ConversationState.ConversationState.Active || conversationEndedBy.current === _ConversationEndEntity.ConversationEndEntity.Agent) {
|
|
68
55
|
dispatch({
|
|
69
56
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
70
57
|
payload: true
|
|
@@ -75,16 +62,18 @@ const HeaderStateful = props => {
|
|
|
75
62
|
const postMessageToOtherTabs = true;
|
|
76
63
|
await endChat(adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTabs);
|
|
77
64
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
65
|
+
const closeButtonId = ((_props$headerProps = props.headerProps) === null || _props$headerProps === void 0 ? void 0 : (_props$headerProps$co = _props$headerProps.controlProps) === null || _props$headerProps$co === void 0 ? void 0 : (_props$headerProps$co2 = _props$headerProps$co.closeButtonProps) === null || _props$headerProps$co2 === void 0 ? void 0 : _props$headerProps$co2.id) ?? `${controlProps.id}-close-button`;
|
|
66
|
+
if (closeButtonId) {
|
|
67
|
+
dispatch({
|
|
68
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
|
|
69
|
+
payload: closeButtonId
|
|
70
|
+
});
|
|
71
|
+
}
|
|
83
72
|
},
|
|
84
73
|
...(headerProps === null || headerProps === void 0 ? void 0 : headerProps.controlProps),
|
|
85
|
-
hideTitle: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP = headerProps.controlProps) === null || _headerProps$controlP === void 0 ? void 0 : _headerProps$controlP.hideTitle),
|
|
86
|
-
hideIcon: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP2 = headerProps.controlProps) === null || _headerProps$controlP2 === void 0 ? void 0 : _headerProps$controlP2.hideIcon),
|
|
87
|
-
hideCloseButton: state.appStates.conversationState === _ConversationState.ConversationState.Loading || state.appStates.conversationState === _ConversationState.ConversationState.Prechat || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP3 = headerProps.controlProps) === null || _headerProps$controlP3 === void 0 ? void 0 : _headerProps$controlP3.hideCloseButton)
|
|
74
|
+
hideTitle: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP = headerProps.controlProps) === null || _headerProps$controlP === void 0 ? void 0 : _headerProps$controlP.hideTitle),
|
|
75
|
+
hideIcon: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP2 = headerProps.controlProps) === null || _headerProps$controlP2 === void 0 ? void 0 : _headerProps$controlP2.hideIcon),
|
|
76
|
+
hideCloseButton: state.appStates.conversationState === _ConversationState.ConversationState.Loading && !state.appStates.isStartChatFailing || state.appStates.conversationState === _ConversationState.ConversationState.PostchatLoading || state.appStates.conversationState === _ConversationState.ConversationState.Prechat || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat || (headerProps === null || headerProps === void 0 ? void 0 : (_headerProps$controlP3 = headerProps.controlProps) === null || _headerProps$controlP3 === void 0 ? void 0 : _headerProps$controlP3.hideCloseButton)
|
|
88
77
|
};
|
|
89
78
|
const outOfOfficeControlProps = {
|
|
90
79
|
id: "oc-lcw-header",
|
|
@@ -105,10 +94,10 @@ const HeaderStateful = props => {
|
|
|
105
94
|
if (state.appStates.outsideOperatingHours) {
|
|
106
95
|
setOutOfOperatingHours(true);
|
|
107
96
|
}
|
|
108
|
-
|
|
109
97
|
if (state.appStates.conversationState) {
|
|
110
98
|
conversationState.current = state.appStates.conversationState;
|
|
111
99
|
}
|
|
100
|
+
conversationEndedBy.current = state.appStates.conversationEndedBy;
|
|
112
101
|
}, [state.appStates]);
|
|
113
102
|
return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
|
|
114
103
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
@@ -116,7 +105,6 @@ const HeaderStateful = props => {
|
|
|
116
105
|
styleProps: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeStyleProps : headerProps === null || headerProps === void 0 ? void 0 : headerProps.styleProps
|
|
117
106
|
});
|
|
118
107
|
};
|
|
119
|
-
|
|
120
108
|
exports.HeaderStateful = HeaderStateful;
|
|
121
109
|
var _default = HeaderStateful;
|
|
122
110
|
exports.default = _default;
|
|
@@ -4,31 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.LiveChatWidget = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _ChatAdapterStore = require("../../contexts/ChatAdapterStore");
|
|
11
|
-
|
|
12
9
|
var _ChatContextStore = require("../../contexts/ChatContextStore");
|
|
13
|
-
|
|
14
10
|
var _ChatSDKStore = require("../../contexts/ChatSDKStore");
|
|
15
|
-
|
|
16
11
|
var _LiveChatWidgetStateful = _interopRequireDefault(require("./livechatwidgetstateful/LiveChatWidgetStateful"));
|
|
17
|
-
|
|
18
12
|
var _createReducer = require("../../contexts/createReducer");
|
|
19
|
-
|
|
20
13
|
var _LiveChatWidgetContextInitialState = require("../../contexts/common/LiveChatWidgetContextInitialState");
|
|
21
|
-
|
|
22
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
24
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
-
|
|
26
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
-
|
|
28
17
|
const LiveChatWidget = props => {
|
|
29
18
|
const reducer = (0, _createReducer.createReducer)();
|
|
30
|
-
const [state, dispatch] = (0, _react.useReducer)(reducer, (0, _LiveChatWidgetContextInitialState.getLiveChatWidgetContextInitialState)(props));
|
|
31
|
-
|
|
19
|
+
const [state, dispatch] = (0, _react.useReducer)(reducer, (0, _LiveChatWidgetContextInitialState.getLiveChatWidgetContextInitialState)(props));
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
21
|
const [adapter, setAdapter] = (0, _react.useState)(undefined);
|
|
33
22
|
return /*#__PURE__*/_react.default.createElement(_ChatSDKStore.ChatSDKStore.Provider, {
|
|
34
23
|
value: props.chatSDK
|
|
@@ -38,7 +27,6 @@ const LiveChatWidget = props => {
|
|
|
38
27
|
value: [state, dispatch]
|
|
39
28
|
}, /*#__PURE__*/_react.default.createElement(_LiveChatWidgetStateful.default, props))));
|
|
40
29
|
};
|
|
41
|
-
|
|
42
30
|
exports.LiveChatWidget = LiveChatWidget;
|
|
43
31
|
var _default = LiveChatWidget;
|
|
44
32
|
exports.default = _default;
|
|
@@ -4,13 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ActivityStreamHandler = void 0;
|
|
7
|
-
|
|
8
7
|
var _Deferred = require("./Deferred");
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
8
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
10
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
11
|
class ActivityStreamHandler {
|
|
13
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -21,24 +21,19 @@ class ActivityStreamHandler {
|
|
|
21
21
|
ActivityStreamHandler.restoreDeferred = new _Deferred.Deferred();
|
|
22
22
|
ActivityStreamHandler.restorePromise = ActivityStreamHandler.restoreDeferred.promise;
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
/**
|
|
25
26
|
* Resolve the promise, releasing it to continue with the execution of the activity.
|
|
26
27
|
*
|
|
27
28
|
* */
|
|
28
|
-
|
|
29
|
-
|
|
30
29
|
static uncork() {
|
|
31
30
|
ActivityStreamHandler.restoreDeferred.resolve();
|
|
32
31
|
}
|
|
33
|
-
|
|
34
32
|
}
|
|
35
|
-
|
|
36
33
|
exports.ActivityStreamHandler = ActivityStreamHandler;
|
|
37
|
-
|
|
38
34
|
_defineProperty(ActivityStreamHandler, "restoreDeferred", {
|
|
39
35
|
resolve: () => {
|
|
40
36
|
return "initialState";
|
|
41
37
|
}
|
|
42
38
|
});
|
|
43
|
-
|
|
44
39
|
_defineProperty(ActivityStreamHandler, "restorePromise", void 0);
|
package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BotAuthActivitySubscriber = void 0;
|
|
7
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
8
|
+
var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
|
|
9
|
+
var _TelemetryHelper = require("../../../../common/telemetry/TelemetryHelper");
|
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
12
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
|
+
const supportedSignInCardContentTypes = ["application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"];
|
|
14
|
+
const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
|
|
15
|
+
const delay = t => new Promise(resolve => setTimeout(resolve, t));
|
|
16
|
+
const fetchBotAuthConfigRetries = 3;
|
|
17
|
+
const fetchBotAuthConfigRetryInterval = 1000;
|
|
18
|
+
let response;
|
|
19
|
+
const extractSignInId = signInUrl => {
|
|
20
|
+
const result = botOauthUrlRegex.exec(signInUrl);
|
|
21
|
+
if (result && result[1]) {
|
|
22
|
+
return result[1];
|
|
23
|
+
}
|
|
24
|
+
return "";
|
|
25
|
+
};
|
|
26
|
+
const extractSasUrl = async attachment => {
|
|
27
|
+
let sasUrl = undefined;
|
|
28
|
+
if (attachment && attachment.content && attachment.content.tokenPostResource && attachment.content.tokenPostResource.sasUrl) {
|
|
29
|
+
sasUrl = attachment.content.tokenPostResource.sasUrl;
|
|
30
|
+
}
|
|
31
|
+
if (!sasUrl) {
|
|
32
|
+
const signInId = extractSignInId(attachment.content.buttons[0].value);
|
|
33
|
+
const getTestUrlEndpoint = `https://token.botframework.com/api/sas/gettesturl?signInId=${signInId}`;
|
|
34
|
+
try {
|
|
35
|
+
const response = await window.fetch(getTestUrlEndpoint);
|
|
36
|
+
if (response.status === 200) {
|
|
37
|
+
const responseJson = await response.json();
|
|
38
|
+
sasUrl = responseJson.sasUrl;
|
|
39
|
+
}
|
|
40
|
+
} catch {
|
|
41
|
+
sasUrl = undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return sasUrl;
|
|
45
|
+
};
|
|
46
|
+
const fetchBotAuthConfig = async retries => {
|
|
47
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
48
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig
|
|
49
|
+
});
|
|
50
|
+
const botAuthConfigRequestEvent = {
|
|
51
|
+
eventName: _TelemetryConstants.BroadcastEvent.BotAuthConfigRequest
|
|
52
|
+
};
|
|
53
|
+
_omnichannelChatComponents.BroadcastService.postMessage(botAuthConfigRequestEvent);
|
|
54
|
+
const listener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.BotAuthConfigResponse).subscribe(data => {
|
|
55
|
+
var _data$payload, _data$payload2;
|
|
56
|
+
response = ((_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.response) !== undefined ? (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.response : response;
|
|
57
|
+
listener.unsubscribe();
|
|
58
|
+
});
|
|
59
|
+
if (response !== undefined) {
|
|
60
|
+
//return response;
|
|
61
|
+
return response;
|
|
62
|
+
}
|
|
63
|
+
if (retries === 1) {
|
|
64
|
+
// Base Case
|
|
65
|
+
throw new Error();
|
|
66
|
+
}
|
|
67
|
+
await delay(fetchBotAuthConfigRetryInterval);
|
|
68
|
+
return await fetchBotAuthConfig(--retries);
|
|
69
|
+
};
|
|
70
|
+
class BotAuthActivitySubscriber {
|
|
71
|
+
constructor() {
|
|
72
|
+
_defineProperty(this, "observer", void 0);
|
|
73
|
+
_defineProperty(this, "signInCardSeen", void 0);
|
|
74
|
+
this.signInCardSeen = new Set();
|
|
75
|
+
}
|
|
76
|
+
applicable(activity) {
|
|
77
|
+
var _activity$attachments;
|
|
78
|
+
return (activity === null || activity === void 0 ? void 0 : (_activity$attachments = activity.attachments) === null || _activity$attachments === void 0 ? void 0 : _activity$attachments.length) > 0 && activity.attachments[0] && supportedSignInCardContentTypes.indexOf(activity.attachments[0].contentType) >= 0;
|
|
79
|
+
}
|
|
80
|
+
async apply(activity) {
|
|
81
|
+
this.observer.next(false); // Hides card
|
|
82
|
+
const attachment = activity.attachments[0];
|
|
83
|
+
const signInUrl = attachment.content.buttons[0].value;
|
|
84
|
+
const signInId = extractSignInId(signInUrl);
|
|
85
|
+
if (!signInId) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (this.signInCardSeen.has(signInId)) {
|
|
89
|
+
// Prevents duplicate auth
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.signInCardSeen.add(signInId);
|
|
93
|
+
const sasUrl = await extractSasUrl(attachment);
|
|
94
|
+
const event = {
|
|
95
|
+
eventName: _TelemetryConstants.BroadcastEvent.SigninCardReceived,
|
|
96
|
+
payload: {
|
|
97
|
+
sasUrl
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
if (!sasUrl) {
|
|
101
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
102
|
+
Event: _TelemetryConstants.TelemetryEvent.BotAuthActivityEmptySasUrl,
|
|
103
|
+
Description: "SaS Url is empty"
|
|
104
|
+
});
|
|
105
|
+
return activity;
|
|
106
|
+
} else {
|
|
107
|
+
_omnichannelChatComponents.BroadcastService.postMessage(event);
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const response = await fetchBotAuthConfig(fetchBotAuthConfigRetries);
|
|
111
|
+
if (response === false) {
|
|
112
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
113
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderHideCard
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
117
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderDisplayCard
|
|
118
|
+
});
|
|
119
|
+
return activity;
|
|
120
|
+
}
|
|
121
|
+
} catch {
|
|
122
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
123
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound
|
|
124
|
+
});
|
|
125
|
+
//this is to ensure listener continues waiting for response
|
|
126
|
+
if (this.signInCardSeen.has(signInId)) {
|
|
127
|
+
this.signInCardSeen.delete(signInId);
|
|
128
|
+
}
|
|
129
|
+
return activity;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async next(activity) {
|
|
133
|
+
if (this.applicable(activity)) {
|
|
134
|
+
return await this.apply(activity);
|
|
135
|
+
}
|
|
136
|
+
return activity;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.BotAuthActivitySubscriber = BotAuthActivitySubscriber;
|
package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js
CHANGED
|
@@ -4,20 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DefaultActivitySubscriber = void 0;
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
7
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
9
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
10
10
|
class DefaultActivitySubscriber {
|
|
11
11
|
constructor() {
|
|
12
12
|
_defineProperty(this, "observer", void 0);
|
|
13
13
|
}
|
|
14
|
-
|
|
15
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
15
|
async next(activity) {
|
|
17
16
|
this.observer.next(activity);
|
|
18
17
|
return false;
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
exports.DefaultActivitySubscriber = DefaultActivitySubscriber;
|
package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js
CHANGED
|
@@ -4,36 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PauseActivitySubscriber = void 0;
|
|
7
|
-
|
|
8
7
|
var _ActivityStreamHandler = require("../ActivityStreamHandler");
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
8
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
10
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
11
|
class PauseActivitySubscriber {
|
|
13
12
|
constructor() {
|
|
14
13
|
_defineProperty(this, "observer", void 0);
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
16
|
async apply(activity) {
|
|
19
17
|
await _ActivityStreamHandler.ActivityStreamHandler.restorePromise;
|
|
20
18
|
return activity;
|
|
21
|
-
}
|
|
22
|
-
|
|
19
|
+
}
|
|
23
20
|
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
24
22
|
applicable(activity) {
|
|
25
23
|
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
24
|
+
}
|
|
28
25
|
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
27
|
async next(activity) {
|
|
30
28
|
if (this.applicable(activity)) {
|
|
31
29
|
return await this.apply(activity);
|
|
32
30
|
}
|
|
33
|
-
|
|
34
31
|
return activity;
|
|
35
32
|
}
|
|
36
|
-
|
|
37
33
|
}
|
|
38
|
-
|
|
39
34
|
exports.PauseActivitySubscriber = PauseActivitySubscriber;
|