@microsoft/omnichannel-chat-widget 0.1.0-main.a60f242 → 0.1.0-main.a7ac5de

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