@microsoft/omnichannel-chat-widget 0.1.0-main.df02f14 → 0.1.0-main.df142b8

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