@microsoft/omnichannel-chat-widget 0.1.0-main.592da7b → 0.1.0-main.5d6a45b

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.
Files changed (300) hide show
  1. package/lib/cjs/assets/Icons.js +4 -2
  2. package/lib/cjs/common/Constants.js +24 -169
  3. package/lib/cjs/common/KeyCodes.js +3 -4
  4. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
  5. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  6. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  7. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  8. package/lib/cjs/common/telemetry/TelemetryConstants.js +34 -23
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +19 -58
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  14. package/lib/cjs/common/utils.js +65 -93
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  17. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  18. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -33
  19. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  20. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -37
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  22. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  23. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  24. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  26. package/lib/cjs/components/headerstateful/HeaderStateful.js +20 -32
  27. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  28. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +39 -0
  29. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +20 -0
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +34 -0
  32. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +64 -0
  33. package/lib/cjs/components/livechatwidget/common/Deferred.js +37 -0
  34. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  35. package/lib/cjs/components/livechatwidget/common/createAdapter.js +10 -9
  36. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  37. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  38. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -43
  39. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  40. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +118 -46
  41. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  42. package/lib/cjs/components/livechatwidget/common/endChat.js +92 -49
  43. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  44. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  45. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  46. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +27 -53
  47. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +76 -129
  48. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  49. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -15
  50. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  51. package/lib/cjs/components/livechatwidget/common/startChat.js +213 -125
  52. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  53. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  54. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  55. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +272 -247
  56. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +19 -19
  57. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  58. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  59. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  60. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  61. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  62. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  63. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  64. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  65. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -42
  66. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  67. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  68. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +29 -34
  69. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  70. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  71. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  72. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  73. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -17
  74. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  75. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
  76. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  77. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  120. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  121. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  122. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  123. package/lib/cjs/contexts/common/ConversationState.js +3 -3
  124. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +30 -28
  125. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +12 -13
  126. package/lib/cjs/contexts/createReducer.js +159 -105
  127. package/lib/cjs/controller/componentController.js +4 -33
  128. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  129. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  130. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  131. package/lib/cjs/index.js +0 -5
  132. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  133. package/lib/esm/assets/Icons.js +2 -1
  134. package/lib/esm/common/Constants.js +21 -156
  135. package/lib/esm/common/KeyCodes.js +3 -3
  136. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  137. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  138. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  139. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  140. package/lib/esm/common/telemetry/TelemetryConstants.js +38 -20
  141. package/lib/esm/common/telemetry/TelemetryHelper.js +19 -46
  142. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  143. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  144. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  145. package/lib/esm/common/utils.js +60 -50
  146. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  147. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  148. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  149. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -14
  150. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
  151. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  152. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  153. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  154. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  155. package/lib/esm/components/headerstateful/HeaderStateful.js +20 -17
  156. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  157. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -0
  158. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +13 -0
  159. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  160. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +27 -0
  161. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +57 -0
  162. package/lib/esm/components/livechatwidget/common/Deferred.js +30 -0
  163. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  164. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -4
  165. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  166. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  167. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  168. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  169. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +120 -33
  170. package/lib/esm/components/livechatwidget/common/endChat.js +94 -34
  171. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  172. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  173. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  174. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +30 -20
  175. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +77 -111
  176. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  177. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -7
  178. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  179. package/lib/esm/components/livechatwidget/common/startChat.js +211 -99
  180. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  181. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  182. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +276 -185
  183. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +19 -7
  184. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  185. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  186. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  187. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  188. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  189. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  190. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  191. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  192. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -26
  193. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  194. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  195. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +27 -9
  196. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  197. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  198. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  199. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  200. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -13
  201. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  202. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
  203. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  204. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -3
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  247. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  248. package/lib/esm/contexts/ChatContextStore.js +2 -1
  249. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  250. package/lib/esm/contexts/common/ConversationState.js +3 -3
  251. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +30 -28
  252. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +12 -9
  253. package/lib/esm/contexts/createReducer.js +159 -102
  254. package/lib/esm/controller/componentController.js +5 -4
  255. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  256. package/lib/esm/hooks/useChatContextStore.js +0 -4
  257. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  258. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  259. package/lib/types/assets/Icons.d.ts +1 -0
  260. package/lib/types/common/Constants.d.ts +14 -0
  261. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  262. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  263. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  264. package/lib/types/common/telemetry/TelemetryConstants.d.ts +21 -5
  265. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  266. package/lib/types/common/utils.d.ts +7 -3
  267. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  268. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  269. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  270. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  271. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  272. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  273. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  274. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  275. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  276. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -7
  277. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  278. package/lib/types/components/livechatwidget/common/startChat.d.ts +6 -3
  279. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +2 -1
  280. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +5 -2
  281. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  282. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  283. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  284. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  285. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  286. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -2
  287. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  288. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  289. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  290. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  291. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  292. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  293. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  294. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  295. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  296. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  297. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -3
  298. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +30 -27
  299. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  300. package/package.json +5 -4
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shareObservable = shareObservable;
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ function shareObservable(observable) {
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ let observers = [];
11
+
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ let subscription;
14
+
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ return new window.Observable(observer => {
17
+ if (!subscription) {
18
+ subscription = observable.subscribe({
19
+ complete() {
20
+ observers.forEach(observer => observer.complete());
21
+ },
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ error(err) {
24
+ observers.forEach(observer => observer.error(err));
25
+ },
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ next(value) {
28
+ observers.forEach(observer => observer.next(value));
29
+ }
30
+ });
31
+ }
32
+ observers.push(observer);
33
+ return () => {
34
+ observers = observers.filter(o => o !== observer);
35
+ if (!observers.length) {
36
+ subscription.unsubscribe();
37
+ subscription = null;
38
+ }
39
+ };
40
+ });
41
+ }
@@ -3,83 +3,70 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setupChatState = exports.prepareStartChat = exports.initStartChat = void 0;
7
-
8
- var _Constants = require("../../../common/Constants");
9
-
6
+ exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = exports.checkIfConversationStillValid = void 0;
10
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
-
8
+ var _Constants = require("../../../common/Constants");
9
+ var _utils = require("../../../common/utils");
10
+ var _authHelper = require("./authHelper");
11
+ var _ActivityStreamHandler = require("./ActivityStreamHandler");
12
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
12
13
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
-
14
- var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
-
16
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
-
18
15
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
19
-
20
16
  var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
