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

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 (262) hide show
  1. package/lib/cjs/common/Constants.js +0 -167
  2. package/lib/cjs/common/KeyCodes.js +0 -3
  3. package/lib/cjs/common/contextDataStore/DataStoreManager.js +0 -4
  4. package/lib/cjs/common/storage/default/defaultCacheManager.js +24 -0
  5. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  6. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +21 -22
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +16 -57
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +0 -31
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  13. package/lib/cjs/common/utils.js +18 -105
  14. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  15. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  16. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -32
  17. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  18. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -36
  19. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  20. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  21. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  22. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  23. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  24. package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -27
  25. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  26. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +2 -9
  27. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -5
  28. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -11
  29. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +11 -19
  30. package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -10
  31. package/lib/cjs/components/livechatwidget/common/authHelper.js +13 -15
  32. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
  33. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  34. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -14
  35. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
  36. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +55 -36
  37. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  38. package/lib/cjs/components/livechatwidget/common/endChat.js +8 -33
  39. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  40. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  41. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  42. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +16 -54
  43. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +36 -66
  44. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  45. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
  46. package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
  47. package/lib/cjs/components/livechatwidget/common/startChat.js +55 -86
  48. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  49. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  50. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +125 -196
  51. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +4 -17
  52. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  53. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  54. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  55. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  56. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  57. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  58. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  59. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +8 -36
  60. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  61. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -24
  62. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -37
  63. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
  64. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  65. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +9 -26
  66. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -17
  67. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  68. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -15
  69. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  70. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -4
  71. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -4
  72. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  73. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  74. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  75. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  76. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -19
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -60
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -12
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +6 -28
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +16 -19
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  112. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  113. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  114. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  115. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  116. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -2
  117. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +8 -10
  118. package/lib/cjs/contexts/createReducer.js +135 -106
  119. package/lib/cjs/controller/componentController.js +1 -30
  120. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  121. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  122. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  123. package/lib/cjs/index.js +0 -5
  124. package/lib/cjs/plugins/newMessageEventHandler.js +15 -36
  125. package/lib/esm/common/Constants.js +0 -155
  126. package/lib/esm/common/KeyCodes.js +0 -2
  127. package/lib/esm/common/contextDataStore/DataStoreManager.js +0 -2
  128. package/lib/esm/common/storage/default/defaultCacheManager.js +16 -0
  129. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +95 -0
  130. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  131. package/lib/esm/common/telemetry/TelemetryConstants.js +25 -19
  132. package/lib/esm/common/telemetry/TelemetryHelper.js +16 -45
  133. package/lib/esm/common/telemetry/TelemetryManager.js +0 -18
  134. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  135. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  136. package/lib/esm/common/utils.js +18 -53
  137. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  138. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  139. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +10 -13
  140. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +8 -15
  141. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  142. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  143. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  144. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  145. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -12
  146. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  147. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +2 -6
  148. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +0 -3
  149. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +4 -8
  150. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +11 -15
  151. package/lib/esm/components/livechatwidget/common/Deferred.js +3 -8
  152. package/lib/esm/components/livechatwidget/common/authHelper.js +13 -10
  153. package/lib/esm/components/livechatwidget/common/createAdapter.js +4 -6
  154. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  155. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -5
  156. package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
  157. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +57 -23
  158. package/lib/esm/components/livechatwidget/common/endChat.js +10 -18
  159. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  160. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  161. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  162. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +18 -19
  163. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +37 -51
  164. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  165. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
  166. package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
  167. package/lib/esm/components/livechatwidget/common/startChat.js +57 -59
  168. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  169. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +126 -129
  170. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +4 -5
  171. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  172. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  173. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  174. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  175. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  176. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  177. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  178. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -20
  179. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  180. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +2 -6
  181. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +19 -11
  182. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  183. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +9 -18
  184. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -13
  185. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  186. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +3 -5
  187. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  188. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +0 -2
  189. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +0 -2
  190. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  191. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  192. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  193. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  194. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  195. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  196. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  197. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  198. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  199. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  200. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  201. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -11
  202. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +23 -38
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +3 -3
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +7 -14
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +3 -3
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +16 -14
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  230. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  231. package/lib/esm/contexts/ChatContextStore.js +2 -1
  232. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  233. package/lib/esm/contexts/common/ConversationState.js +0 -1
  234. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -2
  235. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -6
  236. package/lib/esm/contexts/createReducer.js +135 -103
  237. package/lib/esm/controller/componentController.js +2 -1
  238. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  239. package/lib/esm/hooks/useChatContextStore.js +0 -4
  240. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  241. package/lib/esm/plugins/newMessageEventHandler.js +15 -26
  242. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  243. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  244. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  245. package/lib/types/common/telemetry/TelemetryConstants.d.ts +9 -2
  246. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -4
  247. package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
  248. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -5
  249. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -2
  250. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  251. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  252. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  253. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  254. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  255. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  256. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  257. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  258. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  259. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -1
  260. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +1 -1
  261. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  262. package/package.json +3 -3
