@microsoft/omnichannel-chat-widget 0.1.0-main.edd8c2a → 0.1.0-main.f514612

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 (237) hide show
  1. package/README.md +259 -0
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +28 -0
  4. package/lib/cjs/common/Constants.js +54 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  8. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  9. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  10. package/lib/cjs/common/telemetry/TelemetryConstants.js +67 -4
  11. package/lib/cjs/common/telemetry/TelemetryHelper.js +22 -4
  12. package/lib/cjs/common/telemetry/TelemetryManager.js +28 -9
  13. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  14. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  15. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +48 -15
  16. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +9 -5
  17. package/lib/cjs/common/utils.js +89 -2
  18. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  19. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  20. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -54
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  22. package/lib/cjs/components/footerstateful/FooterStateful.js +5 -13
  23. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  24. package/lib/cjs/components/headerstateful/HeaderStateful.js +14 -10
  25. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  26. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  27. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  28. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  29. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  30. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  31. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  32. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  33. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  34. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  35. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +32 -32
  36. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +46 -26
  37. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
  38. package/lib/cjs/components/livechatwidget/common/endChat.js +142 -43
  39. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  40. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +51 -10
  41. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +144 -39
  42. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -7
  43. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +22 -24
  44. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  45. package/lib/cjs/components/livechatwidget/common/startChat.js +207 -41
  46. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  47. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +324 -71
  48. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  49. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  50. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  51. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  52. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -5
  53. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  54. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +96 -2
  55. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  56. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  57. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +6 -0
  58. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  59. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  60. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  61. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  62. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  63. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  64. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  65. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  66. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  67. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  68. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  69. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  70. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  71. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  72. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +13 -7
  73. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +20 -5
  74. package/lib/cjs/contexts/createReducer.js +44 -10
  75. package/lib/cjs/controller/componentController.js +5 -5
  76. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  77. package/lib/esm/assets/Audios.js +1 -0
  78. package/lib/esm/assets/Icons.js +11 -0
  79. package/lib/esm/common/Constants.js +50 -3
  80. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  81. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  82. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  83. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  84. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  85. package/lib/esm/common/telemetry/TelemetryConstants.js +63 -3
  86. package/lib/esm/common/telemetry/TelemetryHelper.js +22 -5
  87. package/lib/esm/common/telemetry/TelemetryManager.js +22 -9
  88. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  89. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  90. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +50 -15
  91. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -5
  92. package/lib/esm/common/utils.js +64 -1
  93. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  94. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  95. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -50
  96. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  97. package/lib/esm/components/footerstateful/FooterStateful.js +5 -13
  98. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  99. package/lib/esm/components/headerstateful/HeaderStateful.js +15 -11
  100. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  101. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  102. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  103. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  104. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  105. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  106. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  107. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  108. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  109. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  110. package/lib/esm/components/livechatwidget/common/createMarkdown.js +32 -31
  111. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +44 -27
  112. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  113. package/lib/esm/components/livechatwidget/common/endChat.js +139 -42
  114. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  115. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +45 -11
  116. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +134 -41
  117. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -3
  118. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -22
  119. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  120. package/lib/esm/components/livechatwidget/common/startChat.js +195 -39
  121. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  122. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +307 -76
  123. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  124. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  125. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  126. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  127. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +26 -6
  128. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  129. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +86 -2
  130. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  131. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  132. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +6 -0
  133. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  134. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  135. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  136. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  137. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  138. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  139. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  140. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  141. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  142. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  143. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  144. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  145. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  146. package/lib/esm/contexts/common/ConversationState.js +4 -2
  147. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +13 -7
  148. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +18 -5
  149. package/lib/esm/contexts/createReducer.js +44 -9
  150. package/lib/esm/controller/componentController.js +5 -5
  151. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  152. package/lib/types/assets/Audios.d.ts +1 -0
  153. package/lib/types/assets/Icons.d.ts +11 -0
  154. package/lib/types/common/Constants.d.ts +27 -1
  155. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  156. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  157. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  158. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  159. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  160. package/lib/types/common/telemetry/TelemetryConstants.d.ts +49 -2
  161. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  162. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  163. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  164. package/lib/types/common/telemetry/definitions/Payload.d.ts +15 -9
  165. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  166. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  167. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  168. package/lib/types/common/utils.d.ts +8 -1
  169. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  170. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  171. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +5 -1
  172. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  173. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  174. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  175. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  176. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  177. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  178. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  179. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  180. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  181. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  182. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  183. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  184. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  185. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  186. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  187. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  188. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -1
  189. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  190. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  191. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  192. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  193. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +2 -0
  194. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  195. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  196. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  197. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  198. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  199. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  200. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  201. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  202. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  203. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  204. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  205. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  206. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  207. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  208. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +5 -1
  209. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +14 -8
  210. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  211. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  212. package/package.json +13 -12
  213. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  214. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  215. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  216. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  217. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  218. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  219. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  220. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  221. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  222. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  223. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  224. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  225. package/lib/esm/assets/assets.d.js +0 -0
  226. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  227. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  228. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  229. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  230. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  231. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  232. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  233. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  234. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  235. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  236. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  237. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -1,6 +1,6 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
