@microsoft/omnichannel-chat-widget 1.7.8-main.7a07fc5 → 1.7.8-main.8428c08

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 (166) hide show
  1. package/lib/cjs/common/Constants.js +66 -20
  2. package/lib/cjs/common/KeyCodes.js +6 -1
  3. package/lib/cjs/common/contextDataStore/DataStoreManager.js +6 -1
  4. package/lib/cjs/common/facades/FacadeChatSDK.js +392 -295
  5. package/lib/cjs/common/storage/default/defaultCacheManager.js +6 -3
  6. package/lib/cjs/common/telemetry/ScenarioMarker.js +66 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +179 -148
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +281 -250
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +31 -11
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAppInsightsConfig.js +11 -0
  11. package/lib/cjs/common/telemetry/interfaces/IAppInsightsConfig.js +1 -0
  12. package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +119 -0
  13. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +17 -14
  14. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +5 -4
  15. package/lib/cjs/components/footerstateful/FooterStateful.js +13 -8
  16. package/lib/cjs/components/headerstateful/HeaderStateful.js +24 -14
  17. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +32 -19
  18. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +71 -56
  19. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +17 -8
  20. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +65 -52
  21. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +31 -18
  22. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +14 -6
  23. package/lib/cjs/components/livechatwidget/common/Deferred.js +14 -6
  24. package/lib/cjs/components/livechatwidget/common/chatDisconnectHelper.js +3 -1
  25. package/lib/cjs/components/livechatwidget/common/endChat.js +4 -18
  26. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +0 -5
  27. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +3 -1
  28. package/lib/cjs/components/livechatwidget/common/renderSurveyHelpers.js +7 -4
  29. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +7 -3
  30. package/lib/cjs/components/livechatwidget/common/startChat.js +5 -26
  31. package/lib/cjs/components/livechatwidget/common/startChatErrorHandler.js +7 -6
  32. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -20
  33. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +12 -8
  34. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +31 -10
  35. package/lib/cjs/components/postchatsurveypanestateful/common/isValidSurveyUrl.js +28 -0
  36. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +9 -6
  37. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -7
  38. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +4 -3
  39. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatAdapter.js +88 -65
  40. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatSDK.js +26 -7
  41. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +49 -26
  42. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatSDK.js +57 -35
  43. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +62 -52
  44. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +95 -61
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +6 -1
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +6 -1
  47. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer.js +53 -39
  48. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +4 -0
  49. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +88 -60
  50. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +18 -6
  51. package/lib/cjs/firstresponselatency/Constants.js +13 -0
  52. package/lib/cjs/firstresponselatency/FirstMessageTrackerFromBot.js +118 -0
  53. package/lib/cjs/firstresponselatency/FirstResponseLatencyTracker.js +201 -0
  54. package/lib/cjs/firstresponselatency/util.js +98 -0
  55. package/lib/cjs/plugins/createChatTranscript.js +92 -62
  56. package/lib/cjs/plugins/newMessageEventHandler.js +102 -88
  57. package/lib/esm/common/Constants.js +64 -19
  58. package/lib/esm/common/KeyCodes.js +6 -1
  59. package/lib/esm/common/contextDataStore/DataStoreManager.js +6 -1
  60. package/lib/esm/common/facades/FacadeChatSDK.js +392 -295
  61. package/lib/esm/common/storage/default/defaultCacheManager.js +6 -1
  62. package/lib/esm/common/telemetry/ScenarioMarker.js +59 -0
  63. package/lib/esm/common/telemetry/TelemetryConstants.js +179 -148
  64. package/lib/esm/common/telemetry/TelemetryHelper.js +281 -250
  65. package/lib/esm/common/telemetry/TelemetryManager.js +31 -11
  66. package/lib/esm/common/telemetry/defaultConfigs/defaultAppInsightsConfig.js +4 -0
  67. package/lib/esm/common/telemetry/interfaces/IAppInsightsConfig.js +1 -0
  68. package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +111 -0
  69. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +17 -14
  70. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +5 -4
  71. package/lib/esm/components/footerstateful/FooterStateful.js +13 -8
  72. package/lib/esm/components/headerstateful/HeaderStateful.js +24 -14
  73. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -19
  74. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +71 -56
  75. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +17 -8
  76. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +65 -52
  77. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +31 -18
  78. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +14 -6
  79. package/lib/esm/components/livechatwidget/common/Deferred.js +14 -6
  80. package/lib/esm/components/livechatwidget/common/chatDisconnectHelper.js +3 -1
  81. package/lib/esm/components/livechatwidget/common/endChat.js +4 -18
  82. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +1 -6
  83. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +3 -1
  84. package/lib/esm/components/livechatwidget/common/renderSurveyHelpers.js +7 -4
  85. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +7 -3
  86. package/lib/esm/components/livechatwidget/common/startChat.js +6 -27
  87. package/lib/esm/components/livechatwidget/common/startChatErrorHandler.js +7 -6
  88. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -20
  89. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +12 -8
  90. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +31 -10
  91. package/lib/esm/components/postchatsurveypanestateful/common/isValidSurveyUrl.js +21 -0
  92. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +9 -6
  93. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -7
  94. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +4 -3
  95. package/lib/esm/components/webchatcontainerstateful/common/DemoChatAdapter.js +88 -65
  96. package/lib/esm/components/webchatcontainerstateful/common/DemoChatSDK.js +26 -7
  97. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +49 -26
  98. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatSDK.js +57 -35
  99. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +63 -52
  100. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +95 -61
  101. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +6 -1
  102. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +6 -1
  103. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer.js +53 -39
  104. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +4 -0
  105. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +88 -60
  106. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +18 -6
  107. package/lib/esm/firstresponselatency/Constants.js +6 -0
  108. package/lib/esm/firstresponselatency/FirstMessageTrackerFromBot.js +112 -0
  109. package/lib/esm/firstresponselatency/FirstResponseLatencyTracker.js +194 -0
  110. package/lib/esm/firstresponselatency/util.js +87 -0
  111. package/lib/esm/plugins/createChatTranscript.js +92 -62
  112. package/lib/esm/plugins/newMessageEventHandler.js +100 -86
  113. package/lib/types/common/Constants.d.ts +5 -0
  114. package/lib/types/common/facades/FacadeChatSDK.d.ts +1 -0
  115. package/lib/types/common/telemetry/ScenarioMarker.d.ts +19 -0
  116. package/lib/types/common/telemetry/TelemetryConstants.d.ts +50 -33
  117. package/lib/types/common/telemetry/TelemetryHelper.d.ts +5 -0
  118. package/lib/types/common/telemetry/defaultConfigs/defaultAppInsightsConfig.d.ts +2 -0
  119. package/lib/types/common/telemetry/interfaces/IAppInsightsConfig.d.ts +4 -0
  120. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  121. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  122. package/lib/types/common/telemetry/loggers/appInsightsLogger.d.ts +5 -0
  123. package/lib/types/components/callingcontainerstateful/CallingContainerStateful.d.ts +2 -1
  124. package/lib/types/components/chatbuttonstateful/ChatButtonStateful.d.ts +2 -1
  125. package/lib/types/components/confirmationpanestateful/ConfirmationPaneStateful.d.ts +2 -1
  126. package/lib/types/components/dimlayer/DimLayer.d.ts +2 -1
  127. package/lib/types/components/draggable/DraggableChatWidget.d.ts +2 -2
  128. package/lib/types/components/draggable/DraggableEventEmitter.d.ts +2 -2
  129. package/lib/types/components/draggable/DraggableEventReceiver.d.ts +2 -2
  130. package/lib/types/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.d.ts +2 -1
  131. package/lib/types/components/footerstateful/FooterStateful.d.ts +2 -1
  132. package/lib/types/components/footerstateful/audionotificationstateful/AudioNotificationStateful.d.ts +2 -1
  133. package/lib/types/components/headerstateful/HeaderStateful.d.ts +2 -1
  134. package/lib/types/components/livechatwidget/LiveChatWidget.d.ts +2 -1
  135. package/lib/types/components/livechatwidget/common/createFooter.d.ts +2 -1
  136. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  137. package/lib/types/components/loadingpanestateful/LoadingPaneStateful.d.ts +2 -1
  138. package/lib/types/components/notificationpanestateful/NotificationPaneStateful.d.ts +2 -1
  139. package/lib/types/components/ooohpanestateful/OOOHPaneStateful.d.ts +2 -1
  140. package/lib/types/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.d.ts +2 -1
  141. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -1
  142. package/lib/types/components/postchatsurveypanestateful/common/isValidSurveyUrl.d.ts +2 -0
  143. package/lib/types/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.d.ts +2 -1
  144. package/lib/types/components/proactivechatpanestateful/ProactiveChatPaneStateful.d.ts +2 -1
  145. package/lib/types/components/reconnectchatpanestateful/ReconnectChatPaneStateful.d.ts +2 -1
  146. package/lib/types/components/startchaterrorpanestateful/StartChatErrorPaneStateful.d.ts +2 -1
  147. package/lib/types/components/webchatcontainerstateful/WebChatContainerStateful.d.ts +2 -1
  148. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatProps.d.ts +2 -2
  149. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Attachment.d.ts +2 -1
  150. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentContent.d.ts +2 -1
  151. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/AttachmentIcon.d.ts +2 -1
  152. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/DownloadBlockedAttachment.d.ts +2 -1
  153. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/MaliciousAttachment.d.ts +2 -1
  154. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/ScanInProgressAttachment.d.ts +2 -1
  155. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachments/Spinner.d.ts +2 -1
  156. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  157. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.d.ts +2 -1
  158. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.d.ts +2 -1
  159. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +2 -1
  160. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.d.ts +2 -1
  161. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -1
  162. package/lib/types/firstresponselatency/Constants.d.ts +30 -0
  163. package/lib/types/firstresponselatency/FirstMessageTrackerFromBot.d.ts +1 -0
  164. package/lib/types/firstresponselatency/FirstResponseLatencyTracker.d.ts +22 -0
  165. package/lib/types/firstresponselatency/util.d.ts +7 -0
  166. package/package.json +27 -13
