@microsoft/omnichannel-chat-widget 0.1.0-main.07a2a56 → 0.1.0-main.0c0fd47

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