@microsoft/omnichannel-chat-widget 0.1.0-main.e67738e → 0.1.0-main.ec08ec5
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/lib/cjs/common/Constants.js +0 -167
- package/lib/cjs/common/KeyCodes.js +0 -3
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
- package/lib/cjs/common/storage/default/defaultCacheManager.js +24 -0
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
- package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +21 -22
- package/lib/cjs/common/telemetry/TelemetryHelper.js +16 -57
- package/lib/cjs/common/telemetry/TelemetryManager.js +0 -31
- 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 +18 -105
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -32
- package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
- 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 +12 -27
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
- package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +2 -9
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -5
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -11
- package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +11 -19
- package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -10
- package/lib/cjs/components/livechatwidget/common/authHelper.js +13 -15
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
- package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
- package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -14
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +55 -36
- package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
- package/lib/cjs/components/livechatwidget/common/endChat.js +8 -33
- 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 +16 -54
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +36 -66
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
- package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
- package/lib/cjs/components/livechatwidget/common/startChat.js +55 -86
- 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/livechatwidgetstateful/LiveChatWidgetStateful.js +125 -196
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
- 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 +32 -23
- 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 +8 -36
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -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 +9 -26
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -17
- package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
- package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
- 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 +9 -19
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
- 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 +2 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
- 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 +16 -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/ConversationState.js +0 -1
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -2
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +8 -10
- package/lib/cjs/contexts/createReducer.js +135 -106
- package/lib/cjs/controller/componentController.js +1 -30
- 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/index.js +0 -5
- package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
- package/lib/esm/common/Constants.js +0 -155
- package/lib/esm/common/KeyCodes.js +0 -2
- package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
- package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
- package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +25 -19
- package/lib/esm/common/telemetry/TelemetryHelper.js +16 -45
- package/lib/esm/common/telemetry/TelemetryManager.js +0 -18
- 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 +18 -53
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -13
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
- 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 +12 -12
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
- package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +2 -6
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -3
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -8
- package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +11 -15
- package/lib/esm/components/livechatwidget/common/Deferred.js +3 -8
- package/lib/esm/components/livechatwidget/common/authHelper.js +13 -10
- package/lib/esm/components/livechatwidget/common/createAdapter.js +4 -6
- package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
- package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -5
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +57 -23
- package/lib/esm/components/livechatwidget/common/endChat.js +10 -18
- 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 +18 -19
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +37 -51
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
- package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
- package/lib/esm/components/livechatwidget/common/startChat.js +57 -59
- package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +126 -129
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
- 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 +32 -11
- 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 +10 -20
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -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 +9 -18
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -13
- package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -2
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
- 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 +11 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
- 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 +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
- 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 +16 -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/ConversationState.js +0 -1
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -2
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -6
- package/lib/esm/contexts/createReducer.js +135 -103
- package/lib/esm/controller/componentController.js +2 -1
- 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/plugins/newMessageEventHandler.js +15 -26
- 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 +9 -2
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
- package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -5
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -2
- 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/contexts/common/ILiveChatWidgetContext.d.ts +1 -1
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +1 -1
- package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
- package/package.json +3 -3
|
@@ -4,10 +4,14 @@ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
|
4
4
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
5
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
6
6
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
7
|
-
import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
|
|
7
|
+
import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
|
|
8
|
+
const isReconnectEnabled = chatConfig => {
|
|
9
|
+
return chatConfig && chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect && (chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === "true" || chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === true);
|
|
10
|
+
};
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, reconnectId) => {
|
|
14
|
+
if (isReconnectEnabled(chatConfig)) {
|
|
11
15
|
try {
|
|
12
16
|
if (reconnectId) {
|
|
13
17
|
const chatReconnectOptionalParams = {
|
|
@@ -17,9 +21,9 @@ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReco
|
|
|
17
21
|
} else {
|
|
18
22
|
// set auth token to chat sdk to get reconnectId for auth chat
|
|
19
23
|
await handleAuthentication(chatSDK, chatConfig, getAuthToken);
|
|
20
|
-
const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext());
|
|
24
|
+
const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext());
|
|
25
|
+
// remove auth token after reconnectId is fetched
|
|
21
26
|
// this will be reset later at start chat
|
|
22
|
-
|
|
23
27
|
removeAuthTokenProvider(chatSDK);
|
|
24
28
|
return reconnectChatContext;
|
|
25
29
|
}
|
|
@@ -32,59 +36,47 @@ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReco
|
|
|
32
36
|
});
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
|
-
|
|
36
39
|
return null;
|
|
37
|
-
};
|
|
38
|
-
|
|
40
|
+
};
|
|
39
41
|
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
43
|
const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
|
|
41
|
-
var _props$chatConfig
|
|
42
|
-
|
|
44
|
+
var _props$chatConfig;
|
|
43
45
|
let authClientFunction = undefined;
|
|
44
|
-
|
|
45
46
|
if ((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) {
|
|
46
47
|
var _props$chatConfig2, _props$chatConfig2$Li;
|
|
47
|
-
|
|
48
48
|
authClientFunction = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_javascriptclientfunction) ?? undefined;
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
) {
|
|
55
|
-
var _props$reconnectChatP2;
|
|
56
|
-
|
|
57
|
-
const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled);
|
|
58
|
-
|
|
50
|
+
if (isReconnectEnabled(props.chatConfig) && authClientFunction
|
|
51
|
+
// TODO: Implement this after storage is in place
|
|
52
|
+
/* && !isLoadWithState() */) {
|
|
53
|
+
const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken);
|
|
59
54
|
if (previousActiveSessionResponse && previousActiveSessionResponse.reconnectId) {
|
|
60
55
|
return previousActiveSessionResponse.reconnectId;
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
|
-
|
|
64
58
|
return undefined;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat, redirectInSameWindow) => {
|
|
69
|
-
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
|
|
59
|
+
};
|
|
70
60
|
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
|
|
63
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
|
|
71
64
|
if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
72
65
|
await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
|
|
73
66
|
} else {
|
|
74
67
|
await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
|
|
75
68
|
}
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat) => {
|
|
80
|
-
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
|
|
69
|
+
};
|
|
81
70
|
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
73
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
|
|
82
74
|
if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
83
75
|
await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
|
|
84
76
|
}
|
|
85
|
-
};
|
|
86
|
-
|
|
77
|
+
};
|
|
87
78
|
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
80
|
const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
89
81
|
const startUnauthenticatedReconnectChat = {
|
|
90
82
|
eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
@@ -103,7 +95,6 @@ const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dis
|
|
|
103
95
|
});
|
|
104
96
|
await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, optionalParams);
|
|
105
97
|
};
|
|
106
|
-
|
|
107
98
|
const redirectPage = (redirectURL, redirectInSameWindow) => {
|
|
108
99
|
const redirectPageRequest = {
|
|
109
100
|
eventName: BroadcastEvent.RedirectPageRequest,
|
|
@@ -112,26 +103,23 @@ const redirectPage = (redirectURL, redirectInSameWindow) => {
|
|
|
112
103
|
}
|
|
113
104
|
};
|
|
114
105
|
BroadcastService.postMessage(redirectPageRequest);
|
|
115
|
-
|
|
116
106
|
if (redirectInSameWindow) {
|
|
117
107
|
window.location.href = redirectURL;
|
|
118
108
|
}
|
|
119
109
|
};
|
|
120
|
-
|
|
121
110
|
const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
|
|
122
111
|
return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
|
|
123
|
-
};
|
|
124
|
-
|
|
112
|
+
};
|
|
125
113
|
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
126
115
|
const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat) => {
|
|
127
116
|
const startUnauthenticatedReconnectChat = {
|
|
128
117
|
eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
129
118
|
};
|
|
130
|
-
BroadcastService.postMessage(startUnauthenticatedReconnectChat);
|
|
131
|
-
|
|
119
|
+
BroadcastService.postMessage(startUnauthenticatedReconnectChat);
|
|
120
|
+
// Getting PreChat Survey Context
|
|
132
121
|
const parseToJson = false;
|
|
133
122
|
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
134
|
-
|
|
135
123
|
if (preChatSurveyResponse) {
|
|
136
124
|
dispatch({
|
|
137
125
|
type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
|
|
@@ -148,18 +136,17 @@ const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken
|
|
|
148
136
|
});
|
|
149
137
|
await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
|
|
150
138
|
}
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, isReconnectEnabled, reconnectId, redirectInSameWindow) => {
|
|
155
|
-
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
|
|
139
|
+
};
|
|
156
140
|
|
|
141
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
142
|
+
const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
|
|
143
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
|
|
157
144
|
if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
158
145
|
await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
|
|
159
146
|
}
|
|
160
|
-
};
|
|
161
|
-
|
|
147
|
+
};
|
|
162
148
|
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
163
150
|
const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
|
|
164
151
|
if (reconnectAvailabilityResponse.redirectURL) {
|
|
165
152
|
redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
|
|
@@ -167,5 +154,4 @@ const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, ch
|
|
|
167
154
|
await startNewChatEmptyRedirectionUrl(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat);
|
|
168
155
|
}
|
|
169
156
|
};
|
|
170
|
-
|
|
171
|
-
export { getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
|
|
157
|
+
export { isReconnectEnabled, getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
|
|
@@ -6,27 +6,23 @@ import { defaultInternalTelemetryData } from "../../../common/telemetry/defaultC
|
|
|
6
6
|
import { defaultTelemetryConfiguration } from "../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration";
|
|
7
7
|
export const registerTelemetryLoggers = (props, dispatch) => {
|
|
8
8
|
var _props$liveChatContex, _props$liveChatContex2;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const telemetryConfig = {
|
|
10
|
+
...defaultTelemetryConfiguration,
|
|
11
11
|
...props.telemetryConfig
|
|
12
12
|
};
|
|
13
|
-
|
|
14
13
|
if ((_props$liveChatContex = props.liveChatContextFromCache) !== null && _props$liveChatContex !== void 0 && (_props$liveChatContex2 = _props$liveChatContex.domainStates) !== null && _props$liveChatContex2 !== void 0 && _props$liveChatContex2.telemetryInternalData) {
|
|
15
14
|
var _props$liveChatContex3, _props$liveChatContex4;
|
|
16
|
-
|
|
17
15
|
TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
|
|
18
16
|
} else {
|
|
19
17
|
var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
let telemetryData = {
|
|
19
|
+
...defaultInternalTelemetryData,
|
|
22
20
|
telemetryConfig: Object.assign({}, defaultTelemetryConfiguration, telemetryConfig),
|
|
23
21
|
ariaConfig: Object.assign({}, defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
|
|
24
22
|
};
|
|
25
|
-
|
|
26
23
|
if (props.chatConfig) {
|
|
27
24
|
telemetryData = TelemetryHelper.addChatConfigDataToTelemetry(props === null || props === void 0 ? void 0 : props.chatConfig, telemetryData);
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
telemetryData = TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
|
|
31
27
|
telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
|
|
32
28
|
telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
|
|
@@ -40,6 +36,5 @@ export const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
40
36
|
payload: telemetryData
|
|
41
37
|
});
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
RegisterLoggers();
|
|
45
40
|
};
|
|
@@ -2,8 +2,9 @@ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryCon
|
|
|
2
2
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
3
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
4
4
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
5
|
-
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
5
|
+
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
6
6
|
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
8
|
export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
|
|
8
9
|
try {
|
|
9
10
|
if (!persistedChat) {
|
|
@@ -25,9 +26,9 @@ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persist
|
|
|
25
26
|
exception: ex
|
|
26
27
|
}
|
|
27
28
|
});
|
|
28
|
-
}
|
|
29
|
-
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
32
|
BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
|
|
32
33
|
dispatch({
|
|
33
34
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2
2
|
export function shareObservable(observable) {
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4
|
-
let observers = [];
|
|
4
|
+
let observers = [];
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
let subscription;
|
|
7
8
|
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
10
|
return new window.Observable(observer => {
|
|
9
11
|
if (!subscription) {
|
|
10
12
|
subscription = observable.subscribe({
|
|
11
13
|
complete() {
|
|
12
14
|
observers.forEach(observer => observer.complete());
|
|
13
15
|
},
|
|
14
|
-
|
|
15
16
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
17
|
error(err) {
|
|
17
18
|
observers.forEach(observer => observer.error(err));
|
|
18
19
|
},
|
|
19
|
-
|
|
20
20
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
21
|
next(value) {
|
|
22
22
|
observers.forEach(observer => observer.next(value));
|
|
23
23
|
}
|
|
24
|
-
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
|
|
28
26
|
observers.push(observer);
|
|
29
27
|
return () => {
|
|
30
28
|
observers = observers.filter(o => o !== observer);
|
|
31
|
-
|
|
32
29
|
if (!observers.length) {
|
|
33
30
|
subscription.unsubscribe();
|
|
34
31
|
subscription = null;
|
|
@@ -14,34 +14,33 @@ import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurv
|
|
|
14
14
|
import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
|
|
15
15
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
16
16
|
import { ActivityStreamHandler } from "./ActivityStreamHandler";
|
|
17
|
-
import { handleAuthentication } from "./authHelper";
|
|
17
|
+
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
let optionalParams = {};
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
let widgetInstanceId;
|
|
22
23
|
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
25
|
const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
|
|
24
26
|
var _props$controlProps, _props$reconnectChatP;
|
|
25
|
-
|
|
26
27
|
optionalParams = {}; //Resetting to ensure no stale values
|
|
28
|
+
widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId;
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
// Can connect to existing chat session
|
|
30
31
|
if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
|
|
31
32
|
return;
|
|
32
|
-
}
|
|
33
|
-
|
|
33
|
+
}
|
|
34
34
|
|
|
35
|
+
// Redirecting if unauthenticated reconnect chat expired
|
|
35
36
|
if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
|
|
36
|
-
var _props$reconnectChatP2, _props$reconnectChatP3
|
|
37
|
-
|
|
38
|
-
await handleRedirectUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.redirectInSameWindow);
|
|
37
|
+
var _props$reconnectChatP2, _props$reconnectChatP3;
|
|
38
|
+
await handleRedirectUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.redirectInSameWindow);
|
|
39
39
|
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
40
|
+
}
|
|
42
41
|
|
|
42
|
+
// Getting reconnectId for authenticated chat
|
|
43
43
|
const reconnectId = await getReconnectIdForAuthenticatedChat(props, chatSDK);
|
|
44
|
-
|
|
45
44
|
if (reconnectId) {
|
|
46
45
|
dispatch({
|
|
47
46
|
type: LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
@@ -52,22 +51,22 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
|
|
|
52
51
|
payload: ConversationState.ReconnectChat
|
|
53
52
|
});
|
|
54
53
|
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
54
|
+
}
|
|
57
55
|
|
|
56
|
+
// Setting Proactive chat settings
|
|
58
57
|
const isProactiveChat = state.appStates.conversationState === ConversationState.ProactiveChat;
|
|
59
|
-
const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
|
|
58
|
+
const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
|
|
60
59
|
|
|
60
|
+
//Setting PreChat and intiate chat
|
|
61
61
|
setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
|
|
62
|
-
};
|
|
63
|
-
|
|
62
|
+
};
|
|
64
63
|
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
65
|
const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
|
|
66
66
|
// Getting prechat Survey Context
|
|
67
67
|
const parseToJson = false;
|
|
68
68
|
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
69
69
|
const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
|
|
70
|
-
|
|
71
70
|
if (showPrechat) {
|
|
72
71
|
dispatch({
|
|
73
72
|
type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
|
|
@@ -78,26 +77,33 @@ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, disp
|
|
|
78
77
|
payload: ConversationState.Prechat
|
|
79
78
|
});
|
|
80
79
|
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
80
|
+
}
|
|
83
81
|
|
|
82
|
+
//Initiate start chat
|
|
84
83
|
dispatch({
|
|
85
84
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
86
85
|
payload: ConversationState.Loading
|
|
87
86
|
});
|
|
88
87
|
await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
|
|
89
|
-
};
|
|
90
|
-
|
|
88
|
+
};
|
|
91
89
|
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
91
|
const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
|
|
93
92
|
try {
|
|
94
93
|
var _newAdapter$activity$, _TelemetryTimers$Widg;
|
|
94
|
+
const authClientFunction = getAuthClientFunction(chatConfig);
|
|
95
|
+
if (getAuthToken && authClientFunction) {
|
|
96
|
+
// set auth token to chat sdk before start chat
|
|
97
|
+
const authSuccess = await handleAuthentication(chatSDK, chatConfig, getAuthToken);
|
|
98
|
+
if (!authSuccess) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let isStartChatSuccessful = false;
|
|
95
103
|
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
//Check if chat retrieved from cache
|
|
98
105
|
if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
|
|
99
106
|
var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
|
|
100
|
-
|
|
101
107
|
BroadcastService.postMessage({
|
|
102
108
|
eventName: BroadcastEvent.ChatRetrievedFromCache,
|
|
103
109
|
payload: {
|
|
@@ -106,18 +112,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
106
112
|
}
|
|
107
113
|
});
|
|
108
114
|
}
|
|
109
|
-
|
|
110
115
|
try {
|
|
111
116
|
//Start widget load timer
|
|
112
117
|
TelemetryTimers.WidgetLoadTimer = createTimer();
|
|
113
118
|
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
114
119
|
Event: TelemetryEvent.StartChatSDKCall
|
|
115
|
-
});
|
|
120
|
+
});
|
|
116
121
|
|
|
122
|
+
// Set custom context params
|
|
117
123
|
setCustomContextParams(chatSDK);
|
|
118
|
-
optionalParams = Object.assign({}, params, optionalParams);
|
|
119
|
-
|
|
120
|
-
await handleAuthentication(chatSDK, chatConfig, getAuthToken);
|
|
124
|
+
optionalParams = Object.assign({}, params, optionalParams);
|
|
121
125
|
await chatSDK.startChat(optionalParams);
|
|
122
126
|
isStartChatSuccessful = true;
|
|
123
127
|
} catch (error) {
|
|
@@ -127,17 +131,17 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
127
131
|
exception: `Failed to setup startChat: ${error}`
|
|
128
132
|
}
|
|
129
133
|
});
|
|
130
|
-
isStartChatSuccessful = false;
|
|
134
|
+
isStartChatSuccessful = false;
|
|
135
|
+
// Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
|
|
131
136
|
// TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
|
|
132
|
-
|
|
133
137
|
dispatch({
|
|
134
138
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
135
139
|
payload: ConversationState.Closed
|
|
136
140
|
});
|
|
137
141
|
return;
|
|
138
|
-
}
|
|
139
|
-
|
|
142
|
+
}
|
|
140
143
|
|
|
144
|
+
// New adapter creation
|
|
141
145
|
const newAdapter = await createAdapter(chatSDK);
|
|
142
146
|
setAdapter(newAdapter);
|
|
143
147
|
const chatToken = await chatSDK.getChatToken();
|
|
@@ -146,7 +150,6 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
146
150
|
payload: chatToken
|
|
147
151
|
});
|
|
148
152
|
newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe(createOnNewAdapterActivityHandler(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
|
|
149
|
-
|
|
150
153
|
if (persistedState) {
|
|
151
154
|
dispatch({
|
|
152
155
|
type: LiveChatWidgetActionType.SET_WIDGET_STATE,
|
|
@@ -154,19 +157,22 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
154
157
|
});
|
|
155
158
|
await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
|
|
156
159
|
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
160
|
+
}
|
|
159
161
|
|
|
162
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
163
|
const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
|
|
161
164
|
dispatch({
|
|
162
165
|
type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
163
166
|
payload: liveChatContext
|
|
164
|
-
});
|
|
167
|
+
});
|
|
165
168
|
|
|
166
|
-
|
|
169
|
+
// Set post chat context in state, no survey load
|
|
170
|
+
setPostChatContextAndLoadSurvey(chatSDK, dispatch);
|
|
167
171
|
|
|
168
|
-
|
|
172
|
+
// Updating chat session detail for telemetry
|
|
173
|
+
await updateSessionDataForTelemetry(chatSDK, dispatch);
|
|
169
174
|
|
|
175
|
+
// Set app state to Active
|
|
170
176
|
if (isStartChatSuccessful) {
|
|
171
177
|
ActivityStreamHandler.uncork();
|
|
172
178
|
dispatch({
|
|
@@ -174,7 +180,6 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
174
180
|
payload: ConversationState.Active
|
|
175
181
|
});
|
|
176
182
|
}
|
|
177
|
-
|
|
178
183
|
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
179
184
|
Event: TelemetryEvent.WidgetLoadComplete,
|
|
180
185
|
Description: "Widget load complete",
|
|
@@ -187,8 +192,8 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
187
192
|
Exception: `Widget load Failed: ${ex}`
|
|
188
193
|
}
|
|
189
194
|
});
|
|
190
|
-
NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex);
|
|
191
|
-
|
|
195
|
+
NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex);
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
192
197
|
if (ex.message === ChatSDKError.WidgetUseOutsideOperatingHour) {
|
|
193
198
|
dispatch({
|
|
194
199
|
type: LiveChatWidgetActionType.SET_OUTSIDE_OPERATING_HOURS,
|
|
@@ -203,22 +208,20 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
203
208
|
optionalParams = {};
|
|
204
209
|
widgetInstanceId = "";
|
|
205
210
|
}
|
|
206
|
-
};
|
|
207
|
-
|
|
211
|
+
};
|
|
208
212
|
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
209
214
|
const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
|
|
210
215
|
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
|
|
211
|
-
|
|
212
216
|
// By pass this function in case of popout chat
|
|
213
217
|
if (state.appStates.skipChatButtonRendering === true) {
|
|
214
218
|
return false;
|
|
215
219
|
}
|
|
220
|
+
const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? "");
|
|
216
221
|
|
|
217
|
-
|
|
218
|
-
|
|
222
|
+
//Connect to only active chat session
|
|
219
223
|
if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai6 = persistedState.domainStates) === null || _persistedState$domai6 === void 0 ? void 0 : _persistedState$domai6.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === ConversationState.Active) {
|
|
220
224
|
var _persistedState$domai7;
|
|
221
|
-
|
|
222
225
|
dispatch({
|
|
223
226
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
224
227
|
payload: ConversationState.Loading
|
|
@@ -231,18 +234,15 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
|
|
|
231
234
|
} else {
|
|
232
235
|
return false;
|
|
233
236
|
}
|
|
234
|
-
};
|
|
235
|
-
|
|
237
|
+
};
|
|
236
238
|
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
237
240
|
const setCustomContextParams = chatSDK => {
|
|
238
241
|
var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
|
|
239
|
-
|
|
240
242
|
// Add custom context only for unauthenticated chat
|
|
241
243
|
const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId, widgetInstanceId ?? "");
|
|
242
|
-
|
|
243
244
|
if (!isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
|
|
244
245
|
var _persistedState$domai9, _persistedState$domai10;
|
|
245
|
-
|
|
246
246
|
if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
|
|
247
247
|
const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
|
|
248
248
|
TelemetryHelper.logSDKEvent(LogLevel.WARN, {
|
|
@@ -253,11 +253,9 @@ const setCustomContextParams = chatSDK => {
|
|
|
253
253
|
});
|
|
254
254
|
throw new Error(errorMessage);
|
|
255
255
|
}
|
|
256
|
-
|
|
257
256
|
optionalParams = Object.assign({}, optionalParams, {
|
|
258
257
|
customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
|
|
259
258
|
});
|
|
260
259
|
}
|
|
261
260
|
};
|
|
262
|
-
|
|
263
261
|
export { prepareStartChat, initStartChat, setPreChatAndInitiateChat };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
2
2
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
3
|
-
import { TelemetryManager } from "../../../common/telemetry/TelemetryManager";
|
|
3
|
+
import { TelemetryManager } from "../../../common/telemetry/TelemetryManager";
|
|
4
4
|
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
6
|
export const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
|
|
6
7
|
if (chatSDK) {
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -13,8 +14,9 @@ export const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
|
|
|
13
14
|
});
|
|
14
15
|
await updateConversationDataForTelemetry(chatSDK, dispatch);
|
|
15
16
|
}
|
|
16
|
-
};
|
|
17
|
+
};
|
|
17
18
|
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
20
|
const updateConversationDataForTelemetry = async (chatSDK, dispatch) => {
|
|
19
21
|
if (chatSDK) {
|
|
20
22
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|