@@ -7,7 +7,6 @@ exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStart
7
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
8
  var _Constants = require("../../../common/Constants");
9
9
  var _utils = require("../../../common/utils");
10
- var _authHelper = require("./authHelper");
11
10
  var _reconnectChatHelper = require("./reconnectChatHelper");
12
11
  var _startChatErrorHandler = require("./startChatErrorHandler");
13
12
  var _ActivityStreamHandler = require("./ActivityStreamHandler");
@@ -19,6 +18,7 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
19
18
  var _endChat = require("./endChat");
20
19
  var _createAdapter = require("./createAdapter");
21
20
  var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
21
+ var _FirstMessageTrackerFromBot = require("../../../firstresponselatency/FirstMessageTrackerFromBot");
22
22
  var _liveChatConfigUtils = require("./liveChatConfigUtils");
23
23
  var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
24
24
  var _persistentChatHelper = require("./persistentChatHelper");
@@ -30,20 +30,6 @@ let widgetInstanceId;
30
30
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
31
  let popoutWidgetInstanceId;
32
32
 
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
- const setAuthenticationIfApplicable = async (props, facadeChatSDK) => {
35
- const chatConfig = props === null || props === void 0 ? void 0 : props.chatConfig;
36
- const getAuthToken = props === null || props === void 0 ? void 0 : props.getAuthToken;
37
- const authClientFunction = (0, _authHelper.getAuthClientFunction)(chatConfig);
38
- if (getAuthToken && authClientFunction) {
39
- // set auth token to chat sdk before start chat
40
- const authSuccess = await (0, _authHelper.handleAuthentication)(facadeChatSDK.getChatSDK(), chatConfig, getAuthToken);
41
- if (!authSuccess.result) {
42
- throw new Error(_Constants.WidgetLoadCustomErrorString.AuthenticationFailedErrorString);
43
- }
44
- }
45
- };
46
-
47
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
34
  const prepareStartChat = async (props, facadeChatSDK, state, dispatch, setAdapter) => {
49
35
  optionalParams = {}; //Resetting to ensure no stale values
@@ -71,11 +57,6 @@ const prepareStartChat = async (props, facadeChatSDK, state, dispatch, setAdapte
71
57
  const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
72
58
  const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
73
59
 
74
- // Setting auth settings to OC API to retrieve existing persistent chat session before start chat if any
75
- if ((0, _reconnectChatHelper.isPersistentEnabled)(props.chatConfig)) {
76
- await setAuthenticationIfApplicable(props, facadeChatSDK);
77
- }
78
-
79
60
  //Setting PreChat and intiate chat
80
61
  await setPreChatAndInitiateChat(facadeChatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, state, props);
81
62
  };
@@ -151,6 +132,7 @@ const setPreChatAndInitiateChat = async (facadeChatSDK, dispatch, setAdapter, is
151
132
  const optionalParams = {
152
133
  isProactiveChat
153
134
  };
135
+ (0, _FirstMessageTrackerFromBot.createTrackingForFirstMessage)();
154
136
  await initStartChat(facadeChatSDK, dispatch, setAdapter, state, props, optionalParams);
155
137
  };
156
138
 
@@ -174,14 +156,11 @@ const initStartChat = async (facadeChatSDK, dispatch, setAdapter, state, props,
174
156
 
175
157
  //Start widget load timer
176
158
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
177
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
178
- Event: _TelemetryConstants.TelemetryEvent.WidgetLoadStarted,
179
- Description: "Widget loading started"
159
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
160
+ Event: _TelemetryConstants.TelemetryEvent.WidgetStartChatStarted,
161
+ Description: "Widget start chat started."
180
162
  });
