@microsoft/omnichannel-chat-widget 0.1.0-main.02fa07b → 0.1.0-main.0698dbf

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