@@ -4,10 +4,14 @@ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
4
4
  import { ConversationState } from "../../../contexts/common/ConversationState";
5
5
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
6
6
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
7
- import { handleAuthentication, removeAuthTokenProvider } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
8
+ const isReconnectEnabled = chatConfig => {
9
+ return chatConfig && chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect && (chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === "true" || chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === true);
10
+ };
8
11
 
9
- const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId) => {
10
- if (isReconnectEnabled) {
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, reconnectId) => {
14
+ if (isReconnectEnabled(chatConfig)) {
11
15
  try {
12
16
  if (reconnectId) {
13
17
  const chatReconnectOptionalParams = {
@@ -17,9 +21,9 @@ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReco
17
21
  } else {
18
22
  // set auth token to chat sdk to get reconnectId for auth chat
19
23
  await handleAuthentication(chatSDK, chatConfig, getAuthToken);
20
- const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext()); // remove auth token after reconnectId is fetched
24
+ const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext());
25
+ // remove auth token after reconnectId is fetched
21
26
  // this will be reset later at start chat
22
-
23
27
  removeAuthTokenProvider(chatSDK);
24
28
  return reconnectChatContext;
25
29
  }
@@ -32,59 +36,47 @@ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReco
32
36
  });
33
37
  }
34
38
  }
35
-
36
39
  return null;
37
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
-
40
+ };
39
41
 
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
43
  const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
41
- var _props$chatConfig, _props$reconnectChatP;
42
-
44
+ var _props$chatConfig;
43
45
  let authClientFunction = undefined;
44
-
45
46
  if ((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) {
46
47
  var _props$chatConfig2, _props$chatConfig2$Li;
47
-
48
48
  authClientFunction = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_javascriptclientfunction) ?? undefined;
49
49
  }
50
-
51
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && authClientFunction // TODO: Implement this after storage is in place
52
-
53
- /* && !isLoadWithState() */
54
- ) {
55
- var _props$reconnectChatP2;
56
-
57
- const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled);
58
-
50
+ if (isReconnectEnabled(props.chatConfig) && authClientFunction
51
+ // TODO: Implement this after storage is in place
52
+ /* && !isLoadWithState() */) {
53
+ const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken);
59
54
  if (previousActiveSessionResponse && previousActiveSessionResponse.reconnectId) {
60
55
  return previousActiveSessionResponse.reconnectId;
61
56
  }
62
57
  }
63
-
64
58
  return undefined;
65
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
-
67
-
68
- const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat, redirectInSameWindow) => {
69
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
59
+ };
70
60
 
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
63
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
71
64
  if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
72
65
  await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
73
66
  } else {
74
67
  await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
75
68
  }
76
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
-
78
-
79
- const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat) => {
80
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
69
+ };
81
70
 
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
73
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
82
74
  if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
75
  await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
84
76
  }
85
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
-
77
+ };
87
78
 
79
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
88
80
  const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
89
81
  const startUnauthenticatedReconnectChat = {
90
82
  eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
@@ -103,7 +95,6 @@ const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dis
103
95
  });
104
96
  await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, optionalParams);
105
97
  };
106
-
107
98
  const redirectPage = (redirectURL, redirectInSameWindow) => {
108
99
  const redirectPageRequest = {
109
100
  eventName: BroadcastEvent.RedirectPageRequest,
@@ -112,26 +103,23 @@ const redirectPage = (redirectURL, redirectInSameWindow) => {
112
103
  }
113
104
  };
114
105
  BroadcastService.postMessage(redirectPageRequest);
115
-
116
106
  if (redirectInSameWindow) {
117
107
  window.location.href = redirectURL;
118
108
  }
119
109
  };
120
-
121
110
  const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
122
111
  return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