181
163
 
182
- // Auth token retrieval needs to happen during start chat to support pop-out chat
183
- await setAuthenticationIfApplicable(props, facadeChatSDK);
184
-
185
164
  //Check if chat retrieved from cache
186
165
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
187
166
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
@@ -112,8 +112,9 @@ const logWidgetLoadFailed = ex => {
112
112
  if (ex !== null && ex !== void 0 && ex.httpResponseStatusCode) {
113
113
  exDetails.HttpResponseStatusCode = ex.httpResponseStatusCode;
114
114
  }
115
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
116
- Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
115
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
116
+ Event: _TelemetryConstants.TelemetryEvent.WidgetStartChatFailed,
117
+ Description: "Widget load complete with error",
117
118
  ExceptionDetails: exDetails,
118
119
  ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg === void 0 ? void 0 : _TelemetryTimers$Widg.milliSecondsElapsed
119
120
  });
@@ -124,8 +125,8 @@ const logWidgetLoadComplete = additionalMessage => {
124
125
  if (additionalMessage) {
125
126
  descriptionString += `. ${additionalMessage}`;
126
127
  }
127
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
128
- Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
128
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
129
+ Event: _TelemetryConstants.TelemetryEvent.WidgetStartChatCompleted,
129
130
  Description: descriptionString,
130
131
  ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg2 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg2 === void 0 ? void 0 : _TelemetryTimers$Widg2.milliSecondsElapsed
131
132
  });