21
-
22
17
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
23
-
24
18
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
25
-
26
19
  var _createAdapter = require("./createAdapter");
27
-
28
20
  var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
29
-
30
- var _utils = require("../../../common/utils");
31
-
32
21
  var _reconnectChatHelper = require("./reconnectChatHelper");
33
-
34
22
  var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
35
-
36
23
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
37
-
38
- var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
39
-
40
24
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ let optionalParams = {};
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ let widgetInstanceId;
42
28
 
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
30
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
44
- var _props$reconnectChatP;
31
+ var _props$controlProps;
32
+ optionalParams = {}; //Resetting to ensure no stale values
33
+ widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId;
45
34
 
35
+ // Can connect to existing chat session
46
36
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
47
37
  return;
48
- } // Redirecting if unauthenticated reconnect chat expired
49
-
38
+ }
39
+ await (0, _reconnectChatHelper.handleChatReconnect)(chatSDK, props, dispatch, setAdapter, initStartChat, state);
50
40
 
51
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
52
- var _props$reconnectChatP2, _props$reconnectChatP3;
41
+ // If chat reconnect has kicked in chat state will become Active or Reconnect. So just exit, else go next
42
+ if (state.appStates.conversationState === _ConversationState.ConversationState.Active || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat) {
43
+ return;
44
+ }
53
45
 
54
- await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, 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);
55
- } else {
56
- // Getting reconnectId for authenticated chat
57
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
46
+ // Setting Proactive chat settings
47
+ const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
48
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
58
49
 
59
- if (reconnectId) {
60
- dispatch({
61
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
62
- payload: reconnectId
63
- });
64
- dispatch({
65
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
66
- payload: _ConversationState.ConversationState.ReconnectChat
67
- });
68
- } else {
69
- setCustomContextParams(props, chatSDK);
70
- setupChatState(chatSDK, dispatch, setAdapter, state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat, state.appStates.proactiveChatStates.proactiveChatEnablePrechat);
71
- }
72
- }
50
+ //Setting PreChat and intiate chat
51
+ setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, undefined, props);
73
52
  };
74
53
 
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
55
  exports.prepareStartChat = prepareStartChat;