123
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
-
112
+ };
125
113
 
114
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
115
  const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat) => {
127
116
  const startUnauthenticatedReconnectChat = {
128
117
  eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
129
118
  };
130
- BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
131
-
119
+ BroadcastService.postMessage(startUnauthenticatedReconnectChat);
120
+ // Getting PreChat Survey Context
132
121
  const parseToJson = false;
133
122
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
134
-
135
123
  if (preChatSurveyResponse) {
136
124
  dispatch({
137
125
  type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
@@ -148,18 +136,17 @@ const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken
148
136
  });
149
137
  await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
150
138
  }
151
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
-
153
-
154
- const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, isReconnectEnabled, reconnectId, redirectInSameWindow) => {
155
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
139
+ };
156
140
 
141
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
+ const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
143
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, reconnectId);
157
144
  if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
158
145
  await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
159
146
  }
160
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
161
-
147
+ };
162
148
 
149
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
150
  const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
164
151
  if (reconnectAvailabilityResponse.redirectURL) {
165
152
  redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
@@ -167,5 +154,4 @@ const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, ch
167
154
  await startNewChatEmptyRedirectionUrl(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat);
168
155
  }
169
156
  };
170
-
171
- export { getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
157
+ export { isReconnectEnabled, getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
@@ -6,27 +6,23 @@ import { defaultInternalTelemetryData } from "../../../common/telemetry/defaultC
6
6
  import { defaultTelemetryConfiguration } from "../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration";
7
7
  export const registerTelemetryLoggers = (props, dispatch) => {
8
8
  var _props$liveChatContex, _props$liveChatContex2;
9
-
10
- const telemetryConfig = { ...defaultTelemetryConfiguration,
9
+ const telemetryConfig = {
10
+ ...defaultTelemetryConfiguration,
11
11
  ...props.telemetryConfig
12
12
  };
13
-
14
13
  if ((_props$liveChatContex = props.liveChatContextFromCache) !== null && _props$liveChatContex !== void 0 && (_props$liveChatContex2 = _props$liveChatContex.domainStates) !== null && _props$liveChatContex2 !== void 0 && _props$liveChatContex2.telemetryInternalData) {
15
14
  var _props$liveChatContex3, _props$liveChatContex4;
16
-
17
15
  TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
18
16
  } else {
19
17
  var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
20
-
21
- let telemetryData = { ...defaultInternalTelemetryData,
18
+ let telemetryData = {
19
+ ...defaultInternalTelemetryData,
22
20
  telemetryConfig: Object.assign({}, defaultTelemetryConfiguration, telemetryConfig),
23
21
  ariaConfig: Object.assign({}, defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
24
22
  };
25
-
26
23
  if (props.chatConfig) {
27
24
  telemetryData = TelemetryHelper.addChatConfigDataToTelemetry(props === null || props === void 0 ? void 0 : props.chatConfig, telemetryData);
28
25
  }
29
-
30
26
  telemetryData = TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
31
27
  telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
32
28
  telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
@@ -40,6 +36,5 @@ export const registerTelemetryLoggers = (props, dispatch) => {
40
36
  payload: telemetryData
41
37
  });
42
38
  }
43
-
44
39
  RegisterLoggers();
45
40
  };
@@ -2,8 +2,9 @@ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryCon
2
2
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
3
3
  import { ConversationState } from "../../../contexts/common/ConversationState";
4
4
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
5
- import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
6
6
 
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
8
  export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
8
9
  try {
9
10
  if (!persistedChat) {
@@ -25,9 +26,9 @@ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persist
25
26
  exception: ex
26
27
  }
27
28
  });
28
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
-
29
+ }
30
30
 
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
32
  BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
32
33
  dispatch({
33
34
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -1,34 +1,31 @@
1
1
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
2
  export function shareObservable(observable) {
3
3
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- let observers = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ let observers = [];
5
5
 
6
- let subscription; // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ let subscription;
7
8
 
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
10
  return new window.Observable(observer => {
9
11
  if (!subscription) {
10
12
  subscription = observable.subscribe({
11
13
  complete() {
12
14
  observers.forEach(observer => observer.complete());
13
15
  },
14
-
15
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
17
  error(err) {
17
18
  observers.forEach(observer => observer.error(err));
18
19
  },
19
-
20
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
21
  next(value) {
22
22
  observers.forEach(observer => observer.next(value));
23
23
  }
24
-
25
24
  });
26
25
  }
27
-
28
26
  observers.push(observer);
29
27
  return () => {
30
28
  observers = observers.filter(o => o !== observer);
31
-
32
29
  if (!observers.length) {
33
30
  subscription.unsubscribe();
34
31
  subscription = null;
@@ -14,34 +14,33 @@ import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurv
14
14
  import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
15
15
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
16
16
  import { ActivityStreamHandler } from "./ActivityStreamHandler";
17
- import { handleAuthentication } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ import { getAuthClientFunction, handleAuthentication } from "./authHelper";
18
18
 
19
- let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
-
21
- let widgetInstanceId; // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ let optionalParams = {};
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ let widgetInstanceId;
22
23
 
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
25
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
24
26
  var _props$controlProps, _props$reconnectChatP;
25
-
26
27
  optionalParams = {}; //Resetting to ensure no stale values
28
+ widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId;
27
29
 
28
- widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId; // Can connect to existing chat session
29
-
30
+ // Can connect to existing chat session
30
31
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
31
32
  return;
32
- } // Redirecting if unauthenticated reconnect chat expired
33
-
33
+ }
34
34
 
35
+ // Redirecting if unauthenticated reconnect chat expired
35
36
  if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
36
- var _props$reconnectChatP2, _props$reconnectChatP3, _props$reconnectChatP4;
37
-
38
- await handleRedirectUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.redirectInSameWindow);
37
+ var _props$reconnectChatP2, _props$reconnectChatP3;
38
+ 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);
39
39
  return;
40
- } // Getting reconnectId for authenticated chat
41
-
40
+ }
42
41
 
42
+ // Getting reconnectId for authenticated chat
43
43
  const reconnectId = await getReconnectIdForAuthenticatedChat(props, chatSDK);
44
-
45
44
  if (reconnectId) {
46
45
  dispatch({
47
46
  type: LiveChatWidgetActionType.SET_RECONNECT_ID,
@@ -52,22 +51,22 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
52
51
  payload: ConversationState.ReconnectChat
53
52
  });
54
53
  return;
55
- } // Setting Proactive chat settings
56
-
54
+ }
57
55
 
56
+ // Setting Proactive chat settings
58
57
  const isProactiveChat = state.appStates.conversationState === ConversationState.ProactiveChat;
59
- const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
58
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
60
59
 
60
+ //Setting PreChat and intiate chat
61
61
  setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
62
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
-
62
+ };
64
63
 
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
65
  const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
66
66
  // Getting prechat Survey Context
67
67
  const parseToJson = false;
68
68
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
69
69
  const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
70
-
71
70
  if (showPrechat) {
72
71
  dispatch({
73
72
  type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
@@ -78,26 +77,33 @@ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, disp
78
77
  payload: ConversationState.Prechat
79
78
  });
80
79
  return;
81
- } //Initiate start chat
82
-
80
+ }
83
81
 