@@ -140,8 +141,8 @@ const logWidgetLoadCompleteWithError = ex => {
140
141
  if (ex !== null && ex !== void 0 && ex.httpResponseStatusCode) {
141
142
  exDetails.HttpResponseStatusCode = ex.httpResponseStatusCode;
142
143
  }
143
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.WARN, {
144
- Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
144
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
145
+ Event: _TelemetryConstants.TelemetryEvent.WidgetStartChatFailed,
145
146
  Description: "Widget load complete with error",
146
147
  ExceptionDetails: exDetails,
147
148
  ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg3 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg3 === void 0 ? void 0 : _TelemetryTimers$Widg3.milliSecondsElapsed
@@ -64,11 +64,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
64
64
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
65
65
  let uiTimer;
66
66
  const LiveChatWidgetStateful = props => {
67
- var _props$webChatContain, _props$styleProps, _props$webChatContain2, _props$webChatContain3, _props$controlProps, _props$controlProps3, _state$appStates7, _props$webChatContain7, _state$appStates14, _props$webChatContain9, _props$webChatContain10, _props$controlProps12, _props$draggableChatW, _props$draggableChatW2, _props$draggableChatW3, _props$draggableChatW4, _props$draggableChatW5, _livechatProps$webCha, _props$webChatContain11, _props$webChatContain12, _props$webChatContain13, _props$webChatContain14, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$compon8, _livechatProps$contro10, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$contro13, _livechatProps$compon11, _livechatProps$compon12, _livechatProps$compon13;
67
+ var _props$webChatContain, _props$styleProps, _props$webChatContain2, _props$webChatContain3, _props$controlProps, _props$controlProps3, _state$appStates7, _props$webChatContain7, _state$appStates14, _props$webChatContain9, _props$webChatContain10, _props$controlProps12, _props$draggableChatW, _props$draggableChatW2, _props$draggableChatW3, _props$draggableChatW4, _props$draggableChatW5, _livechatProps$webCha, _props$webChatContain11, _props$webChatContain12, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _props$webChatContain17, _props$webChatContain18, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$compon8, _livechatProps$contro10, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$contro13, _livechatProps$compon11, _livechatProps$compon12, _livechatProps$compon13;
68
68
  (0, _react2.useEffect)(() => {
69
69
  uiTimer = (0, _utils.createTimer)();
70
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
71
- Event: _TelemetryConstants.TelemetryEvent.UXLivechatwidgetStart
70
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
71
+ Event: _TelemetryConstants.TelemetryEvent.UXLiveChatWidgetStart,
72
+ Description: "Live chat widget loading started."
72
73
  });
73
74
  }, []);
74
75
  const [state, dispatch] = (0, _useChatContextStore.default)();
@@ -319,7 +320,7 @@ const LiveChatWidgetStateful = props => {
319
320
  });
320
321
  });
321
322
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.StartProactiveChat).subscribe(msg => {
322
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
323
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
323
324
  Event: _TelemetryConstants.TelemetryEvent.StartProactiveChatEventReceived,
324
325
  Description: "Start proactive chat event received."
325
326
  });