- import { ScenarioType } from "./TelemetryConstants";
3
+ import { ScenarioType, TelemetryEvent } from "./TelemetryConstants";
4
4
  import { newGuid } from "../utils";
5
5
  import { TelemetryManager } from "./TelemetryManager";
6
6
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
@@ -98,6 +98,8 @@ export class TelemetryHelper {
98
98
  static conformToLoadContract(level, input) {
99
99
  const payload = input.payload;
100
100
  return TelemetryHelper.populate(level, payload, event => {
101
+ var _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13;
102
+
101
103
  event.Event = payload.Event;
102
104
  event.ResourcePath = payload.ResourcePath;
103
105
  event.WidgetState = payload.WidgetState;
@@ -105,16 +107,19 @@ export class TelemetryHelper {
105
107
  event.ChatType = payload.ChatType;
106
108
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
107
109
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
110
+ event.OCChatSDKVersion = ((_TelemetryManager$Int11 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.OCChatSDKVersion) ?? "";
111
+ event.OCChatWidgetVersion = ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : _TelemetryManager$Int12.chatWidgetVersion) ?? "";
112
+ event.OCChatComponentsVersion = ((_TelemetryManager$Int13 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.chatComponentVersion) ?? "";
108
113
  });
109
114
  }
110
115
 
111
116
  static conformToIC3ClientContract(level, input) {
112
117
  const payload = input.payload;
113
118
  return TelemetryHelper.populate(level, payload, event => {
114
- var _TelemetryManager$Int11;
119
+ var _TelemetryManager$Int14;
115
120
 
116
121
  event.Event = payload.Event;
117
- event.IC3ClientVersion = (_TelemetryManager$Int11 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.IC3ClientVersion;
122
+ event.IC3ClientVersion = (_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : _TelemetryManager$Int14.IC3ClientVersion;
118
123
  event.SubscriptionId = payload.SubscriptionId;
119
124
  event.EndpointUrl = payload.EndpointUrl;
120
125
  event.EndpointId = payload.EndpointId;
@@ -233,14 +238,14 @@ _defineProperty(TelemetryHelper, "logActionEvent", (logLevel, payload) => {
233
238
  });
234
239
 
235
240
  _defineProperty(TelemetryHelper, "logSDKEvent", (logLevel, payload) => {
236
- var _TelemetryManager$Int12;
241
+ var _TelemetryManager$Int15;
237
242
 
238
243
  const telemetryEvent = {
239
244
  eventName: (payload === null || payload === void 0 ? void 0 : payload.Event) ?? "",
240
245
  logLevel: logLevel,
241
246
  payload: { ...payload,
242
247
  TransactionId: newGuid(),
243
- RequestId: (_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : _TelemetryManager$Int12.currentRequestId
248
+ RequestId: (_TelemetryManager$Int15 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.currentRequestId
244
249
  }
245
250
  };
246
251
  BroadcastService.postMessage(telemetryEvent);
@@ -254,4 +259,16 @@ _defineProperty(TelemetryHelper, "logConfigDataEvent", (logLevel, payload) => {
254
259
  }
255
260
  };
256
261
  BroadcastService.postMessage(telemetryEvent);
262
+ });
263
+
264
+ _defineProperty(TelemetryHelper, "logWebChatEvent", (logLevel, payload) => {
265
+ const telemetryEvent = {
266
+ eventName: TelemetryEvent.WebChatEvent,
267
+ logLevel: logLevel,
268
+ payload: { ...payload,
269
+ type: TelemetryEvent.WebChatEvent,
270
+ scenarioType: ScenarioType.WEBCHAT
271
+ }
272
+ };
273
+ BroadcastService.postMessage(telemetryEvent);
257
274
  });
@@ -1,9 +1,11 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
- import { LogLevel, ScenarioType, TelemetryConstants } from "./TelemetryConstants";
3
+ import { LogLevel, ScenarioType, TelemetryConstants, TelemetryEvent } from "./TelemetryConstants";
4
4
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
5
5
  import { ariaTelemetryLogger } from "./loggers/ariaTelemetryLogger";
6
6
  import { consoleLogger } from "./loggers/consoleLogger";
7
+ import { defaultAriaConfig } from "./defaultConfigs/defaultAriaConfig";
8
+ import { TelemetryHelper } from "./TelemetryHelper";
7
9
  export class TelemetryTimers {}
8
10
 
9
11
  _defineProperty(TelemetryTimers, "LcwLoadToChatButtonTimer", void 0);
@@ -16,31 +18,35 @@ export class TelemetryManager {}
16
18
 
17
19
  _defineProperty(TelemetryManager, "InternalTelemetryData", void 0);
18
20
 
21
+ const loggers = [];
22
+ export const disposeLoggers = () => {
23
+ loggers.map(logger => {
24
+ logger.dispose();
25
+ });
26
+ };
19
27
  export const RegisterLoggers = () => {
20
- const loggers = [];
21
-
22
28
  const registerLoggers = () => {
23
29
  var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7, _TelemetryManager$Int8;
24
30
 
25
- if (!((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int !== void 0 && (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) !== null && _TelemetryManager$Int2 !== void 0 && _TelemetryManager$Int2.disableConsoleLog) || !((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int3 !== void 0 && (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) !== null && _TelemetryManager$Int4 !== void 0 && _TelemetryManager$Int4.telemetryDisabled)) {
31
+ if (((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.disableConsoleLog) === false || ((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int3 === void 0 ? void 0 : (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) === null || _TelemetryManager$Int4 === void 0 ? void 0 : _TelemetryManager$Int4.telemetryDisabled) === false) {
26
32
  BroadcastService.getAnyMessage().subscribe(event => {
27
- if (event.payload) {
33
+ if (event.payload && event.eventName in TelemetryEvent) {
28
34
  logTelemetry(event);
29
35
  }
30
36
  });
31
37
  }
32
38
 
33
- if (!((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int5 !== void 0 && (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) !== null && _TelemetryManager$Int6 !== void 0 && _TelemetryManager$Int6.disableConsoleLog)) {
39
+ if (((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int5 === void 0 ? void 0 : (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) === null || _TelemetryManager$Int6 === void 0 ? void 0 : _TelemetryManager$Int6.disableConsoleLog) === false) {
34
40
  loggers.push(consoleLogger());
35
41
  }
36
42
 
37
- if (!((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int7 !== void 0 && (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) !== null && _TelemetryManager$Int8 !== void 0 && _TelemetryManager$Int8.telemetryDisabled)) {
43
+ if (((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int7 === void 0 ? void 0 : (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) === null || _TelemetryManager$Int8 === void 0 ? void 0 : _TelemetryManager$Int8.telemetryDisabled) === false) {
38
44
  var _TelemetryManager$Int9, _TelemetryManager$Int18, _TelemetryManager$Int19;
39
45
 
40
46
  if ((_TelemetryManager$Int9 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int9 !== void 0 && _TelemetryManager$Int9.ariaConfig) {
41
47
  var _TelemetryManager$Int10, _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13, _TelemetryManager$Int14, _TelemetryManager$Int15, _TelemetryManager$Int16, _TelemetryManager$Int17;
42
48
 
43
- loggers.push(ariaTelemetryLogger(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? "", ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? false, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? "", ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? "OmniChannelProd_Web"));
49
+ loggers.push(ariaTelemetryLogger(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? defaultAriaConfig.ariaTelemetryKey, ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? defaultAriaConfig.disableCookieUsage, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? defaultAriaConfig.collectorUriForTelemetry, ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? defaultAriaConfig.ariaTelemetryApplicationName));
44
50
  }
45
51
 
46
52
  const customLoggers = (_TelemetryManager$Int18 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int18 === void 0 ? void 0 : (_TelemetryManager$Int19 = _TelemetryManager$Int18.telemetryConfig) === null || _TelemetryManager$Int19 === void 0 ? void 0 : _TelemetryManager$Int19.telemetryLoggers;
@@ -63,8 +69,15 @@ export const RegisterLoggers = () => {
63
69
 
64
70
  const logTelemetry = telemetryEvent => {
65
71
  loggers.map(logger => {
72
+ var _payload;
73
+
66
74
  const logLevel = telemetryEvent.logLevel ?? LogLevel.INFO;
67
- logger.log(logLevel, parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload));
75
+ const scenarioType = ((_payload = telemetryEvent.payload) === null || _payload === void 0 ? void 0 : _payload.scenarioType) ?? ScenarioType.UNDEFINED;
76
+ const telemetryInput = parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload, scenarioType);
77
+ telemetryInput.telemetryInfo = {
78
+ telemetryInfo: TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput)
79
+ };
80
+ logger.log(logLevel, telemetryInput);
68
81
  });
69
82
  };
70
83
 
@@ -1,6 +1,6 @@
1
1
  export const defaultAriaConfig = {
2
- collectorUriForTelemetry: "https://browser.pipe.aria.microsoft.com/Collector/3.0/",
3
- ariaTelemetryKey: "1574efd98545488983328fac0c9bcb59-45c2ff50-ebcc-473d-949d-e3134ef2189e-6906",
4
- ariaTelemetryApplicationName: "D365_Omnichannel_Client_Sandbox",
2
+ collectorUriForTelemetry: "",
3
+ ariaTelemetryKey: "c7655518acf1403f93ff6b9f77942f0a-d01a02fd-6b50-4de3-a566-62eda11f93bc-7083",
4
+ ariaTelemetryApplicationName: "D365_Omnichannel_Client_Public_Prod",
5
5
  disableCookieUsage: true
6
6
  };
@@ -3,5 +3,8 @@ export const defaultTelemetryConfiguration = {
3
3
  telemetryDisabled: false,
4
4
  disableConsoleLog: false,
5
5
  telemetryLoggers: [],
6
- ariaConfigurations: defaultAriaConfig
6
+ ariaConfigurations: defaultAriaConfig,
7
+ chatWidgetVersion: "0.0.0-0",
8
+ chatComponentVersion: "0.0.0-0",
9
+ OCChatSDKVersion: "0.0.0-0"
7
10
  };
@@ -1,9 +1,9 @@
1
- import { isNullOrEmptyString, isNullOrUndefined } from "../../utils";
1
+ import { getDomain, isNullOrEmptyString, isNullOrUndefined } from "../../utils";
2
2
  import AWTEventProperties from "@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTEventProperties";
3
3
  import AWTLogManager from "@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTLogManager";
4
4
  import { AWTPiiKind } from "@microsoft/omnichannel-chat-sdk/lib/external/aria/common/Enums";
5
- import { Constants } from "../../Constants";
6
- import { TelemetryHelper } from "../TelemetryHelper";
5
+ import { Constants, AriaTelemetryConstants, EnvironmentVersion } from "../../Constants";
6
+ import { TelemetryManager } from "../TelemetryManager";
7
7
  export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUriForTelemetry, ariaTelemetryApplicationName) => {
8
8
  let _logger;
9
9
 
@@ -15,9 +15,32 @@ export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, colle
15
15
 
16
16
  if (!isNullOrEmptyString(collectiorUriForTelemetry)) {
17
17
  configuration.collectorUri = collectiorUriForTelemetry;
18
+ } else {
19
+ if (TelemetryManager.InternalTelemetryData.environmentVersion == EnvironmentVersion.prod) {
20
+ var _TelemetryManager$Int;
21
+
22
+ const orgUrl = (_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.orgUrl;
23
+
24
+ if (!isNullOrUndefined(orgUrl)) {
25
+ // If the given org is a Production EU org, modify the Aria collector uri
26
+ const region = getDomain(orgUrl);
27
+
28
+ if (region === AriaTelemetryConstants.EU) {
29
+ configuration.collectorUri = AriaTelemetryConstants.EUROPE_ENDPOINT;
30
+ }
31
+ }
32
+ }
18
33
  }
19
34
 
20
- _logger = AWTLogManager.initialize(ariaTelemetryKey, configuration);
35
+ try {
36
+ _logger = AWTLogManager.initialize(ariaTelemetryKey, configuration);
37
+
38
+ if (_logger === undefined) {
39
+ _logger = AWTLogManager.getLogger(ariaTelemetryKey);
40
+ }
41
+ } catch (error) {
42
+ console.log(error);
43
+ }
21
44
  }
22
45
 
23
46
  return _logger;
@@ -25,18 +48,30 @@ export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, colle
25
48
 
26
49
  const ariaLogger = {
27
50
  log: (logLevel, telemetryInput) => {
28
- let property;
29
- const eventProperties = new AWTEventProperties();
30
- const event = TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput);
31
- eventProperties.setName(telemetryInput.scenarioType);
32
-
33
- for (const key of Object.keys(event)) {
34
- property = typeof event[key] === "object" ? JSON.stringify(event[key]) : event[key];
35
- eventProperties.setProperty(key, property);
36
- }
51
+ try {
52
+ let property;
53
+ const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo;
54
+ const eventProperties = new AWTEventProperties();
55
+ eventProperties.setName(telemetryInput.scenarioType);
56
+
57
+ if (telemetryInfo) {
58
+ for (const key of Object.keys(telemetryInfo)) {
59
+ property = typeof telemetryInfo[key] === "object" ? JSON.stringify(telemetryInfo[key]) : telemetryInfo[key];
60
+ eventProperties.setProperty(key, property);
61
+ }
37
62
 
38
- eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, Constants.LiveChatWidget, AWTPiiKind.GenericData);
39
- logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
63
+ eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, Constants.LiveChatWidget, AWTPiiKind.GenericData);
64
+ }
65
+
66
+ logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
67
+ } catch (error) {
68
+ console.error("Error in logging telemetry to Aria logger:" + error);
69
+ }
70
+ },
71
+ dispose: () => {
72
+ AWTLogManager.flush(function () {
73
+ console.log("Aria logger disposed");
74
+ });
40
75
  }
41
76
  };
42
77
  return ariaLogger;
@@ -4,32 +4,36 @@ export const consoleLogger = () => {
4
4
  const consoleLogger = {
5
5
  log: (logLevel, telemetryInput) => {
6
6
  const payload = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.payload && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.payload : "";
7
+ const telemetryInfo = telemetryInput !== null && telemetryInput !== void 0 && telemetryInput.telemetryInfo && Object.keys(telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo).length > 0 ? telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo : "";
7
8
 
8
9
  try {
9
10
  switch (logLevel) {
10
11
  case LogLevel.INFO:
11
- console.info(Constants.LiveChatWidget, payload);
12
+ console.info(Constants.LiveChatWidget, payload, telemetryInfo);
12
13
  break;
13
14
 
14
15
  case LogLevel.DEBUG:
15
- console.debug(Constants.LiveChatWidget, payload);
16
+ console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
16
17
  break;
17
18
 
18
19
  case LogLevel.WARN:
19
- console.warn(Constants.LiveChatWidget, payload);
20
+ console.warn(Constants.LiveChatWidget, payload, telemetryInfo);
20
21
  break;
21
22
 
22
23
  case LogLevel.ERROR:
23
- console.error(Constants.LiveChatWidget, payload);
24
+ console.error(Constants.LiveChatWidget, payload, telemetryInfo);
24
25
  break;
25
26
 
26
27
  default:
27
- console.debug(Constants.LiveChatWidget, payload);
28
+ console.debug(Constants.LiveChatWidget, payload, telemetryInfo);
28
29
  break;
29
30
  }
30
31
  } catch (ex) {
31
32
  console.error("An unexpected error occurred in the Telemetry client: " + ex);
32
33
  }
34
+ },
35
+ dispose: () => {
36
+ console.log("disposing loggers");
33
37
  }
34
38
  };
35
39
  return consoleLogger;
@@ -1,5 +1,8 @@
1
- import { Constants, LocaleConstants } from "./Constants";
1
+ import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
2
+ import { DataStoreManager } from "./contextDataStore/DataStoreManager";
2
3
  import { KeyCodes } from "./KeyCodes";
4
+ import { BroadcastEvent } from "./telemetry/TelemetryConstants";
5
+ import { Md5 } from "md5-typescript";
3
6
 
4
7
  const getElementBySelector = selector => {
5
8
  let element;
@@ -276,4 +279,64 @@ export const createTimer = () => {
276
279
  }
277
280
 
278
281
  };
282
+ }; // Returns the domain of the org
283
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
284
+
285
+ export const getDomain = hostValue => {
286
+ for (let i = 0; i < AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
287
+ if (hostValue.endsWith(AriaTelemetryConstants.lcwEUDomainNames[i])) {
288
+ return AriaTelemetryConstants.EU;
289
+ }
290
+ }
291
+
292
+ return AriaTelemetryConstants.Public;
293
+ };
294
+ export const getWidgetCacheId = (orgId, widgetId, widgetInstanceId) => {
295
+ const widgetCacheId = `${widgetInstanceId}_${orgId}_${widgetId}`;
296
+ return Md5.init(widgetCacheId);
297
+ };
298
+ export const getWidgetEndChatEventName = (orgId, widgetId, widgetInstanceId) => {
299
+ if (!isNullOrEmptyString(widgetInstanceId)) {
300
+ return `${BroadcastEvent.ChatEnded}_${widgetInstanceId}_${orgId}_${widgetId}`;
301
+ }
302
+
303
+ return `${BroadcastEvent.ChatEnded}_${orgId}_${widgetId}`;
304
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
305
+
306
+ export const getStateFromCache = (orgId, widgetId, widgetInstanceId) => {
307
+ // Getting updated state from cache
308
+ try {
309
+ if (DataStoreManager.clientDataStore) {
310
+ var _DataStoreManager$cli;
311
+
312
+ const widgetStateEventName = getWidgetCacheId(orgId, widgetId, widgetInstanceId);
313
+ const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
314
+ const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
315
+ return persistedState;
316
+ } else {
317
+ return null;
318
+ }
319
+ } catch (error) {
320
+ console.log(error);
321
+ return null;
322
+ }
323
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
324
+
325
+ export const isUndefinedOrEmpty = object => {
326
+ if (object) {
327
+ if (Object.keys(object).length === 0) {
328
+ return true;
329
+ }
330
+
331
+ return false;
332
+ } else {
333
+ return true;
334
+ }
335
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
336
+
337
+ export const addDelayInMs = ms => {
338
+ return new Promise(resolve => setTimeout(resolve, ms));
339
+ };
340
+ export const getBroadcastChannelName = (widgetId, widgetInstanceId) => {
341
+ return widgetInstanceId && !isNullOrEmptyString(widgetInstanceId) ? `${widgetInstanceId}_${widgetId}` : widgetId;
279
342
  };
@@ -177,6 +177,20 @@ export const CallingContainerStateful = props => {
177
177
  });
178
178
  }
179
179
  });
180
+ window.addEventListener("beforeunload", () => {
181
+ if (state.uiStates.isIncomingCall) {
182
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.rejectCall();
183
+ } else {
184
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.stopCall();
185
+ }
186
+
187
+ voiceVideoCallingSdk === null || voiceVideoCallingSdk === void 0 ? void 0 : voiceVideoCallingSdk.close();
188
+ dispatch({
189
+ type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
190
+ payload: false
191
+ });
192
+ resetCallingStates(true);
193
+ });
180
194
  }, []);
181
195
  const controlProps = {
182
196
  id: "oc-lcw-callingcontainer",
@@ -1,6 +1,6 @@
1
- import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
- import React, { useEffect, useState } from "react";
3
- import { ChatButton } from "@microsoft/omnichannel-chat-components";
1
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
+ import React, { useEffect, useRef, useState } from "react";
3
+ import { BroadcastService, ChatButton } from "@microsoft/omnichannel-chat-components";
4
4
  import { Constants } from "../../common/Constants";
5
5
  import { setFocusOnElement } from "../../common/utils";
6
6
  import { ConversationState } from "../../contexts/common/ConversationState";
@@ -10,7 +10,7 @@ import { TelemetryTimers } from "../../common/telemetry/TelemetryManager";
10
10
  import { defaultOutOfOfficeChatButtonStyleProps } from "./common/styleProps/defaultOutOfOfficeChatButtonStyleProps";
11
11
  import useChatContextStore from "../../hooks/useChatContextStore";
12
12
  export const ChatButtonStateful = props => {
13
- var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP;
13
+ var _state$domainStates$l, _state$domainStates$l2, _buttonProps$controlP, _props$buttonProps, _props$buttonProps$co, _props$buttonProps2, _props$buttonProps2$c, _props$buttonProps3, _props$buttonProps3$c;
14
14
 
15
15
  const [state, dispatch] = useChatContextStore();
16
16
  const {
@@ -20,20 +20,26 @@ export const ChatButtonStateful = props => {
20
20
  } = props; //Setting OutOfOperatingHours Flag
21
21
 
22
22
  const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
23
+ const proactiveChatInNewWindow = useRef(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
23
24
  const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
24
25
  const controlProps = {
25
26
  id: "oc-lcw-chat-button",
26
27
  dir: state.domainStates.globalDir,
27
28
  titleText: "Let's Chat!",
28
29
  subtitleText: "We're online.",
29
- hideNotificationBubble: !(state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) || (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true,
30
- unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? Constants.maximumUnreadMessageCount.toString() + "+" : state.appStates.unreadMessageCount.toString() : "0",
30
+ hideNotificationBubble: (buttonProps === null || buttonProps === void 0 ? void 0 : (_buttonProps$controlP = buttonProps.controlProps) === null || _buttonProps$controlP === void 0 ? void 0 : _buttonProps$controlP.hideNotificationBubble) === true || state.appStates.isMinimized === false,
31
+ unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? (_props$buttonProps = props.buttonProps) === null || _props$buttonProps === void 0 ? void 0 : (_props$buttonProps$co = _props$buttonProps.controlProps) === null || _props$buttonProps$co === void 0 ? void 0 : _props$buttonProps$co.largeUnreadMessageString : state.appStates.unreadMessageCount.toString() : "0",
31
32
  onClick: async () => {
32
33
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
33
34
  Event: TelemetryEvent.LCWChatButtonClicked
34
35
  });
35
36
 
36
- if (state.appStates.isMinimized) {
37
+ if (proactiveChatInNewWindow.current) {
38
+ const proactiveChatIsInPopoutModeEvent = {
39
+ eventName: BroadcastEvent.ProactiveChatIsInPopoutMode
40
+ };
41
+ BroadcastService.postMessage(proactiveChatIsInPopoutModeEvent);
42
+ } else if (state.appStates.isMinimized) {
37
43
  dispatch({
38
44
  type: LiveChatWidgetActionType.SET_MINIMIZED,
39
45
  payload: false
@@ -42,6 +48,7 @@ export const ChatButtonStateful = props => {
42
48
  await startChat();
43
49
  }
44
50
  },
51
+ unreadMessageString: (_props$buttonProps2 = props.buttonProps) === null || _props$buttonProps2 === void 0 ? void 0 : (_props$buttonProps2$c = _props$buttonProps2.controlProps) === null || _props$buttonProps2$c === void 0 ? void 0 : _props$buttonProps2$c.unreadMessageString,
45
52
  ...(buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.controlProps)
46
53
  };
47
54
  const outOfOfficeControlProps = {
@@ -50,6 +57,10 @@ export const ChatButtonStateful = props => {
50
57
  titleText: "We're Offline",
51
58
  subtitleText: "No agents available",
52
59
  onClick: async () => {
60
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
61
+ Event: TelemetryEvent.LCWChatButtonClicked
62
+ });
63
+
53
64
  if (state.appStates.isMinimized) {
54
65
  dispatch({
55
66
  type: LiveChatWidgetActionType.SET_MINIMIZED,
@@ -62,6 +73,7 @@ export const ChatButtonStateful = props => {
62
73
  });
63
74
  }
64
75
  },
76
+ unreadMessageString: (_props$buttonProps3 = props.buttonProps) === null || _props$buttonProps3 === void 0 ? void 0 : (_props$buttonProps3$c = _props$buttonProps3.controlProps) === null || _props$buttonProps3$c === void 0 ? void 0 : _props$buttonProps3$c.unreadMessageString,
65
77
  ...(outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.controlProps)
66
78
  };
67
79
  useEffect(() => {
@@ -83,6 +95,9 @@ export const ChatButtonStateful = props => {
83
95
  });
84
96
  }
85
97
  }, []);
98
+ useEffect(() => {
99
+ proactiveChatInNewWindow.current = state.appStates.proactiveChatStates.proactiveChatInNewWindow;
100
+ }, [state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
86
101
  return /*#__PURE__*/React.createElement(ChatButton, {
87
102
  componentOverrides: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.componentOverrides,
88
103
  controlProps: outOfOperatingHours ? outOfOfficeControlProps : controlProps,
@@ -1,40 +1,29 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
+ import { ConfirmationPane } from "@microsoft/omnichannel-chat-components";
2
3
  import React, { useEffect } from "react";
3
4
  import { findAllFocusableElement, findParentFocusableElementsWithoutChildContainer, preventFocusToMoveOutOfElement, setFocusOnElement, setFocusOnSendBox, setTabIndices } from "../../common/utils";
4
- import { ConfirmationPane } from "@microsoft/omnichannel-chat-components";
5
- import { Constants } from "../../common/Constants";
6
- import { ConversationState } from "../../contexts/common/ConversationState";
7
5
  import { DimLayer } from "../dimlayer/DimLayer";
8
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
9
7
  import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
10
8
  import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
11
- import { PostChatSurveyMode } from "../postchatsurveypanestateful/enums/PostChatSurveyMode";
12
9
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
13
10
  import useChatAdapterStore from "../../hooks/useChatAdapterStore";
14
- import useChatContextStore from "../../hooks/useChatContextStore";
15
- import useChatSDKStore from "../../hooks/useChatSDKStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ import useChatContextStore from "../../hooks/useChatContextStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
12
 
17
13
  export const ConfirmationPaneStateful = props => {
18
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
19
-
20
14
  const initialTabIndexMap = new Map();
21
15
  let elements = [];
22
16
  const [state, dispatch] = useChatContextStore();
23
17
  const {
24
- setPostChatContext,
25
- endChat
18
+ prepareEndChat
26
19
  } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
20
 
28
- const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
-
30
21
  const [adapter] = useChatAdapterStore();
31
- const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
32
- const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
33
22
  const controlProps = {
34
23
  id: "oc-lcw-confirmation-pane",
35
24
  dir: state.domainStates.globalDir,
36
25
  onConfirm: async () => {
37
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
26
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
38
27
  Event: TelemetryEvent.ConfirmationConfirmButtonClicked,
39
28
  Description: "Confirmation pane Confirm button clicked"
40
29
  });
@@ -44,40 +33,8 @@ export const ConfirmationPaneStateful = props => {
44
33
  });
45
34
 
46
35
  try {
47
- //ToDo: End Chat before PostChat Context and conversation Details is set once the getPostChatContext request ID fetch issue is fixed
48
- const conversationDetails = await chatSDK.getConversationDetails(); // ToDo: Replace with CanRenderPostChat once available in conversationDetails API response
49
-
50
- if (isPostChatEnabled === "true" && postChatSurveyMode === PostChatSurveyMode.Embed && conversationDetails.canRenderPostChat === Constants.truePascal) {
51
- dispatch({
52
- type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
53
- payload: true
54
- });
55
- dispatch({
56
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
57
- payload: ConversationState.Loading
58
- });
59
- await setPostChatContext();
60
-
61
- if (state.domainStates.postChatContext) {
62
- dispatch({
63
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
64
- payload: ConversationState.Postchat
65
- });
66
- }
67
- } else {
68
- setTabIndices(elements, initialTabIndexMap, true);
69
-
70
- try {
71
- await endChat(adapter);
72
- } catch (error) {
73
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
74
- Event: TelemetryEvent.CloseChatMethodException,
75
- ExceptionDetails: {
76
- exception: `Failed to endChat: ${error}`
77
- }
78
- });
79
- }
80
- }
36
+ setTabIndices(elements, initialTabIndexMap, true);
37
+ await prepareEndChat(adapter, state);
81
38
  } catch (ex) {
82
39
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
83
40
  Event: TelemetryEvent.GetConversationDetailsCallFailed,
@@ -89,7 +46,7 @@ export const ConfirmationPaneStateful = props => {
89
46
  }
90
47
  },
91
48
  onCancel: () => {
92
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
49
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
93
50
  Event: TelemetryEvent.ConfirmationCancelButtonClicked,
94
51
  Description: "Confirmation pane Cancel button clicked."
95
52
  });
@@ -68,8 +68,8 @@ export const EmailTranscriptPaneStateful = props => {
68
68
  },
69
69
  onCancel: () => {
70
70
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
71
- Event: TelemetryEvent.EmailTranscriptButtonClicked,
72
- Description: "Email Transcript button clicked."
71
+ Event: TelemetryEvent.EmailTranscriptCancelButtonClicked,
72
+ Description: "Email Transcript cancel button clicked."
73
73
  });
74
74
  closeEmailTranscriptPane();
75
75
  },
@@ -4,13 +4,13 @@ import AudioNotificationStateful from "./audionotificationstateful/AudioNotifica
4
4
  import { Constants } from "../../common/Constants";
5
5
  import { Footer } from "@microsoft/omnichannel-chat-components";
6
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
7
+ import { NewMessageNotificationSoundBase64 } from "../../assets/Audios";
7
8
  import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
8
9
  import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
9
10
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
10
11
  import { downloadTranscript } from "./downloadtranscriptstateful/DownloadTranscriptStateful";
11
12
  import useChatContextStore from "../../hooks/useChatContextStore";
12
- import useChatSDKStore from "../../hooks/useChatSDKStore";
13
- import newMessageNotification from "../../assets/audios/newMessageNotification.mp3"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ import useChatSDKStore from "../../hooks/useChatSDKStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
14
 
15
15
  export const FooterStateful = props => {
16
16
  var _footerProps$controlP3, _footerProps$controlP4;
@@ -84,21 +84,13 @@ export const FooterStateful = props => {
84
84
  isAudioMuted: state.appStates.isAudioMuted
85
85
  }
86
86
  };
87
- const footerId = (controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-footer";
88
- const footer = document.getElementById(footerId);
89
-
90
- if (footer) {
91
- footer.style.display = hideFooterDisplay ? "none" : "";
92
- }
93
-
94
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Footer, {
87
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !hideFooterDisplay && /*#__PURE__*/React.createElement(Footer, {
95
88
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
96
89
  controlProps: controlProps,
97
90
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
98
91
  }), /*#__PURE__*/React.createElement(AudioNotificationStateful, {
99
- audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? newMessageNotification,
100
- hideAudioNotificationButton: (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false,
101
- isAudioMuted: state.appStates.isAudioMuted ?? false
92
+ audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? NewMessageNotificationSoundBase64,
93
+ isAudioMuted: state.appStates.isAudioMuted === null ? (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false : state.appStates.isAudioMuted ?? false
102
94
  }));
103
95
  };
104
96
  export default FooterStateful;