82
+ //Initiate start chat
84
83
  dispatch({
85
84
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
86
85
  payload: ConversationState.Loading
87
86
  });
88
87
  await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
89
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
-
88
+ };
91
89
 
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
91
  const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
93
92
  try {
94
93
  var _newAdapter$activity$, _TelemetryTimers$Widg;
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;
95
103
 
96
- let isStartChatSuccessful = false; //Check if chat retrieved from cache
97
-
104
+ //Check if chat retrieved from cache
98
105
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
99
106
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
100
-
101
107
  BroadcastService.postMessage({
102
108
  eventName: BroadcastEvent.ChatRetrievedFromCache,
103
109
  payload: {
@@ -106,18 +112,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
106
112
  }
107
113
  });
108
114
  }
109
-
110
115
  try {
111
116
  //Start widget load timer
112
117
  TelemetryTimers.WidgetLoadTimer = createTimer();
113
118
  TelemetryHelper.logSDKEvent(LogLevel.INFO, {
114
119
  Event: TelemetryEvent.StartChatSDKCall
115
- }); // Set custom context params
120
+ });
116
121
 
122
+ // Set custom context params
117
123
  setCustomContextParams(chatSDK);
118
- optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
119
-
120
- await handleAuthentication(chatSDK, chatConfig, getAuthToken);
124
+ optionalParams = Object.assign({}, params, optionalParams);
121
125
  await chatSDK.startChat(optionalParams);
122
126
  isStartChatSuccessful = true;