@@ -417,7 +418,7 @@ const LiveChatWidgetStateful = props => {
417
418
 
418
419
  // Start chat from SDK Event
419
420
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.StartChat).subscribe(msg => {
420
- var _props$chatConfig5, _props$chatConfig5$Li, _props$chatConfig6, _props$chatConfig6$Li, _msg$payload5, _msg$payload6, _msg$payload7, _msg$payload9, _inMemoryState$appSta2, _inMemoryState$appSta3, _inMemoryState$appSta4, _inMemoryState$appSta5;
421
+ var _props$chatConfig5, _props$chatConfig5$Li, _props$chatConfig6, _props$chatConfig6$Li, _msg$payload5, _msg$payload6, _msg$payload7, _msg$payload9, _inMemoryState$appSta2, _inMemoryState$appSta3;
421
422
  // If chat is out of operating hours chat widget sets the conversation state to OutOfOffice.
422
423
  if (typeof (props === null || props === void 0 ? void 0 : (_props$chatConfig5 = props.chatConfig) === null || _props$chatConfig5 === void 0 ? void 0 : (_props$chatConfig5$Li = _props$chatConfig5.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig5$Li === void 0 ? void 0 : _props$chatConfig5$Li.OutOfOperatingHours) === "string" && (props === null || props === void 0 ? void 0 : (_props$chatConfig6 = props.chatConfig) === null || _props$chatConfig6 === void 0 ? void 0 : (_props$chatConfig6$Li = _props$chatConfig6.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig6$Li === void 0 ? void 0 : _props$chatConfig6$Li.OutOfOperatingHours.toLowerCase()) === "true") {
423
424
  (state === null || state === void 0 ? void 0 : state.appStates.isMinimized) && dispatch({
@@ -436,7 +437,7 @@ const LiveChatWidgetStateful = props => {
436
437
  }
437
438
  if (msg !== null && msg !== void 0 && (_msg$payload7 = msg.payload) !== null && _msg$payload7 !== void 0 && _msg$payload7.customContext) {
438
439
  var _msg$payload8;
439
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
440
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
440
441
  Event: _TelemetryConstants.TelemetryEvent.CustomContextReceived,
441
442
  Description: "CustomContext received through startChat event."
442
443
  });
@@ -445,8 +446,8 @@ const LiveChatWidgetStateful = props => {
445
446
  payload: msg === null || msg === void 0 ? void 0 : (_msg$payload8 = msg.payload) === null || _msg$payload8 === void 0 ? void 0 : _msg$payload8.customContext
446
447
  });
447
448
  }
448
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
449
- Event: _TelemetryConstants.TelemetryEvent.StartChatEventRecevied,
449
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
450
+ Event: _TelemetryConstants.TelemetryEvent.StartChatEventReceived,
450
451
  Description: "Start chat event received."
451
452
  });
452
453
  const inMemoryState = (0, _createReducer.executeReducer)(state, {
@@ -455,8 +456,14 @@ const LiveChatWidgetStateful = props => {
455
456
  });
456
457
  inMemoryState.domainStates.customContext = msg === null || msg === void 0 ? void 0 : (_msg$payload9 = msg.payload) === null || _msg$payload9 === void 0 ? void 0 : _msg$payload9.customContext;
457
458
 
458
- // Only initiate new chat if widget runtime state is one of the followings
459
- if (((_inMemoryState$appSta2 = inMemoryState.appStates) === null || _inMemoryState$appSta2 === void 0 ? void 0 : _inMemoryState$appSta2.conversationState) === _ConversationState.ConversationState.Closed || ((_inMemoryState$appSta3 = inMemoryState.appStates) === null || _inMemoryState$appSta3 === void 0 ? void 0 : _inMemoryState$appSta3.conversationState) === _ConversationState.ConversationState.InActive || ((_inMemoryState$appSta4 = inMemoryState.appStates) === null || _inMemoryState$appSta4 === void 0 ? void 0 : _inMemoryState$appSta4.conversationState) === _ConversationState.ConversationState.Postchat) {
459
+ /*
460
+ * If the conversation is in closed state then we start a new chat,
461
+ * else if the conversation is in active state then we maximize the chat
462
+ * If the conversation is in inactive or postchat state then we maximize the chat.
463
+ *
464
+ * To start a new chat, it needs to be called via the close button or close chat via SDK.
465
+ **/
466
+ if (((_inMemoryState$appSta2 = inMemoryState.appStates) === null || _inMemoryState$appSta2 === void 0 ? void 0 : _inMemoryState$appSta2.conversationState) === _ConversationState.ConversationState.Closed) {
460
467
  _omnichannelChatComponents.BroadcastService.postMessage({
461
468
  eventName: _TelemetryConstants.BroadcastEvent.ChatInitiated
462
469
  });
@@ -465,7 +472,7 @@ const LiveChatWidgetStateful = props => {
465
472
  }
466
473
 
467
474
  // If minimized, maximize the chat
468
- if ((inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta5 = inMemoryState.appStates) === null || _inMemoryState$appSta5 === void 0 ? void 0 : _inMemoryState$appSta5.isMinimized) === true) {
475
+ if ((inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta3 = inMemoryState.appStates) === null || _inMemoryState$appSta3 === void 0 ? void 0 : _inMemoryState$appSta3.isMinimized) === true) {
469
476
  var _inMemoryState$domain, _inMemoryState$domain2, _inMemoryState$domain3, _inMemoryState$domain4;
470
477
  dispatch({
471
478
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
@@ -484,7 +491,7 @@ const LiveChatWidgetStateful = props => {
484
491
 
485
492
  // End chat
486
493
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.InitiateEndChat).subscribe(async () => {
487
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
494
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
488
495
  Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
489
496
  Description: "Received InitiateEndChat BroadcastEvent."
490
497
  });
@@ -593,12 +600,12 @@ const LiveChatWidgetStateful = props => {
593
600
  disablePolling: true
594
601
  });
595
602
  facadeChatSDK === null || facadeChatSDK === void 0 ? void 0 : facadeChatSDK.onAgentEndSession(event => {
596
- var _inMemoryState$appSta6;
603
+ var _inMemoryState$appSta4;
597
604
  const inMemoryState = (0, _createReducer.executeReducer)(state, {
598
605
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
599
606
  payload: null
600
607
  });
601
- if ("participantsRemoved" in event && (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta6 = inMemoryState.appStates) === null || _inMemoryState$appSta6 === void 0 ? void 0 : _inMemoryState$appSta6.conversationState) === _ConversationState.ConversationState.Active) {
608
+ if ("participantsRemoved" in event && (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta4 = inMemoryState.appStates) === null || _inMemoryState$appSta4 === void 0 ? void 0 : _inMemoryState$appSta4.conversationState) === _ConversationState.ConversationState.Active) {
602
609
  setWebChatStyles(styles => {
603
610
  return {
604
611
  ...styles,
@@ -741,13 +748,13 @@ const LiveChatWidgetStateful = props => {
741
748
 
742
749
  // Handle Chat disconnect cases
743
750
  (0, _react2.useEffect)(() => {
744
- var _inMemoryState$appSta7;
751
+ var _inMemoryState$appSta5;
745
752
  const inMemoryState = (0, _createReducer.executeReducer)(state, {
746
753
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
747
754
  payload: null
748
755
  });
749
756
  (0, _chatDisconnectHelper.handleChatDisconnect)(props, inMemoryState, setWebChatStyles);
750
- const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta7 = inMemoryState.appStates) === null || _inMemoryState$appSta7 === void 0 ? void 0 : _inMemoryState$appSta7.chatDisconnectEventReceived;
757
+ const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta5 = inMemoryState.appStates) === null || _inMemoryState$appSta5 === void 0 ? void 0 : _inMemoryState$appSta5.chatDisconnectEventReceived;
751
758
  if (chatDisconnectState && adapter) {
752
759
  try {
753
760
  adapter.end();
@@ -770,8 +777,9 @@ const LiveChatWidgetStateful = props => {
770
777
  });
771
778
  }, [(_props$webChatContain9 = props.webChatContainerProps) === null || _props$webChatContain9 === void 0 ? void 0 : _props$webChatContain9.renderingMiddlewareProps]);
772
779
  (0, _react2.useEffect)(() => {
773
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
774
- Event: _TelemetryConstants.TelemetryEvent.UXLivechatwidgetCompleted,
780
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
781
+ Event: _TelemetryConstants.TelemetryEvent.UXLiveChatWidgetCompleted,
782
+ Description: "Live chat widget loading completed.",
775
783
  ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
776
784
  });
777
785
  }, []);
@@ -876,8 +884,8 @@ const LiveChatWidgetStateful = props => {
876
884
  userID: userID,
877
885
  styleOptions: {
878
886
  ...webChatStyles,
879
- bubbleBackground: ((_props$webChatContain11 = props.webChatContainerProps) === null || _props$webChatContain11 === void 0 ? void 0 : (_props$webChatContain12 = _props$webChatContain11.adaptiveCardStyles) === null || _props$webChatContain12 === void 0 ? void 0 : _props$webChatContain12.background) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.background,
880
- bubbleTextColor: ((_props$webChatContain13 = props.webChatContainerProps) === null || _props$webChatContain13 === void 0 ? void 0 : (_props$webChatContain14 = _props$webChatContain13.adaptiveCardStyles) === null || _props$webChatContain14 === void 0 ? void 0 : _props$webChatContain14.color) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.color
887
+ bubbleBackground: ((_props$webChatContain11 = props.webChatContainerProps) === null || _props$webChatContain11 === void 0 ? void 0 : (_props$webChatContain12 = _props$webChatContain11.webChatStyles) === null || _props$webChatContain12 === void 0 ? void 0 : _props$webChatContain12.bubbleBackground) ?? ((_props$webChatContain13 = props.webChatContainerProps) === null || _props$webChatContain13 === void 0 ? void 0 : (_props$webChatContain14 = _props$webChatContain13.adaptiveCardStyles) === null || _props$webChatContain14 === void 0 ? void 0 : _props$webChatContain14.background) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.background,
888
+ bubbleTextColor: ((_props$webChatContain15 = props.webChatContainerProps) === null || _props$webChatContain15 === void 0 ? void 0 : (_props$webChatContain16 = _props$webChatContain15.webChatStyles) === null || _props$webChatContain16 === void 0 ? void 0 : _props$webChatContain16.bubbleTextColor) ?? ((_props$webChatContain17 = props.webChatContainerProps) === null || _props$webChatContain17 === void 0 ? void 0 : (_props$webChatContain18 = _props$webChatContain17.adaptiveCardStyles) === null || _props$webChatContain18 === void 0 ? void 0 : _props$webChatContain18.color) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.color
881
889
  },
882
890
  directLine: directLine
883
891
  }), /*#__PURE__*/_react2.default.createElement(_react.Stack, {
@@ -7,11 +7,11 @@ exports.default = exports.OutOfOfficeHoursPaneStateful = void 0;
7
7
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _utils = require("../../common/utils");
10
+ var _dompurify = _interopRequireDefault(require("dompurify"));
10
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
12
  var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
12
13
  var _defaultgeneralOOOHPaneStyleProps = require("./common/defaultStyleProps/defaultgeneralOOOHPaneStyleProps");
13
14
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
14
- var _dompurify = _interopRequireDefault(require("dompurify"));
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -20,8 +20,9 @@ const OutOfOfficeHoursPaneStateful = props => {
20
20
  var _props$styleProps;
21
21
  (0, _react.useEffect)(() => {
22
22
  uiTimer = (0, _utils.createTimer)();
23
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
24
- Event: _TelemetryConstants.TelemetryEvent.UXOOHPaneStart
23
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
24
+ Event: _TelemetryConstants.TelemetryEvent.UXOutOfOfficeHoursPaneStart,
25
+ Description: "Out of office hours pane loading started."
25
26
  });
26
27
  }, []);
27
28
  const [state] = (0, _useChatContextStore.default)();
@@ -38,15 +39,18 @@ const OutOfOfficeHoursPaneStateful = props => {
38
39
 
39
40
  // Move focus to the first button
40
41
  (0, _react.useEffect)(() => {
41
- const firstElement = (0, _utils.findAllFocusableElement)(`#${state.domainStates.widgetElementId}`);
42
- if (firstElement && firstElement[0]) {
43
- firstElement[0].focus();
42
+ if (state.domainStates.widgetElementId !== null && state.domainStates.widgetElementId !== undefined && state.domainStates.widgetElementId.trim() !== "") {
43
+ const firstElement = (0, _utils.findAllFocusableElement)(`#${state.domainStates.widgetElementId}`);
44
+ if (firstElement && firstElement[0]) {
45
+ firstElement[0].focus();
46
+ }
44
47
  }
45
48
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
46
49
  Event: _TelemetryConstants.TelemetryEvent.OutOfOfficePaneLoaded
47
50
  });
48
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
49
- Event: _TelemetryConstants.TelemetryEvent.UXOOHPaneCompleted,
51
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
52
+ Event: _TelemetryConstants.TelemetryEvent.UXOutOfOfficeHoursPaneCompleted,
53
+ Description: "Out of office hours pane loading completed.",
50
54
  ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
51
55
  });
52
56
  }, []);
@@ -14,17 +14,19 @@ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
14
14
  var _defaultgeneralPostChatSurveyPaneStyleProps = require("./common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps");
15
15
  var _utils = require("../../common/utils");
16
16
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
17
+ var _isValidSurveyUrl = _interopRequireDefault(require("./common/isValidSurveyUrl"));
17
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
21
  const generateSurveyInviteLink = function (surveyInviteLink, isEmbed, locale, compact) {
21
22
  let showMultiLingual = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
22
- const surveyLink = `${surveyInviteLink}
23
- &embed=${isEmbed.toString()}
24
- &compact=${compact.toString() ?? "true"}
25
- &lang=${locale ?? "en-us"}
26
- &showmultilingual=${showMultiLingual.toString() ?? "false"}`;
27
- return surveyLink;
23
+ const surveyLinkParams = new URLSearchParams({
24
+ embed: isEmbed.toString(),
25
+ compact: (compact ?? true).toString(),
26
+ lang: locale ?? "en-us",
27
+ showmultilingual: (showMultiLingual ?? false).toString()
28
+ });
29
+ return `${surveyInviteLink}&${surveyLinkParams.toString()}`;
28
30
  };
29
31
  const PostChatSurveyPaneStateful = props => {
30
32
  var _props$styleProps, _state$appStates, _props$controlProps;
@@ -54,6 +56,20 @@ const PostChatSurveyPaneStateful = props => {
54
56
  surveyURL: ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.surveyURL) ?? surveyInviteLink,
55
57
  ...props.controlProps
56
58
  };
59
+ if (controlProps.surveyURL) {
60
+ if (!(0, _isValidSurveyUrl.default)(controlProps.surveyURL)) {
61
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
62
+ Event: _TelemetryConstants.TelemetryEvent.PostChatSurveyUrlValidationFailed,
63
+ Description: `${controlProps.surveyURL} is not a valid Survey URL`
64
+ });
65
+ controlProps.surveyURL = "";
66
+ } else {
67
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
68
+ Event: _TelemetryConstants.TelemetryEvent.PostChatSurveyUrlValidationCompleted,
69
+ Description: `${controlProps.surveyURL} is a valid Survey URL`
70
+ });
71
+ }
72
+ }
57
73
 
58
74
  // Move focus to the first button
59
75
  (0, _react.useEffect)(() => {
@@ -77,12 +93,17 @@ const PostChatSurveyPaneStateful = props => {
77
93
  Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceResponsePageLoaded
78
94
  });
79
95
  } else if (data === _CustomerVoiceEvents.CustomerVoiceEvents.FormResponseSubmitted) {
80
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
81
- Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseSubmitted
96
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
97
+ Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseSubmitted,
98
+ Description: "Customer Voice form response submitted."
82
99
  });
83
100
  } else if (data === _CustomerVoiceEvents.CustomerVoiceEvents.FormResponseError) {
84
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
85
- Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseError
101
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
102
+ Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseError,
103
+ Description: "Customer Voice form response error.",
104
+ ExceptionDetails: {
105
+ message: "Customer Voice form response error."
106
+ }
86
107
  });