56
+ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState, state, props) => {
57
+ //Handle reconnect scenario
58
+ if (state) {
59
+ await (0, _reconnectChatHelper.handleChatReconnect)(chatSDK, props, dispatch, setAdapter, initStartChat, state);
60
+ // If chat reconnect has kicked in chat state will become Active or Reconnect. So just exit, else go next
61
+ if (state.appStates.conversationState === _ConversationState.ConversationState.Active || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat) {
62
+ return;
63
+ }
64
+ }
76
65
 
77
- const setupChatState = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
78
- // Getting PreChat Survey Context
66
+ // Getting prechat Survey Context
79
67
  const parseToJson = false;
80
68
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
81
69
  const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
82
-
83
70
  if (showPrechat) {
84
71
  dispatch({
85
72
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
@@ -89,28 +76,44 @@ const setupChatState = async (chatSDK, dispatch, setAdapter, isProactiveChat, pr
89
76
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
90
77
  payload: _ConversationState.ConversationState.Prechat
91
78
  });
92
- } else {
93
- dispatch({
94
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
95
- payload: _ConversationState.ConversationState.Loading
96
- });
97
- await initStartChat(chatSDK, dispatch, setAdapter);
79
+ return;
98
80
  }
99
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
81
 
82
+ //Initiate start chat
83
+ dispatch({
84
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
85
+ payload: _ConversationState.ConversationState.Loading
86
+ });
87
+ const optionalParams = {
88
+ isProactiveChat
89
+ };
90
+ await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter, optionalParams);
91
+ };
101
92
 
102
- exports.setupChatState = setupChatState;
103
-
104
- const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
95
+ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
105
96
  try {
106
97
  var _newAdapter$activity$, _TelemetryTimers$Widg;
107
-
98
+ //Start widget load timer
99
+ _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
100
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
101
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadStarted,
102
+ Description: "Widget loading started"
103
+ });
104
+ const authClientFunction = (0, _authHelper.getAuthClientFunction)(chatConfig);
105
+ if (getAuthToken && authClientFunction) {
106
+ // set auth token to chat sdk before start chat
107
+ const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, getAuthToken);
108
+ if (!authSuccess) {
109
+ return;
110
+ }
111
+ }
108
112
  let isStartChatSuccessful = false;
109
113
 
114
+ //Check if chat retrieved from cache
110
115
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
111
116
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
112
-
113
- // Broadcasting limited cached chat details
114
117
  _omnichannelChatComponents.BroadcastService.postMessage({
115
118
  eventName: _TelemetryConstants.BroadcastEvent.ChatRetrievedFromCache,
116
119
  payload: {
@@ -119,16 +122,15 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
119
122
  }
120
123
  });
121
124
  }
122
-
123
125
  try {
124
- _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
125
-
126
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
127
- Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
128
- });
129
-
130
- optionalParams = Object.assign({}, params, optionalParams);
131
- await chatSDK.startChat(optionalParams);
126
+ // Set custom context params
127
+ setCustomContextParams(chatSDK);
128
+ const defaultOptionalParams = {
129
+ sendDefaultInitContext: true,
130
+ isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat)
131
+ };
132
+ const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
133
+ await chatSDK.startChat(startChatOptionalParams);
132
134
  isStartChatSuccessful = true;
133
135
  } catch (error) {
134
136
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
@@ -137,49 +139,60 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
137
139
  exception: `Failed to setup startChat: ${error}`
138
140
  }
139
141
  });
140
-
141
142
  isStartChatSuccessful = false;
143
+ // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
144
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
145
+ dispatch({
146
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
147
+ payload: _ConversationState.ConversationState.Closed
148
+ });
149
+ return;
142
150
  }
143
151
 
152
+ // New adapter creation
144
153
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
145
154
  setAdapter(newAdapter);
146
155
  const chatToken = await chatSDK.getChatToken();