123
127
  } catch (error) {
@@ -127,17 +131,17 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
127
131
  exception: `Failed to setup startChat: ${error}`
128
132
  }
129
133
  });
130
- isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
134
+ isStartChatSuccessful = false;
135
+ // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
131
136
  // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
132
-
133
137
  dispatch({
134
138
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
135
139
  payload: ConversationState.Closed
136
140
  });
137
141
  return;
138
- } // New adapter creation
139
-
142
+ }
140
143
 
144
+ // New adapter creation
141
145
  const newAdapter = await createAdapter(chatSDK);
142
146
  setAdapter(newAdapter);
143
147
  const chatToken = await chatSDK.getChatToken();
@@ -146,7 +150,6 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
146
150
  payload: chatToken
147
151
  });
148
152
  newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe(createOnNewAdapterActivityHandler(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
149
-
150
153
  if (persistedState) {
151
154
  dispatch({
152
155
  type: LiveChatWidgetActionType.SET_WIDGET_STATE,
@@ -154,19 +157,22 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
154
157
  });
155
158
  await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
156
159
  return;
157
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
158
-
160
+ }
159
161
 
162
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
163
  const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
161
164
  dispatch({
162
165
  type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
163
166
  payload: liveChatContext
164
- }); // Set post chat context in state, no survey load
167
+ });
165
168
 
166
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch); // Updating chat session detail for telemetry
169
+ // Set post chat context in state, no survey load
170
+ setPostChatContextAndLoadSurvey(chatSDK, dispatch);
167
171
 
168
- await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
172
+ // Updating chat session detail for telemetry
173
+ await updateSessionDataForTelemetry(chatSDK, dispatch);
169
174
 
175
+ // Set app state to Active
170
176
  if (isStartChatSuccessful) {
171
177
  ActivityStreamHandler.uncork();
172
178
  dispatch({
@@ -174,7 +180,6 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
174
180
  payload: ConversationState.Active
175
181
  });
176
182
  }
177
-
178
183
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
179
184
  Event: TelemetryEvent.WidgetLoadComplete,
180
185
  Description: "Widget load complete",
@@ -187,8 +192,8 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
187
192
  Exception: `Widget load Failed: ${ex}`
188
193
  }
189
194
  });
190
- NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex); // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
-
195
+ NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex);
196
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
192
197
  if (ex.message === ChatSDKError.WidgetUseOutsideOperatingHour) {
193
198
  dispatch({
194
199
  type: LiveChatWidgetActionType.SET_OUTSIDE_OPERATING_HOURS,
@@ -203,22 +208,20 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
203
208
  optionalParams = {};
204
209
  widgetInstanceId = "";
205
210
  }
206
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
207
-
211
+ };
208
212
 
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
209
214
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
210
215
  var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
211
-
212
216
  // By pass this function in case of popout chat
213
217
  if (state.appStates.skipChatButtonRendering === true) {
214
218
  return false;
215
219
  }
220
+ 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) ?? "");
216
221
 
217
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? ""); //Connect to only active chat session
218
-
222
+ //Connect to only active chat session
219
223
  if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai6 = persistedState.domainStates) === null || _persistedState$domai6 === void 0 ? void 0 : _persistedState$domai6.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === ConversationState.Active) {
220
224
  var _persistedState$domai7;
221
-
222
225
  dispatch({
223
226
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
224
227
  payload: ConversationState.Loading
@@ -231,18 +234,15 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
231
234
  } else {
232
235
  return false;
233
236
  }
234
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
-
237
+ };
236
238
 
239
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
237
240
  const setCustomContextParams = chatSDK => {
238
241
  var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
239
-
240
242
  // Add custom context only for unauthenticated chat
241
243
  const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId, widgetInstanceId ?? "");
242
-
243
244
  if (!isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
244
245
  var _persistedState$domai9, _persistedState$domai10;
245
-
246
246
  if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
247
247
  const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
248
248
  TelemetryHelper.logSDKEvent(LogLevel.WARN, {
@@ -253,11 +253,9 @@ const setCustomContextParams = chatSDK => {
253
253
  });
254
254
  throw new Error(errorMessage);
255
255
  }
256
-
257
256
  optionalParams = Object.assign({}, optionalParams, {
258
257
  customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
259
258
  });
260
259
  }
261
260
  };
262
-
263
261
  export { prepareStartChat, initStartChat, setPreChatAndInitiateChat };
@@ -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