87
108
  }
88
109
  });
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../../common/utils");
8
+ const validRootDomains = ["microsoft.com", "microsoft.us", "appsplatform.us", "powervirtualagents.cn"];
9
+ const isValidSurveyUrl = url => {
10
+ if ((0, _utils.isNullOrEmptyString)(url)) {
11
+ return false;
12
+ }
13
+ try {
14
+ const objectUrl = new URL(url);
15
+ if (!objectUrl.origin || objectUrl.origin === "null") {
16
+ return false;
17
+ }
18
+ const validDomain = validRootDomains.find(domain => objectUrl.origin.endsWith(domain));
19
+ if (validDomain) {
20
+ return true;
21
+ }
22
+ } catch (error) {
23
+ return false;
24
+ }
25
+ return false;
26
+ };
27
+ var _default = isValidSurveyUrl;
28
+ exports.default = _default;
@@ -26,8 +26,9 @@ const PreChatSurveyPaneStateful = props => {
26
26
  var _surveyProps$stylePro, _props$surveyProps, _props$surveyProps$co;
27
27
  (0, _react.useEffect)(() => {
28
28
  uiTimer = (0, _utils.createTimer)();
29
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
30
- Event: _TelemetryConstants.TelemetryEvent.UXPrechatPaneStart
29
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
30
+ Event: _TelemetryConstants.TelemetryEvent.UXPrechatPaneStart,
31
+ Description: "Prechat survey pane loading started."
31
32
  });
32
33
  }, []);