156
+ dispatch({
157
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
158
+ payload: chatToken
159
+ });
147
160
  newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe((0, _newMessageEventHandler.createOnNewAdapterActivityHandler)(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
161
+ if (persistedState) {
162
+ dispatch({
163
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
164
+ payload: persistedState
165
+ });
166
+ (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
167
+ return;
168
+ }
169
+
170
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
171
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
172
+ dispatch({
173
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
174
+ payload: liveChatContext
175
+ });
148
176
 
149
- if (!persistedState) {
150
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
152
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
153
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
154
- dispatch({
155
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
156
- payload: chatToken
157
- });
158
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
+ // Set post chat context in state, no survey load
178
+ (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
159
179
 
180
+ // Updating chat session detail for telemetry
181
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch);
160
182
 
161
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
183
+ // Set app state to Active
184
+ if (isStartChatSuccessful) {
185
+ _ActivityStreamHandler.ActivityStreamHandler.uncork();
186
+ // Update start chat failure app state if chat loads successfully
162
187
  dispatch({
163
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
164
- payload: liveChatContext
188
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
189
+ payload: false
165
190
  });
166
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
167
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
168
-
169
- if (isStartChatSuccessful) {
170
- dispatch({
171
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
172
- payload: _ConversationState.ConversationState.Active
173
- });
174
- }
175
- } else {
176
191
  dispatch({
177
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
178
- payload: persistedState
192
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
193
+ payload: _ConversationState.ConversationState.Active
179
194
  });
180
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
181
195
  }
182
-
183
196
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
184
197
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
185
198
  Description: "Widget load complete",
@@ -192,10 +205,8 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
192
205
  Exception: `Widget load Failed: ${ex}`
193
206
  }
194
207
  });
195
-
196
- _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.Connection, "Start Chat Failed: " + ex); // eslint-disable-next-line @typescript-eslint/no-explicit-any
197
-
198
-
208
+ _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.Connection, "Start Chat Failed: " + ex);
209
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
199
210
  if (ex.message === _Constants.ChatSDKError.WidgetUseOutsideOperatingHour) {
200
211
  dispatch({
201
212
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_OUTSIDE_OPERATING_HOURS,
@@ -205,25 +216,37 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
205
216
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
206
217
  payload: _ConversationState.ConversationState.OutOfOffice
207
218
  });
219
+ return;
208
220
  }
221
+ // Set app state to failing start chat
222
+ dispatch({
223
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
224
+ payload: true
225
+ });
226
+ // Show the loading pane in other cases for failure, this will help for both hideStartChatButton case
227
+ dispatch({
228
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
229
+ payload: _ConversationState.ConversationState.Loading
230
+ });
209
231
  } finally {
210
232
  optionalParams = {};
233
+ widgetInstanceId = "";
211
234
  }
212
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
213
-
235
+ };
214
236
 
237
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
215
238
  exports.initStartChat = initStartChat;
216
-
217
239
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
218
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _DataStoreManager$cli, _persistedState$domai6;
219
-
220
- const widgetStateEventName = (0, _utils.getWidgetCacheId)((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) ?? "");
221
- const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
222
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
240
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
241
+ // By pass this function in case of popout chat
242
+ if (state.appStates.hideStartChatButton === true) {
243
+ return false;
244
+ }
245
+ const persistedState = (0, _utils.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) ?? "");
223
246
 
