@microsoft/omnichannel-chat-widget 0.1.0-main.a27ec4b → 0.1.0-main.a3902df

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