33
34
 
@@ -76,8 +77,9 @@ const PreChatSurveyPaneStateful = props => {
76
77
  payload: getAdaptiveCardPayload(state.domainStates.preChatSurveyResponse, requiredFieldMissingMessage),
77
78
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
79
  onSubmit: async values => {
79
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
80
- Event: _TelemetryConstants.TelemetryEvent.PrechatSubmitted
80
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
81
+ Event: _TelemetryConstants.TelemetryEvent.PrechatSubmitCompleted,
82
+ Description: "Prechat survey submitted."
81
83
  });
82
84
  dispatch({
83
85
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -148,9 +150,10 @@ const PreChatSurveyPaneStateful = props => {
148
150
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
149
151
  Event: _TelemetryConstants.TelemetryEvent.PrechatSurveyLoaded
150
152
  });
151
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
153
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
152
154
  Event: _TelemetryConstants.TelemetryEvent.UXPrechatPaneCompleted,
153
- ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
155
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed,
156
+ Description: "Prechat survey pane loading completed."
154
157
  });
155
158
  }, []);
156
159
 
@@ -24,8 +24,9 @@ const ProactiveChatPaneStateful = props => {
24
24
  var _proactiveChatProps$c;
25
25
  (0, _react.useEffect)(() => {
26
26
  uiTimer = (0, _utils.createTimer)();
27
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
28
- Event: _TelemetryConstants.TelemetryEvent.UXProactiveChatPaneStart
27
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
28
+ Event: _TelemetryConstants.TelemetryEvent.UXProactiveChatPaneStart,
29
+ Description: "Proactive chat pane loading started."
29
30
  });
30
31
  }, []);
