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

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 +70 -30
  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 +156 -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 +71 -16
  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 +155 -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,17 @@ 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
+ var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
120
+ // Set custom context params
128
121
  setCustomContextParams(chatSDK);
129
- optionalParams = Object.assign({}, params, optionalParams);
130
- await chatSDK.startChat(optionalParams);
122
+ const defaultOptionalParams = {
123
+ sendDefaultInitContext: true,
124
+ isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
125
+ portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
126
+ };
127
+ const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
128
+ await chatSDK.startChat(startChatOptionalParams);
131
129
  isStartChatSuccessful = true;
132
130
  } catch (error) {
133
131
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
@@ -136,17 +134,17 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
136
134
  exception: `Failed to setup startChat: ${error}`
137
135
  }
138
136
  });
139
- isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
137
+ isStartChatSuccessful = false;
138
+ // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
140
139
  // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
141
-
142
140
  dispatch({
143
141
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
144
142
  payload: ConversationState.Closed
145
143
  });
146
144
  return;
147
- } // New adapter creation
148
-
145
+ }
149
146
 
147
+ // New adapter creation
150
148
  const newAdapter = await createAdapter(chatSDK);
151
149
  setAdapter(newAdapter);
152
150
  const chatToken = await chatSDK.getChatToken();
@@ -155,35 +153,41 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
155
153
  payload: chatToken
156
154
  });
157
155
  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
156
  if (persistedState) {
160
157
  dispatch({
161
158
  type: LiveChatWidgetActionType.SET_WIDGET_STATE,
162
159
  payload: persistedState
163
160
  });
164
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
161
+ setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
165
162
  return;
166
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
-
163
+ }
168
164
 
165
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
169
166
  const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
170
167
  dispatch({
171
168
  type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
172
169
  payload: liveChatContext
173
- }); // Set post chat context in state, no survey load
170
+ });
174
171
 
175
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch); // Updating chat session detail for telemetry
172
+ // Set post chat context in state, no survey load
173
+ setPostChatContextAndLoadSurvey(chatSDK, dispatch);
176
174
 
177
- await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
175
+ // Updating chat session detail for telemetry
176
+ await updateSessionDataForTelemetry(chatSDK, dispatch);
178
177
 
178
+ // Set app state to Active
179
179
  if (isStartChatSuccessful) {
180
180
  ActivityStreamHandler.uncork();
181
+ // Update start chat failure app state if chat loads successfully
182
+ dispatch({
183
+ type: LiveChatWidgetActionType.SET_START_CHAT_FAILING,
184
+ payload: false
185
+ });
181
186
  dispatch({
182
187
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
183
188
  payload: ConversationState.Active
184
189
  });
185
190
  }
186
-
187
191
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
188
192
  Event: TelemetryEvent.WidgetLoadComplete,
189
193
  Description: "Widget load complete",
@@ -196,8 +200,8 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
196
200
  Exception: `Widget load Failed: ${ex}`
197
201
  }
198
202
  });
199
- NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex); // eslint-disable-next-line @typescript-eslint/no-explicit-any
200
-
203
+ NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex);
204
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
201
205
  if (ex.message === ChatSDKError.WidgetUseOutsideOperatingHour) {
202
206
  dispatch({
203
207
  type: LiveChatWidgetActionType.SET_OUTSIDE_OPERATING_HOURS,
@@ -207,27 +211,36 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
207
211
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
208
212
  payload: ConversationState.OutOfOffice
209
213
  });
214
+ return;
210
215
  }
216
+ // Set app state to failing start chat
217
+ dispatch({
218
+ type: LiveChatWidgetActionType.SET_START_CHAT_FAILING,
219
+ payload: true
220
+ });
221
+ // Show the loading pane in other cases for failure, this will help for both hideStartChatButton case
222
+ dispatch({
223
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
224
+ payload: ConversationState.Loading
225
+ });
211
226
  } finally {
212
227
  optionalParams = {};
213
228
  widgetInstanceId = "";
214
229
  }
215
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
216
-
230
+ };
217
231
 
232
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
218
233
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
219
234
  var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
220
-
221
235
  // By pass this function in case of popout chat
222
- if (state.appStates.skipChatButtonRendering === true) {
236
+ if (state.appStates.hideStartChatButton === true) {
223
237
  return false;
224
238
  }
239
+ 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
240
 
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
-
241
+ //Connect to only active chat session
228
242
  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
243
  var _persistedState$domai7;
230
-
231
244
  dispatch({
232
245
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
233
246
  payload: ConversationState.Loading
@@ -240,18 +253,15 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
240
253
  } else {
241
254
  return false;
242
255
  }
243
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
244
-
256
+ };
245
257
 
258
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
259
  const setCustomContextParams = chatSDK => {
247
260
  var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
248
-
249
261
  // Add custom context only for unauthenticated chat
250
262
  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
263
  if (!isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
253
264
  var _persistedState$domai9, _persistedState$domai10;
254
-
255
265
  if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
256
266
  const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
257
267
  TelemetryHelper.logSDKEvent(LogLevel.WARN, {
@@ -262,11 +272,67 @@ const setCustomContextParams = chatSDK => {
262
272
  });
263
273
  throw new Error(errorMessage);
264
274
  }
265
-
266
275
  optionalParams = Object.assign({}, optionalParams, {
267
276
  customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
268
277
  });
269
278
  }
270
279
  };
271
280
 
272
- export { prepareStartChat, initStartChat, setPreChatAndInitiateChat };
281
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
282
+ const handleAuthenticationIfEnabled = async (chatSDK, props) => {
283
+ //For auth chat
284
+ if (props.getAuthToken) {
285
+ const authClientFunction = getAuthClientFunction(props.chatConfig);
286
+ if (authClientFunction) {
287
+ // set auth token to chat sdk before start chat
288
+ const authSuccess = await handleAuthentication(chatSDK, props.chatConfig, props.getAuthToken);
289
+ if (!authSuccess) {
290
+ return false;
291
+ }
292
+ return true;
293
+ }
294
+ }
295
+ return true;
296
+ };
297
+
298
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
299
+ const checkIfConversationStillValid = async (chatSDK, props, requestId, dispatch) => {
300
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
301
+ let conversationDetails = undefined;
302
+
303
+ // Show Loading screen during auth check and start chat calls
304
+ dispatch({
305
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
306
+ payload: ConversationState.Loading
307
+ });
308
+ const authSucceed = await handleAuthenticationIfEnabled(chatSDK, props);
309
+ if (!authSucceed) {
310
+ return false;
311
+ }
312
+
313
+ //Preserve old requestId
314
+ const oldRequestId = chatSDK.requestId;
315
+ try {
316
+ chatSDK.requestId = requestId;
317
+ conversationDetails = await chatSDK.getConversationDetails();
318
+ if (Object.keys(conversationDetails).length === 0) {
319
+ chatSDK.requestId = oldRequestId;
320
+ return false;
321
+ }
322
+ if (conversationDetails.state === LiveWorkItemState.Closed || conversationDetails.state === LiveWorkItemState.WrapUp) {
323
+ chatSDK.requestId = oldRequestId;
324
+ return false;
325
+ }
326
+ return true;
327
+ } catch (erorr) {
328
+ TelemetryHelper.logActionEvent(LogLevel.ERROR, {
329
+ Event: TelemetryEvent.GetConversationDetailsException,
330
+ ExceptionDetails: {
331
+ exception: `Conversation is not valid: ${erorr}`
332
+ }
333
+ });
334
+ chatSDK.requestId = oldRequestId;
335
+ return false;
336
+ }
337
+ };
338
+ 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