@microsoft/omnichannel-chat-widget 0.1.0-main.e67738e → 0.1.0-main.ebfc563

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