31
32
  const [state, dispatch] = (0, _useChatContextStore.default)();
@@ -50,8 +51,8 @@ const ProactiveChatPaneStateful = props => {
50
51
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
51
52
  payload: _ConversationState.ConversationState.Closed
52
53
  });
53
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
54
- Event: _TelemetryConstants.TelemetryEvent.ProactiveChatRejected,
54
+ _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
55
+ Event: _TelemetryConstants.TelemetryEvent.ProactiveChatTimeOutCompleted,
55
56
  ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers.LcwLoadToChatButtonTimer.milliSecondsElapsed,
56
57
  Description: "Proactive chat invitation timed out."
57
58
  });
@@ -129,9 +130,10 @@ const ProactiveChatPaneStateful = props => {
129
130
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
130
131
  Event: _TelemetryConstants.TelemetryEvent.ProactiveChatPaneLoaded
131
132
  });
132
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
133
- Event: _TelemetryConstants.TelemetryEvent.UXProactiveChatCompleted,
134
- ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
133
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
134
+ Event: _TelemetryConstants.TelemetryEvent.UXProactiveChatPaneCompleted,
135
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed,
136
+ Description: "Proactive chat pane loading completed."
135
137
  });
136
138
  return () => {
137
139
  clearTimeout(timeoutEvent);
@@ -4,13 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.WebChatContainerStateful = void 0;
7
+ var _Constants = require("../../common/Constants");
7
8
  var _react = require("@fluentui/react");
8
9
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
10
  var _react2 = _interopRequireWildcard(require("react"));
10
11
  var _utils = require("../../common/utils");
11
12
  var _BotMagicCodeStore = require("./webchatcontroller/BotMagicCodeStore");
12
13
  var _botframeworkWebchat = require("botframework-webchat");
13
- var _Constants = require("../../common/Constants");
14
14
  var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
15
15
  var _NotificationHandler = require("./webchatcontroller/notification/NotificationHandler");
16
16
  var _NotificationScenarios = require("./webchatcontroller/enums/NotificationScenarios");
@@ -56,7 +56,7 @@ const createMagicCodeSuccessResponse = signin => {
56
56
  };
57
57
  };
58
58
  const WebChatContainerStateful = props => {
59
- var _webChatContainerProp, _webChatContainerProp2, _webChatContainerProp3, _webChatContainerProp4, _webChatContainerProp5, _webChatContainerProp6, _webChatContainerProp7, _props$webChatContain5, _props$webChatContain6, _defaultWebChatContai, _props$webChatContain7, _props$webChatContain8, _defaultWebChatContai2, _webChatContainerProp8, _webChatContainerProp9, _webChatContainerProp10, _webChatContainerProp11, _webChatContainerProp12, _webChatContainerProp13, _webChatContainerProp14, _webChatContainerProp15, _props$webChatContain9, _props$webChatContain10;
59
+ var _webChatContainerProp, _webChatContainerProp2, _webChatContainerProp3, _webChatContainerProp4, _webChatContainerProp5, _webChatContainerProp6, _webChatContainerProp7, _props$webChatContain5, _props$webChatContain6, _defaultWebChatContai, _props$webChatContain7, _props$webChatContain8, _defaultWebChatContai2, _webChatContainerProp8, _webChatContainerProp9, _webChatContainerProp10, _webChatContainerProp11, _webChatContainerProp12, _webChatContainerProp13, _webChatContainerProp14, _webChatContainerProp15, _webChatContainerProp16, _props$webChatContain9, _props$webChatContain10;
60
60
  (0, _react2.useEffect)(() => {
61
61
  uiTimer = (0, _utils.createTimer)();
62
62
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -241,8 +241,9 @@ const WebChatContainerStateful = props => {
241
241
  color: ${(webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : (_webChatContainerProp14 = webChatContainerProps.renderingMiddlewareProps) === null || _webChatContainerProp14 === void 0 ? void 0 : (_webChatContainerProp15 = _webChatContainerProp14.sentMessageAnchorStyles) === null || _webChatContainerProp15 === void 0 ? void 0 : _webChatContainerProp15.color) ?? (_defaultSentMessageAnchorStyles.defaultSentMessageAnchorStyles === null || _defaultSentMessageAnchorStyles.defaultSentMessageAnchorStyles === void 0 ? void 0 : _defaultSentMessageAnchorStyles.defaultSentMessageAnchorStyles.color)};
242
242
  }
243
243
 
244
+ // we had a nasty bug long time ago with crashing borders messing with the sendbox, so if customer adds this value, they need to deal with that
244
245
  .webchat__bubble:not(.webchat__bubble--from-user) .webchat__bubble__content {
245
- border-radius: 0 !important; /* Override border-radius */
246
+ border-radius: ${(webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : (_webChatContainerProp16 = webChatContainerProps.webChatStyles) === null || _webChatContainerProp16 === void 0 ? void 0 : _webChatContainerProp16.bubbleBorderRadius) ?? 0} !important; /* Override border-radius */
246
247
  }
247
248
 
248
249
  .webchat__stacked-layout_container>div {