@microsoft/omnichannel-chat-widget 0.1.0-main.60c3e17 → 0.1.0-main.6d898a1

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