@microsoft/omnichannel-chat-widget 1.8.6 → 2.0.0-main.5ebd4eb
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 +52 -5
- package/lib/cjs/common/Constants.js +5 -0
- package/lib/cjs/common/facades/FacadeChatSDK.js +234 -9
- package/lib/cjs/common/telemetry/TelemetryConstants.js +19 -0
- package/lib/cjs/common/telemetry/TelemetryManager.js +6 -1
- package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +2 -3
- package/lib/cjs/common/telemetry/sanitizeSasInPayload.js +91 -0
- package/lib/cjs/common/utils.js +93 -17
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +16 -6
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -10
- package/lib/cjs/components/citationpanestateful/CitationDim.js +2 -3
- package/lib/cjs/components/citationpanestateful/CitationPaneStateful.js +27 -5
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +23 -3
- package/lib/cjs/components/dimlayer/DimLayer.js +1 -3
- package/lib/cjs/components/draggable/DraggableChatWidget.js +35 -15
- package/lib/cjs/components/draggable/DraggableEventEmitter.js +10 -1
- package/lib/cjs/components/draggable/DraggableEventReceiver.js +1 -3
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
- package/lib/cjs/components/errorboundary/ErrorBoundary.js +4 -12
- package/lib/cjs/components/footerstateful/FooterStateful.js +18 -9
- package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
- package/lib/cjs/components/headerstateful/HeaderStateful.js +24 -12
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +27 -4
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +23 -6
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
- package/lib/cjs/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
- package/lib/cjs/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
- package/lib/cjs/components/livechatwidget/common/authHelper.js +44 -4
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +3 -2
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +98 -5
- package/lib/cjs/components/livechatwidget/common/endChat.js +12 -9
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +182 -1
- package/lib/cjs/components/livechatwidget/common/recoveryEligibilityTelemetry.js +60 -0
- package/lib/cjs/components/livechatwidget/common/startChat.js +31 -14
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +160 -21
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +16 -11
- package/lib/cjs/components/notificationpanestateful/NotificationPaneStateful.js +19 -12
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +13 -6
- package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +12 -5
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
- package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -7
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +16 -7
- package/lib/cjs/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +10 -2
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
- package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
- package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/utils/citationA11y.js +195 -0
- package/lib/cjs/components/webchatcontainerstateful/interfaces/IWebChatAction.js +17 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +22 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -35
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +199 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +29 -15
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +14 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +16 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +18 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +10 -2
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -12
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +83 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -30
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +5 -0
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
- package/lib/cjs/contexts/createReducer.js +15 -0
- package/lib/cjs/controller/componentController.js +13 -1
- package/lib/cjs/hooks/useWindowDimensions.js +13 -5
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/plugins/createChatTranscript.js +3 -4
- package/lib/cjs/plugins/newMessageEventHandler.js +20 -3
- package/lib/esm/common/Constants.js +5 -0
- package/lib/esm/common/facades/FacadeChatSDK.js +235 -10
- package/lib/esm/common/telemetry/TelemetryConstants.js +19 -0
- package/lib/esm/common/telemetry/TelemetryManager.js +6 -1
- package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +2 -3
- package/lib/esm/common/telemetry/sanitizeSasInPayload.js +84 -0
- package/lib/esm/common/utils.js +88 -14
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +15 -5
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +19 -9
- package/lib/esm/components/citationpanestateful/CitationDim.js +2 -3
- package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +26 -4
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -2
- package/lib/esm/components/dimlayer/DimLayer.js +1 -3
- package/lib/esm/components/draggable/DraggableChatWidget.js +34 -14
- package/lib/esm/components/draggable/DraggableEventEmitter.js +10 -1
- package/lib/esm/components/draggable/DraggableEventReceiver.js +1 -3
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +54 -17
- package/lib/esm/components/errorboundary/ErrorBoundary.js +4 -12
- package/lib/esm/components/footerstateful/FooterStateful.js +17 -8
- package/lib/esm/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +2 -4
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +4 -6
- package/lib/esm/components/headerstateful/HeaderStateful.js +22 -10
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +27 -4
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +23 -6
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +5 -11
- package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +1 -0
- package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +11 -4
- package/lib/esm/components/livechatwidget/common/authHelper.js +44 -4
- package/lib/esm/components/livechatwidget/common/createAdapter.js +3 -2
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +98 -5
- package/lib/esm/components/livechatwidget/common/endChat.js +12 -9
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +182 -1
- package/lib/esm/components/livechatwidget/common/recoveryEligibilityTelemetry.js +52 -0
- package/lib/esm/components/livechatwidget/common/startChat.js +31 -14
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +159 -20
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +14 -9
- package/lib/esm/components/notificationpanestateful/NotificationPaneStateful.js +17 -10
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -5
- package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +28 -5
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +11 -4
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +105 -11
- package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +12 -1
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +16 -6
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +15 -6
- package/lib/esm/components/startchaterrorpanestateful/StartChatErrorPaneStateful.js +9 -1
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +154 -29
- package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +10 -0
- package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +115 -10
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultWebChatStyles.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/utils/citationA11y.js +188 -0
- package/lib/esm/components/webchatcontainerstateful/interfaces/IWebChatAction.js +10 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +27 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +180 -190
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +3 -5
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +19 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -23
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -32
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.js +193 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.js +28 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +5 -12
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultAvatarTextStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.js +8 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +8 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +5 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +13 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +15 -13
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +17 -27
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +9 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +16 -10
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +6 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.js +77 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +36 -8
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.js +5 -2
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +10 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.js +5 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +7 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +10 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -10
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +57 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +25 -31
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +10 -7
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +6 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +55 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +2 -4
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +5 -0
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +17 -1
- package/lib/esm/contexts/createReducer.js +15 -0
- package/lib/esm/controller/componentController.js +13 -1
- package/lib/esm/hooks/useWindowDimensions.js +13 -5
- package/lib/esm/plugins/createChatTranscript.js +3 -4
- package/lib/esm/plugins/newMessageEventHandler.js +20 -3
- package/lib/types/common/Constants.d.ts +4 -0
- package/lib/types/common/facades/FacadeChatSDK.d.ts +29 -0
- package/lib/types/common/facades/types/IFacadeChatSDKInput.d.ts +3 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +15 -2
- package/lib/types/common/telemetry/sanitizeSasInPayload.d.ts +24 -0
- package/lib/types/common/utils.d.ts +3 -1
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +2 -1
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +9 -2
- package/lib/types/components/livechatwidget/common/recoveryEligibilityTelemetry.d.ts +17 -0
- package/lib/types/components/livechatwidget/interfaces/IBotAuthActivitySubscriberOptionalParams.d.ts +1 -0
- package/lib/types/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.d.ts +6 -0
- package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/common/utils/citationA11y.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IBotAuthConfig.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatAction.d.ts +16 -1
- package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +14 -38
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AdaptiveCardAccessibilityWrapper.d.ts +18 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageStyles.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentSentAnnouncementMiddleware.d.ts +10 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/callActionMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/customEventMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +2 -2
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.d.ts +2 -4
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.d.ts +7 -0
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
- package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +17 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
- package/package.json +71 -57
|
@@ -15,10 +15,16 @@ var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontrol
|
|
|
15
15
|
var _Constants = require("../../common/Constants");
|
|
16
16
|
var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
|
|
17
17
|
var _defaultMiddlewareLocalizedTexts = require("../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
18
|
-
var
|
|
18
|
+
var _useChatContextStore3 = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
19
19
|
var _useFacadeChatSDKStore = _interopRequireDefault(require("../../hooks/useFacadeChatSDKStore"));
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
21
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
22
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
23
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
24
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
25
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
26
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
27
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
22
28
|
let uiTimer;
|
|
23
29
|
const EmailTranscriptPaneStateful = props => {
|
|
24
30
|
var _props$controlProps;
|
|
@@ -31,19 +37,34 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
31
37
|
}, []);
|
|
32
38
|
const initialTabIndexMap = new Map();
|
|
33
39
|
let elements = [];
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const _useChatContextStore = (0, _useChatContextStore3.default)(),
|
|
41
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
|
|
42
|
+
state = _useChatContextStore2[0],
|
|
43
|
+
dispatch = _useChatContextStore2[1];
|
|
44
|
+
const _useFacadeSDKStore = (0, _useFacadeChatSDKStore.default)(),
|
|
45
|
+
_useFacadeSDKStore2 = _slicedToArray(_useFacadeSDKStore, 1),
|
|
46
|
+
facadeChatSDK = _useFacadeSDKStore2[0];
|
|
47
|
+
const _useState = (0, _react.useState)(""),
|
|
48
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
49
|
+
initialEmail = _useState2[0],
|
|
50
|
+
setInitialEmail = _useState2[1];
|
|
51
|
+
// restoreFocus=false is used on the submit path: the notification banner
|
|
52
|
+
// (success or error) takes focus via NotificationHandler.setFocusOnNotificationCloseButton,
|
|
53
|
+
// so an intermediate restore to the chat-widget shell would otherwise cause SRs to
|
|
54
|
+
// announce "Enter <widget>" in between the dialog and the banner.
|
|
55
|
+
const closeEmailTranscriptPane = function () {
|
|
56
|
+
let restoreFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
38
57
|
dispatch({
|
|
39
58
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
|
|
40
59
|
payload: false
|
|
41
60
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
if (restoreFocus) {
|
|
62
|
+
const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
|
|
63
|
+
if (previousFocusedElementId) {
|
|
64
|
+
(0, _utils.setFocusOnElement)("#" + previousFocusedElementId);
|
|
65
|
+
} else {
|
|
66
|
+
(0, _utils.setFocusOnSendBox)();
|
|
67
|
+
}
|
|
47
68
|
}
|
|
48
69
|
dispatch({
|
|
49
70
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
|
|
@@ -54,23 +75,31 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
54
75
|
const onSend = (0, _react.useCallback)(async email => {
|
|
55
76
|
var _state$domainStates;
|
|
56
77
|
const liveChatContext = state === null || state === void 0 || (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext;
|
|
57
|
-
closeEmailTranscriptPane();
|
|
78
|
+
closeEmailTranscriptPane(false);
|
|
58
79
|
const chatTranscriptBody = {
|
|
59
80
|
emailAddress: email,
|
|
60
81
|
attachmentMessage: (props === null || props === void 0 ? void 0 : props.attachmentMessage) ?? "The following attachment was uploaded during the conversation:"
|
|
61
82
|
};
|
|
62
83
|
try {
|
|
63
|
-
var _state$domainStates2;
|
|
84
|
+
var _state$domainStates2, _state$domainStates3;
|
|
64
85
|
await (facadeChatSDK === null || facadeChatSDK === void 0 ? void 0 : facadeChatSDK.emailLiveChatTranscript(chatTranscriptBody, {
|
|
65
86
|
liveChatContext
|
|
66
87
|
}));
|
|
67
|
-
|
|
88
|
+
const successMessage = (state === null || state === void 0 || (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 || (_state$domainStates2 = _state$domainStates2.middlewareLocalizedTexts) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.MIDDLEWARE_BANNER_FILE_EMAIL_ADDRESS_RECORDED_SUCCESS) ?? (_defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts === null || _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts === void 0 ? void 0 : _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_FILE_EMAIL_ADDRESS_RECORDED_SUCCESS);
|
|
89
|
+
// Announce from a live region at document.body level so the
|
|
90
|
+
// screen reader speaks the confirmation immediately, without
|
|
91
|
+
// traversing the chat transcript on the way to the banner.
|
|
92
|
+
// Prefix with the explicit state word so SR users hear the outcome
|
|
93
|
+
// (visual users already see a success icon on the banner).
|
|
94
|
+
const successSrPrefix = (state === null || state === void 0 || (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 || (_state$domainStates3 = _state$domainStates3.middlewareLocalizedTexts) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.MIDDLEWARE_SR_PREFIX_SUCCESS) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_SR_PREFIX_SUCCESS;
|
|
95
|
+
(0, _utils.announceMessageImmediately)(`${successSrPrefix}${successMessage}`);
|
|
96
|
+
_NotificationHandler.NotificationHandler.notifySuccess(_NotificationScenarios.NotificationScenarios.EmailAddressSaved, successMessage);
|
|
68
97
|
_TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
|
|
69
98
|
Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptSent,
|
|
70
99
|
Description: "Transcript sent to email successfully."
|
|
71
100
|
});
|
|
72
101
|
} catch (ex) {
|
|
73
|
-
var _state$
|
|
102
|
+
var _state$domainStates4, _state$domainStates5;
|
|
74
103
|
_TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
|
|
75
104
|
Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptFailed,
|
|
76
105
|
Description: "Email transcript failed.",
|
|
@@ -78,8 +107,11 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
78
107
|
exception: ex
|
|
79
108
|
}
|
|
80
109
|
});
|
|
81
|
-
const message = (0, _utils.formatTemplateString)((state === null || state === void 0 || (_state$
|
|
82
|
-
|
|
110
|
+
const message = (0, _utils.formatTemplateString)((state === null || state === void 0 || (_state$domainStates4 = state.domainStates) === null || _state$domainStates4 === void 0 || (_state$domainStates4 = _state$domainStates4.middlewareLocalizedTexts) === null || _state$domainStates4 === void 0 ? void 0 : _state$domainStates4.MIDDLEWARE_BANNER_FILE_EMAIL_ADDRESS_RECORDED_ERROR) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_FILE_EMAIL_ADDRESS_RECORDED_ERROR, [email]);
|
|
111
|
+
const bannerMessage = (props === null || props === void 0 ? void 0 : props.bannerMessageOnError) ?? message;
|
|
112
|
+
const errorSrPrefix = (state === null || state === void 0 || (_state$domainStates5 = state.domainStates) === null || _state$domainStates5 === void 0 || (_state$domainStates5 = _state$domainStates5.middlewareLocalizedTexts) === null || _state$domainStates5 === void 0 ? void 0 : _state$domainStates5.MIDDLEWARE_SR_PREFIX_ERROR) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_SR_PREFIX_ERROR;
|
|
113
|
+
(0, _utils.announceMessageImmediately)(`${errorSrPrefix}${bannerMessage}`);
|
|
114
|
+
_NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.EmailTranscriptError, bannerMessage);
|
|
83
115
|
}
|
|
84
116
|
}, [props.attachmentMessage, props.bannerMessageOnError, facadeChatSDK, state.domainStates.liveChatContext]);
|
|
85
117
|
const controlProps = {
|
|
@@ -102,7 +134,7 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
102
134
|
|
|
103
135
|
// Move focus to the first button
|
|
104
136
|
(0, _react.useEffect)(() => {
|
|
105
|
-
(0, _utils.preventFocusToMoveOutOfElement)(controlProps.id);
|
|
137
|
+
const cleanup = (0, _utils.preventFocusToMoveOutOfElement)(controlProps.id);
|
|
106
138
|
const focusableElements = (0, _utils.findAllFocusableElement)(`#${controlProps.id}`);
|
|
107
139
|
if (focusableElements) {
|
|
108
140
|
focusableElements[0].focus();
|
|
@@ -117,6 +149,11 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
117
149
|
Event: _TelemetryConstants.TelemetryEvent.UXEmailTranscriptPaneCompleted,
|
|
118
150
|
ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
|
|
119
151
|
});
|
|
152
|
+
return () => {
|
|
153
|
+
// internal tracking: restore parent tab indices on unmount.
|
|
154
|
+
(0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
|
|
155
|
+
cleanup();
|
|
156
|
+
};
|
|
120
157
|
}, [initialEmail]);
|
|
121
158
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
|
|
122
159
|
brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
|
|
@@ -20,9 +20,7 @@ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new T
|
|
|
20
20
|
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
21
21
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
22
22
|
const RenderChildrenFunction = _ref => {
|
|
23
|
-
let
|
|
24
|
-
children
|
|
25
|
-
} = _ref;
|
|
23
|
+
let children = _ref.children;
|
|
26
24
|
return typeof children === "function" ? children() : children;
|
|
27
25
|
};
|
|
28
26
|
let ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
@@ -39,9 +37,7 @@ let ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
39
37
|
return _createClass(ErrorBoundary, [{
|
|
40
38
|
key: "componentDidCatch",
|
|
41
39
|
value: function componentDidCatch(error) {
|
|
42
|
-
const
|
|
43
|
-
onError
|
|
44
|
-
} = this.props;
|
|
40
|
+
const onError = this.props.onError;
|
|
45
41
|
this.setState({
|
|
46
42
|
hasError: true
|
|
47
43
|
});
|
|
@@ -52,12 +48,8 @@ let ErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
52
48
|
}, {
|
|
53
49
|
key: "render",
|
|
54
50
|
value: function render() {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
} = this.props;
|
|
58
|
-
const {
|
|
59
|
-
hasError
|
|
60
|
-
} = this.state;
|
|
51
|
+
const children = this.props.children;
|
|
52
|
+
const hasError = this.state.hasError;
|
|
61
53
|
return !hasError && /*#__PURE__*/_react.default.createElement(RenderChildrenFunction, null, children);
|
|
62
54
|
}
|
|
63
55
|
}]);
|
|
@@ -17,10 +17,16 @@ var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontrol
|
|
|
17
17
|
var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
|
|
18
18
|
var _utils = require("../../common/utils");
|
|
19
19
|
var _DownloadTranscriptStateful = require("./downloadtranscriptstateful/DownloadTranscriptStateful");
|
|
20
|
-
var
|
|
20
|
+
var _useChatContextStore3 = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
21
21
|
var _useFacadeChatSDKStore = _interopRequireDefault(require("../../hooks/useFacadeChatSDKStore"));
|
|
22
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
23
23
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
24
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
25
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
26
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
27
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
28
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
29
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
24
30
|
let uiTimer;
|
|
25
31
|
|
|
26
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -32,17 +38,20 @@ const FooterStateful = props => {
|
|
|
32
38
|
Event: _TelemetryConstants.TelemetryEvent.UXFooterStart
|
|
33
39
|
});
|
|
34
40
|
}, []);
|
|
35
|
-
const
|
|
41
|
+
const _useChatContextStore = (0, _useChatContextStore3.default)(),
|
|
42
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
|
|
43
|
+
state = _useChatContextStore2[0],
|
|
44
|
+
dispatch = _useChatContextStore2[1];
|
|
36
45
|
// hideFooterDisplay - the purpose of this is to keep the footer always "active",
|
|
37
46
|
// but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
|
|
38
47
|
// The reason for this approach is to make sure that state variables for audio notification work correctly after minimizing
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
const footerProps = props.footerProps,
|
|
49
|
+
downloadTranscriptProps = props.downloadTranscriptProps,
|
|
50
|
+
audioNotificationProps = props.audioNotificationProps,
|
|
51
|
+
hideFooterDisplay = props.hideFooterDisplay;
|
|
52
|
+
const _useFacadeSDKStore = (0, _useFacadeChatSDKStore.default)(),
|
|
53
|
+
_useFacadeSDKStore2 = _slicedToArray(_useFacadeSDKStore, 1),
|
|
54
|
+
facadeChatSDK = _useFacadeSDKStore2[0];
|
|
46
55
|
const controlProps = {
|
|
47
56
|
id: "oc-lcw-footer",
|
|
48
57
|
dir: state.domainStates.globalDir,
|
package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js
CHANGED
|
@@ -8,10 +8,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
9
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
10
|
const AudioNotificationStateful = props => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
isAudioMuted
|
|
14
|
-
} = props;
|
|
11
|
+
const audioSrc = props.audioSrc,
|
|
12
|
+
isAudioMuted = props.isAudioMuted;
|
|
15
13
|
const audioRef = (0, _react.useRef)(new Audio(audioSrc));
|
|
16
14
|
(0, _react.useEffect)(() => {
|
|
17
15
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -195,12 +195,10 @@ const downloadTranscript = async (facadeChatSDK, downloadTranscriptProps, state)
|
|
|
195
195
|
if (typeof data === _Constants.Constants.String) {
|
|
196
196
|
data = JSON.parse(data);
|
|
197
197
|
}
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
webChatTranscript
|
|
203
|
-
} = downloadTranscriptProps;
|
|
198
|
+
const bannerMessageOnError = downloadTranscriptProps.bannerMessageOnError,
|
|
199
|
+
renderMarkDown = downloadTranscriptProps.renderMarkDown,
|
|
200
|
+
attachmentMessage = downloadTranscriptProps.attachmentMessage,
|
|
201
|
+
webChatTranscript = downloadTranscriptProps.webChatTranscript;
|
|
204
202
|
if (data[_Constants.Constants.ChatMessagesJson] !== null && data[_Constants.Constants.ChatMessagesJson] !== undefined) {
|
|
205
203
|
const useWebChatTranscript = (0, _utils.isNullOrUndefined)(webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) || (webChatTranscript === null || webChatTranscript === void 0 ? void 0 : webChatTranscript.disabled) === false;
|
|
206
204
|
if (useWebChatTranscript) {
|
|
@@ -14,10 +14,16 @@ var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetAct
|
|
|
14
14
|
var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
|
|
15
15
|
var _utils = require("../../common/utils");
|
|
16
16
|
var _defaultOutOfOfficeHeaderStyleProps = require("./common/styleProps/defaultOutOfOfficeHeaderStyleProps");
|
|
17
|
-
var
|
|
18
|
-
var
|
|
17
|
+
var _useChatAdapterStore3 = _interopRequireDefault(require("../../hooks/useChatAdapterStore"));
|
|
18
|
+
var _useChatContextStore3 = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
19
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
21
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
22
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
23
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
24
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
25
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
26
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
21
27
|
let uiTimer;
|
|
22
28
|
const HeaderStateful = props => {
|
|
23
29
|
var _state$domainStates, _headerProps$controlP, _headerProps$controlP2, _headerProps$controlP3, _outOfOfficeHeaderPro, _state$domainStates3;
|
|
@@ -27,19 +33,25 @@ const HeaderStateful = props => {
|
|
|
27
33
|
Event: _TelemetryConstants.TelemetryEvent.UXHeaderStart
|
|
28
34
|
});
|
|
29
35
|
}, []);
|
|
30
|
-
const
|
|
36
|
+
const _useChatContextStore = (0, _useChatContextStore3.default)(),
|
|
37
|
+
_useChatContextStore2 = _slicedToArray(_useChatContextStore, 2),
|
|
38
|
+
state = _useChatContextStore2[0],
|
|
39
|
+
dispatch = _useChatContextStore2[1];
|
|
31
40
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
const _useChatAdapterStore = (0, _useChatAdapterStore3.default)(),
|
|
42
|
+
_useChatAdapterStore2 = _slicedToArray(_useChatAdapterStore, 1),
|
|
43
|
+
adapter = _useChatAdapterStore2[0];
|
|
44
|
+
const headerProps = props.headerProps,
|
|
45
|
+
outOfOfficeHeaderProps = props.outOfOfficeHeaderProps,
|
|
46
|
+
endChat = props.endChat;
|
|
38
47
|
//Setting OutOfOperatingHours Flag
|
|
39
48
|
// Initialize with the current state value to prevent visual flicker
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
const _useState = (0, _react.useState)(() => {
|
|
50
|
+
return state.appStates.conversationState === _ConversationState.ConversationState.Closed && state.appStates.outsideOperatingHours;
|
|
51
|
+
}),
|
|
52
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
53
|
+
outOfOperatingHours = _useState2[0],
|
|
54
|
+
setOutOfOperatingHours = _useState2[1];
|
|
43
55
|
const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
44
56
|
|
|
45
57
|
// For some reason state object is not getting updated values in this component
|
|
@@ -20,13 +20,28 @@ var _overridePropsOnMockIfApplicable = _interopRequireDefault(require("./common/
|
|
|
20
20
|
var _registerTelemetryLoggers = require("./common/registerTelemetryLoggers");
|
|
21
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
23
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
24
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
25
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
26
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
27
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
28
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
23
29
|
const LiveChatWidget = props => {
|
|
24
30
|
var _props$featureConfigP, _props$chatConfig, _props$chatConfig2;
|
|
25
31
|
const reducer = (0, _createReducer.createReducer)();
|
|
26
|
-
const
|
|
32
|
+
const _useReducer = (0, _react.useReducer)(reducer, (0, _LiveChatWidgetContextInitialState.getLiveChatWidgetContextInitialState)(props)),
|
|
33
|
+
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
34
|
+
state = _useReducer2[0],
|
|
35
|
+
dispatch = _useReducer2[1];
|
|
27
36
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
-
const
|
|
29
|
-
|
|
37
|
+
const _useState = (0, _react.useState)(undefined),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
adapter = _useState2[0],
|
|
40
|
+
setAdapter = _useState2[1];
|
|
41
|
+
const _useState3 = (0, _react.useState)(undefined),
|
|
42
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
43
|
+
facadeChatSDK = _useState4[0],
|
|
44
|
+
setFacadeChatSDK = _useState4[1];
|
|
30
45
|
const chatSDK = (0, _getMockChatSDKIfApplicable.getMockChatSDKIfApplicable)(props.chatSDK, props === null || props === void 0 ? void 0 : props.mock);
|
|
31
46
|
const disableReauthentication = ((_props$featureConfigP = props.featureConfigProps) === null || _props$featureConfigP === void 0 ? void 0 : _props$featureConfigP.disableReauthentication) === true;
|
|
32
47
|
(0, _overridePropsOnMockIfApplicable.default)(props);
|
|
@@ -34,8 +49,16 @@ const LiveChatWidget = props => {
|
|
|
34
49
|
throw new Error("chatConfig is required");
|
|
35
50
|
}
|
|
36
51
|
|
|
52
|
+
// Check configuration flags
|
|
37
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
-
const
|
|
54
|
+
const hasAuthClientFn = !!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && (_props$chatConfig = _props$chatConfig.LiveChatConfigAuthSettings) !== null && _props$chatConfig !== void 0 && _props$chatConfig.msdyn_javascriptclientfunction);
|
|
55
|
+
const persistentChatEnabled = (0, _liveChatConfigUtils.isPersistentChatEnabled)((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 || (_props$chatConfig2 = _props$chatConfig2.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig2 === void 0 ? void 0 : _props$chatConfig2.msdyn_conversationmode);
|
|
56
|
+
|
|
57
|
+
// isAuthenticatedChat determines if FacadeChatSDK should require authentication:
|
|
58
|
+
// REGULAR AUTH FLOW (config-based):
|
|
59
|
+
// - Persistent chat enabled ? always authenticated
|
|
60
|
+
// - Auth settings exist ? authenticated from start
|
|
61
|
+
const isAuthenticatedChat = persistentChatEnabled || hasAuthClientFn;
|
|
39
62
|
if (!facadeChatSDK) {
|
|
40
63
|
var _props$mock;
|
|
41
64
|
setFacadeChatSDK(new _FacadeChatSDK.FacadeChatSDK({
|
package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js
CHANGED
|
@@ -44,7 +44,7 @@ const extractSasUrl = async attachment => {
|
|
|
44
44
|
}
|
|
45
45
|
return sasUrl;
|
|
46
46
|
};
|
|
47
|
-
const fetchBotAuthConfig = async (retries, interval) => {
|
|
47
|
+
const fetchBotAuthConfig = async (retries, interval, fallback) => {
|
|
48
48
|
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
49
49
|
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig
|
|
50
50
|
});
|
|
@@ -60,13 +60,23 @@ const fetchBotAuthConfig = async (retries, interval) => {
|
|
|
60
60
|
});
|
|
61
61
|
if (retries === 1) {
|
|
62
62
|
// Base Case
|
|
63
|
-
|
|
63
|
+
if (response !== undefined) {
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
66
|
+
if (fallback !== undefined) {
|
|
67
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.WARN, {
|
|
68
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound,
|
|
69
|
+
Description: `Failed to fetch bot auth config after maximum retries. Using fallback value: ${fallback}`
|
|
70
|
+
});
|
|
71
|
+
return fallback;
|
|
72
|
+
}
|
|
73
|
+
throw new Error("Failed to fetch bot auth config after maximum retries");
|
|
64
74
|
}
|
|
65
75
|
await delay(interval);
|
|
66
76
|
if (response !== undefined) {
|
|
67
77
|
return response;
|
|
68
78
|
}
|
|
69
|
-
return await fetchBotAuthConfig(--retries, interval);
|
|
79
|
+
return await fetchBotAuthConfig(--retries, interval, fallback);
|
|
70
80
|
};
|
|
71
81
|
let BotAuthActivitySubscriber = exports.BotAuthActivitySubscriber = /*#__PURE__*/function () {
|
|
72
82
|
function BotAuthActivitySubscriber() {
|
|
@@ -76,6 +86,7 @@ let BotAuthActivitySubscriber = exports.BotAuthActivitySubscriber = /*#__PURE__*
|
|
|
76
86
|
_defineProperty(this, "signInCardSeen", void 0);
|
|
77
87
|
_defineProperty(this, "fetchBotAuthConfigRetries", void 0);
|
|
78
88
|
_defineProperty(this, "fetchBotAuthConfigRetryInterval", void 0);
|
|
89
|
+
_defineProperty(this, "fallbackShowSignInCard", void 0);
|
|
79
90
|
this.signInCardSeen = new Set();
|
|
80
91
|
this.fetchBotAuthConfigRetries = 3;
|
|
81
92
|
this.fetchBotAuthConfigRetryInterval = 1000;
|
|
@@ -85,6 +96,11 @@ let BotAuthActivitySubscriber = exports.BotAuthActivitySubscriber = /*#__PURE__*
|
|
|
85
96
|
if (optionalParams.fetchBotAuthConfigRetryInterval) {
|
|
86
97
|
this.fetchBotAuthConfigRetryInterval = optionalParams.fetchBotAuthConfigRetryInterval;
|
|
87
98
|
}
|
|
99
|
+
this.fallbackShowSignInCard = optionalParams.fallbackShowSignInCard;
|
|
100
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
101
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig,
|
|
102
|
+
Description: `BotAuthActivitySubscriber initialized with fallbackShowSignInCard: ${optionalParams.fallbackShowSignInCard}`
|
|
103
|
+
});
|
|
88
104
|
}
|
|
89
105
|
return _createClass(BotAuthActivitySubscriber, [{
|
|
90
106
|
key: "applicable",
|
|
@@ -129,7 +145,7 @@ let BotAuthActivitySubscriber = exports.BotAuthActivitySubscriber = /*#__PURE__*
|
|
|
129
145
|
_omnichannelChatComponents.BroadcastService.postMessage(event);
|
|
130
146
|
}
|
|
131
147
|
try {
|
|
132
|
-
const response = await fetchBotAuthConfig(this.fetchBotAuthConfigRetries, this.fetchBotAuthConfigRetryInterval);
|
|
148
|
+
const response = await fetchBotAuthConfig(this.fetchBotAuthConfigRetries, this.fetchBotAuthConfigRetryInterval, this.fallbackShowSignInCard);
|
|
133
149
|
if (response === false) {
|
|
134
150
|
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
135
151
|
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderHideCard
|
|
@@ -140,9 +156,10 @@ let BotAuthActivitySubscriber = exports.BotAuthActivitySubscriber = /*#__PURE__*
|
|
|
140
156
|
});
|
|
141
157
|
return activity;
|
|
142
158
|
}
|
|
143
|
-
} catch {
|
|
159
|
+
} catch (e) {
|
|
144
160
|
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
145
|
-
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound
|
|
161
|
+
Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound,
|
|
162
|
+
ExceptionDetails: e instanceof Error ? e.message : JSON.stringify(e)
|
|
146
163
|
});
|
|
147
164
|
//this is to ensure listener continues waiting for response
|
|
148
165
|
if (this.signInCardSeen.has(signInId)) {
|
|
@@ -25,10 +25,8 @@ let HiddenAdaptiveCardActivitySubscriber = exports.HiddenAdaptiveCardActivitySub
|
|
|
25
25
|
value:
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
27
|
async function apply(activity) {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
attachment
|
|
31
|
-
} = activity;
|
|
28
|
+
const attachments = activity.attachments,
|
|
29
|
+
attachment = activity.attachment;
|
|
32
30
|
this.observer.next(false);
|
|
33
31
|
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
34
32
|
eventName: _TelemetryConstants.BroadcastEvent.NewMessageReceived,
|
|
@@ -44,10 +42,8 @@ let HiddenAdaptiveCardActivitySubscriber = exports.HiddenAdaptiveCardActivitySub
|
|
|
44
42
|
}, {
|
|
45
43
|
key: "applicable",
|
|
46
44
|
value: function applicable(activity) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
attachment
|
|
50
|
-
} = activity;
|
|
45
|
+
const attachments = activity.attachments,
|
|
46
|
+
attachment = activity.attachment;
|
|
51
47
|
|
|
52
48
|
// Use `attachments` or `attachment` (whichever exists)
|
|
53
49
|
const cards = attachments || [attachment];
|
|
@@ -57,9 +53,7 @@ let HiddenAdaptiveCardActivitySubscriber = exports.HiddenAdaptiveCardActivitySub
|
|
|
57
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
54
|
item => _Constants.Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
|
|
59
55
|
if (adaptiveCard && adaptiveCard.content) {
|
|
60
|
-
const
|
|
61
|
-
body
|
|
62
|
-
} = adaptiveCard.content;
|
|
56
|
+
const body = adaptiveCard.content.body;
|
|
63
57
|
if (Array.isArray(body)) {
|
|
64
58
|
// Check if all elements in `body` have `isVisible: false`
|
|
65
59
|
const allInvisible = body.every(item => item.isVisible === false);
|
|
@@ -9,6 +9,7 @@ var ChatWidgetEvents = /*#__PURE__*/function (ChatWidgetEvents) {
|
|
|
9
9
|
ChatWidgetEvents["FETCH_PERSISTENT_CHAT_HISTORY"] = "CHAT_WIDGET/FETCH_PERSISTENT_CHAT_HISTORY";
|
|
10
10
|
ChatWidgetEvents["NO_MORE_HISTORY_AVAILABLE"] = "CHAT_WIDGET/NO_MORE_HISTORY_AVAILABLE";
|
|
11
11
|
ChatWidgetEvents["HISTORY_LOAD_ERROR"] = "CHAT_WIDGET/HISTORY_LOAD_ERROR";
|
|
12
|
+
ChatWidgetEvents["HISTORY_BATCH_LOADED"] = "CHAT_WIDGET/HISTORY_BATCH_LOADED";
|
|
12
13
|
return ChatWidgetEvents;
|
|
13
14
|
}(ChatWidgetEvents || {});
|
|
14
15
|
var _default = exports.default = ChatWidgetEvents;
|
|
@@ -132,6 +132,12 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
132
132
|
}
|
|
133
133
|
const messagesDescOrder = (_ref = [...messages]) === null || _ref === void 0 ? void 0 : _ref.reverse();
|
|
134
134
|
this.processHistoryMessages(messagesDescOrder);
|
|
135
|
+
|
|
136
|
+
// Signal that a batch of history messages has been added to the store.
|
|
137
|
+
// LazyLoadActivity subscribes to this to apply scroll anchoring after render.
|
|
138
|
+
(0, _dispatchCustomEvent.default)(_ChatWidgetEvents.default.HISTORY_BATCH_LOADED, {
|
|
139
|
+
messageCount: messages.length
|
|
140
|
+
});
|
|
135
141
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
136
142
|
Event: _TelemetryConstants.TelemetryEvent.LCWPersistentHistoryPullCompleted,
|
|
137
143
|
Description: "History pull completed successfully",
|
|
@@ -196,10 +202,8 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
196
202
|
try {
|
|
197
203
|
var _this$facadeChatSDK;
|
|
198
204
|
const response = await ((_this$facadeChatSDK = this.facadeChatSDK) === null || _this$facadeChatSDK === void 0 ? void 0 : _this$facadeChatSDK.fetchPersistentConversationHistory(options));
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
nextPageToken: pageToken
|
|
202
|
-
} = response;
|
|
205
|
+
const messages = response.chatMessages,
|
|
206
|
+
pageToken = response.nextPageToken;
|
|
203
207
|
this.pageToken = pageToken || null;
|
|
204
208
|
if (pageToken === null) {
|
|
205
209
|
this.isLastPull = true;
|
|
@@ -240,6 +244,9 @@ let PersistentConversationHandler = /*#__PURE__*/function () {
|
|
|
240
244
|
value: function processMessageToActivity(message) {
|
|
241
245
|
try {
|
|
242
246
|
const activity = (0, _convertPersistentChatHistoryMessageToActivity.default)(message);
|
|
247
|
+
if (!activity) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
243
250
|
activity.id = activity.id || `activity-${this.count}`;
|
|
244
251
|
activity.channelData = {
|
|
245
252
|
...activity.channelData,
|
|
@@ -3,11 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.removeAuthTokenProvider = exports.handleAuthentication = exports.getAuthClientFunction = void 0;
|
|
6
|
+
exports.removeAuthTokenProvider = exports.isMidAuthEnabled = exports.handleAuthentication = exports.getAuthClientFunction = void 0;
|
|
7
7
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
8
8
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
9
9
|
var _Constants = require("../../../common/Constants");
|
|
10
10
|
var _utils = require("../../../common/utils");
|
|
11
|
+
/**
|
|
12
|
+
* Check if mid-auth is enabled based on chatConfig.
|
|
13
|
+
* Mid-auth flag lives under LiveWSAndLiveChatEngJoin.msdyn_authenticatedsigninoptional.
|
|
14
|
+
*/
|
|
15
|
+
const isMidAuthEnabled = chatConfig => {
|
|
16
|
+
var _chatConfig$LiveWSAnd, _value$toString, _value$toString$call$, _value$toString$call;
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
const value = chatConfig === null || chatConfig === void 0 || (_chatConfig$LiveWSAnd = chatConfig.LiveWSAndLiveChatEngJoin) === null || _chatConfig$LiveWSAnd === void 0 ? void 0 : _chatConfig$LiveWSAnd.msdyn_authenticatedsigninoptional;
|
|
19
|
+
return (value === null || value === void 0 || (_value$toString = value.toString) === null || _value$toString === void 0 || (_value$toString$call$ = (_value$toString$call = _value$toString.call(value)).toLowerCase) === null || _value$toString$call$ === void 0 ? void 0 : _value$toString$call$.call(_value$toString$call)) === "true";
|
|
20
|
+
};
|
|
21
|
+
exports.isMidAuthEnabled = isMidAuthEnabled;
|
|
11
22
|
const getAuthClientFunction = chatConfig => {
|
|
12
23
|
let authClientFunction = undefined;
|
|
13
24
|
if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
|
|
@@ -19,12 +30,17 @@ const getAuthClientFunction = chatConfig => {
|
|
|
19
30
|
exports.getAuthClientFunction = getAuthClientFunction;
|
|
20
31
|
const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
21
32
|
var _chatSDK$chatSDKConfi;
|
|
33
|
+
const midAuthEnabled = isMidAuthEnabled(chatConfig);
|
|
22
34
|
const authClientFunction = getAuthClientFunction(chatConfig);
|
|
23
35
|
if (getAuthToken && authClientFunction) {
|
|
24
36
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
25
37
|
Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled
|
|
26
38
|
});
|
|
27
|
-
|
|
39
|
+
|
|
40
|
+
// Only pass isMidAuthEnabled option when mid-auth is enabled.
|
|
41
|
+
const token = midAuthEnabled ? await getAuthToken(authClientFunction, {
|
|
42
|
+
isMidAuthEnabled: midAuthEnabled
|
|
43
|
+
}) : await getAuthToken(authClientFunction);
|
|
28
44
|
if (!(0, _utils.isNullOrEmptyString)(token)) {
|
|
29
45
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
46
|
chatSDK.setAuthTokenProvider(async () => {
|
|
@@ -35,8 +51,21 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
35
51
|
"token": token
|
|
36
52
|
};
|
|
37
53
|
} else {
|
|
38
|
-
//
|
|
39
|
-
//
|
|
54
|
+
// For mid-auth scenarios, empty token means "user not signed in" - this is expected behavior.
|
|
55
|
+
// Return result: true with empty token so caller can decide to proceed unauthenticated.
|
|
56
|
+
if (midAuthEnabled) {
|
|
57
|
+
// Expected behavior for mid-auth: user not signed in
|
|
58
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
59
|
+
Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled,
|
|
60
|
+
Description: "Mid-auth: token provider returned empty; user not signed in"
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
"result": true,
|
|
64
|
+
"token": null
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// For non-mid-auth scenarios, empty token is an error
|
|
40
69
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
41
70
|
Event: _TelemetryConstants.TelemetryEvent.ReceivedNullOrEmptyToken
|
|
42
71
|
});
|
|
@@ -46,6 +75,17 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
46
75
|
var _chatSDK$chatSDKConfi2;
|
|
47
76
|
const token = await ((_chatSDK$chatSDKConfi2 = chatSDK.chatSDKConfig) === null || _chatSDK$chatSDKConfi2 === void 0 ? void 0 : _chatSDK$chatSDKConfi2.getAuthToken());
|
|
48
77
|
if ((0, _utils.isNullOrEmptyString)(token)) {
|
|
78
|
+
// For mid-auth scenarios, empty token from SDK's getAuthToken is also expected
|
|
79
|
+
if (midAuthEnabled) {
|
|
80
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
81
|
+
Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled,
|
|
82
|
+
Description: "Mid-auth: SDK getAuthToken returned empty; user not signed in"
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
"result": true,
|
|
86
|
+
"token": null
|
|
87
|
+
};
|
|
88
|
+
}
|
|
49
89
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
50
90
|
Event: _TelemetryConstants.TelemetryEvent.ReceivedNullOrEmptyToken,
|
|
51
91
|
Description: "getAuthToken in chat SDK returns empty string"
|