224
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai6 = persistedState.domainStates) !== null && _persistedState$domai6 !== void 0 && _persistedState$domai6.liveChatContext) {
247
+ //Connect to only active chat session
248
+ if (persistedState && !(0, _utils.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.ConversationState.Active) {
225
249
  var _persistedState$domai7;
226
-
227
250
  dispatch({
228
251
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
229
252
  payload: _ConversationState.ConversationState.Loading
@@ -231,26 +254,91 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
231
254
  const optionalParams = {
232
255
  liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
233
256
  };
234
- await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
257
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
235
258
  return true;
236
259
  } else {
237
260
  return false;
238
261
  }
239
262
  };
240
263
 
241
- const setCustomContextParams = (props, chatSDK) => {
242
- var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _DataStoreManager$cli2, _props$chatConfig, _persistedState$domai8;
264
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
+ const setCustomContextParams = chatSDK => {
266
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
267
+ // Add custom context only for unauthenticated chat
268
+ const persistedState = (0, _utils.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 ?? "");
269
+ if (!(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
270
+ var _persistedState$domai9, _persistedState$domai10;
271
+ if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
272
+ const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
273
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.WARN, {
274
+ Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
275
+ ExceptionDetails: {
276
+ exception: errorMessage
277
+ }
278
+ });
279
+ throw new Error(errorMessage);
280
+ }
281
+ optionalParams = Object.assign({}, optionalParams, {
282
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
283
+ });
284
+ }
285
+ };
243
286
 
244
- // Add custom context if any only for unauthenticated chat
245
- const widgetStateEventName = (0, _utils.getWidgetCacheId)((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) ?? "");
246
- const widgetStateFromCache = (_DataStoreManager$cli2 = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli2 === void 0 ? void 0 : _DataStoreManager$cli2.getData(widgetStateEventName, "localStorage");
247
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
287
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
288
+ const handleAuthenticationIfEnabled = async (chatSDK, props) => {
289
+ //For auth chat
290
+ if (props.getAuthToken) {
291
+ const authClientFunction = (0, _authHelper.getAuthClientFunction)(props.chatConfig);
292
+ if (authClientFunction) {
293
+ // set auth token to chat sdk before start chat
294
+ const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
295
+ if (!authSuccess) {
296
+ return false;
297
+ }
298
+ return true;
299
+ }
300
+ }
301
+ return true;
302
+ };
248
303
 
249
- if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && persistedState !== null && persistedState !== void 0 && (_persistedState$domai8 = persistedState.domainStates) !== null && _persistedState$domai8 !== void 0 && _persistedState$domai8.customContext) {
250
- var _persistedState$domai9;
304
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
305
+ const checkIfConversationStillValid = async (chatSDK, props, requestId, dispatch) => {
306
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
307
+ let conversationDetails = undefined;
308
+
309
+ // Show Loading screen during auth check and start chat calls
310
+ dispatch({
311
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
312
+ payload: _ConversationState.ConversationState.Loading
313
+ });
314
+ const authSucceed = await handleAuthenticationIfEnabled(chatSDK, props);
315
+ if (!authSucceed) {
316
+ return false;
317
+ }
251
318
 
252
- optionalParams = Object.assign({}, optionalParams, {
253
- customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
319
+ //Preserve old requestId
320
+ const oldRequestId = chatSDK.requestId;
321
+ try {
322
+ chatSDK.requestId = requestId;
323
+ conversationDetails = await chatSDK.getConversationDetails();
324
+ if (Object.keys(conversationDetails).length === 0) {
325
+ chatSDK.requestId = oldRequestId;
326
+ return false;
327
+ }
328
+ if (conversationDetails.state === _Constants.LiveWorkItemState.Closed || conversationDetails.state === _Constants.LiveWorkItemState.WrapUp) {
329
+ chatSDK.requestId = oldRequestId;
330
+ return false;
331
+ }
332
+ return true;
333
+ } catch (erorr) {
334
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
335
+ Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsException,
336
+ ExceptionDetails: {
337
+ exception: `Conversation is not valid: ${erorr}`
338
+ }
254
339
  });
340
+ chatSDK.requestId = oldRequestId;
341
+ return false;
255
342
  }
256
- };
343
+ };
344
+ exports.checkIfConversationStillValid = checkIfConversationStillValid;
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.startProactiveChat = void 0;
7
-
8
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _ConversationState = require("../../../contexts/common/ConversationState");
11
-
12
9
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
13
-
14
10
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
15
-
16
11
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
17
-
18
12
  // Defines startProactiveChat callback
19
13
  const startProactiveChat = (dispatch, notificationConfig, enablePreChat, inNewWindow) => {
20
14
  dispatch({
@@ -29,12 +23,10 @@ const startProactiveChat = (dispatch, notificationConfig, enablePreChat, inNewWi
29
23
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
30
24
  payload: _ConversationState.ConversationState.ProactiveChat
31
25
  });
32
-
33
26
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
34
27
  Event: _TelemetryConstants.TelemetryEvent.IncomingProactiveChatScreenLoaded,
35
28
  ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers.LcwLoadToChatButtonTimer.milliSecondsElapsed,
36
29
  Description: "Incoming proactive chat loaded."
37
30
  });
38
31
  };
39
-
40
32
  exports.startProactiveChat = startProactiveChat;
@@ -4,39 +4,30 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.updateSessionDataForTelemetry = void 0;
7
-
8
7
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
9
-
10
8
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
11
-
12
9
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
13
-
14
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
11
  const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
16
12
  if (chatSDK) {
17
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
14
  const chatSession = await chatSDK.getCurrentLiveChatContext();
19
-
20
15
  const telemetryData = _TelemetryHelper.TelemetryHelper.addSessionDataToTelemetry(chatSession, _TelemetryManager.TelemetryManager.InternalTelemetryData);
21
-
22
16
  dispatch({
23
17
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
24
18
  payload: telemetryData
25
19
  });
26
20
  await updateConversationDataForTelemetry(chatSDK, dispatch);
27
21
  }
28
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
-
22
+ };
30
23
 
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
25
  exports.updateSessionDataForTelemetry = updateSessionDataForTelemetry;
32
-
33
26
  const updateConversationDataForTelemetry = async (chatSDK, dispatch) => {
34
27
  if (chatSDK) {
35
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
29
  const liveWorkItem = await chatSDK.getConversationDetails();
37
-
38
30
  const telemetryData = _TelemetryHelper.TelemetryHelper.addConversationDataToTelemetry(liveWorkItem, _TelemetryManager.TelemetryManager.InternalTelemetryData);
39
-
40
31
  dispatch({
41
32
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
42
33
  payload: telemetryData