@microsoft/omnichannel-chat-widget 0.1.0-main.cf54410 → 0.1.0-main.e170704

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 (141) hide show
  1. package/README.md +227 -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 +36 -4
  5. package/lib/cjs/common/telemetry/TelemetryConstants.js +42 -4
  6. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  7. package/lib/cjs/common/telemetry/TelemetryManager.js +11 -6
  8. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  10. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +31 -10
  11. package/lib/cjs/common/utils.js +15 -2
  12. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  13. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -41
  14. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  15. package/lib/cjs/components/footerstateful/FooterStateful.js +4 -5
  16. package/lib/cjs/components/headerstateful/HeaderStateful.js +11 -8
  17. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  18. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +16 -9
  19. package/lib/cjs/components/livechatwidget/common/endChat.js +102 -58
  20. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  21. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +28 -7
  22. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  23. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +6 -17
  24. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
  25. package/lib/cjs/components/livechatwidget/common/startChat.js +52 -39
  26. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  27. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +96 -28
  28. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  29. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  30. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  31. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -5
  32. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
  33. package/lib/cjs/{assets/assets.d.js → components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js} +0 -0
  34. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  35. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  36. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
  37. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  38. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  39. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +44 -0
  40. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  41. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +7 -7
  42. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  43. package/lib/cjs/contexts/createReducer.js +7 -10
  44. package/lib/cjs/controller/componentController.js +2 -2
  45. package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
  46. package/lib/esm/assets/Audios.js +1 -0
  47. package/lib/esm/assets/Icons.js +11 -0
  48. package/lib/esm/common/Constants.js +32 -3
  49. package/lib/esm/common/telemetry/TelemetryConstants.js +38 -3
  50. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  51. package/lib/esm/common/telemetry/TelemetryManager.js +10 -6
  52. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  53. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  54. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  55. package/lib/esm/common/utils.js +11 -1
  56. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  57. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -37
  58. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  59. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  60. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -9
  61. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  62. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +14 -10
  63. package/lib/esm/components/livechatwidget/common/endChat.js +100 -55
  64. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  65. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +25 -8
  66. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  67. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +5 -14
  68. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
  69. package/lib/esm/components/livechatwidget/common/startChat.js +50 -38
  70. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  71. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +88 -27
  72. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  73. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  74. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  75. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +4 -4
  76. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
  77. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  78. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  79. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  80. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  81. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  82. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  83. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +31 -0
  84. package/lib/esm/contexts/common/ConversationState.js +3 -2
  85. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +7 -7
  86. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  87. package/lib/esm/contexts/createReducer.js +7 -9
  88. package/lib/esm/controller/componentController.js +2 -2
  89. package/lib/esm/plugins/newMessageEventHandler.js +84 -0
  90. package/lib/types/assets/Audios.d.ts +1 -0
  91. package/lib/types/assets/Icons.d.ts +11 -0
  92. package/lib/types/common/Constants.d.ts +18 -1
  93. package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
  94. package/lib/types/common/telemetry/TelemetryConstants.d.ts +25 -1
  95. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
  96. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  97. package/lib/types/common/utils.d.ts +1 -0
  98. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  99. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  100. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  101. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  102. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  103. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  104. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  105. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -1
  106. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  107. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  108. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  109. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  110. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  111. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  112. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  113. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  114. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +7 -7
  115. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  116. package/package.json +9 -11
  117. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  118. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  119. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  120. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  121. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  122. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  123. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  124. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  125. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  126. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  127. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  128. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  129. package/lib/esm/assets/assets.d.js +0 -0
  130. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  131. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  132. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  133. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  134. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  135. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  136. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  137. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  138. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  139. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  140. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  141. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -13,7 +13,7 @@ export let ScenarioType;
13
13
  ScenarioType["ACS_ADAPTER"] = "LCW_ACSAdapterEvents";
14
14
  })(ScenarioType || (ScenarioType = {}));
15
15
 
16
- export let LogLevel;
16
+ export let LogLevel; // Events used in certain functionalities that are not being logged
17
17
 
18
18
  (function (LogLevel) {
19
19
  LogLevel["INFO"] = "INFO";
@@ -22,6 +22,25 @@ export let LogLevel;
22
22
  LogLevel["ERROR"] = "ERROR";
23
23
  })(LogLevel || (LogLevel = {}));
24
24
 
25
+ export let BroadcastEvent; // Events being logged
26
+
27
+ (function (BroadcastEvent) {
28
+ BroadcastEvent["LoadPostChatSurvey"] = "LoadPostChatSurvey";
29
+ BroadcastEvent["EndChat"] = "ChatEnded";
30
+ BroadcastEvent["NewMessageNotification"] = "NewMessageNotification";
31
+ BroadcastEvent["UnreadMessageCount"] = "UnreadMessageCount";
32
+ BroadcastEvent["ChatWidgetStateChanged"] = "ChatWidgetStateChanged";
33
+ BroadcastEvent["ProactiveChatStartChat"] = "ProactiveChatStartChat";
34
+ BroadcastEvent["ProactiveChatStartPopoutChat"] = "ProactiveChatStartPopoutChat";
35
+ BroadcastEvent["InvalidAdaptiveCardFormat"] = "InvalidAdaptiveCardFormat";
36
+ BroadcastEvent["NewMessageSent"] = "NewMessageSent";
37
+ BroadcastEvent["NewMessageReceived"] = "NewMessageReceived";
38
+ BroadcastEvent["RedirectPageRequest"] = "RedirectPageRequest";
39
+ BroadcastEvent["StartChatSkippingChatButtonRendering"] = "StartChatSkippingChatButtonRendering";
40
+ BroadcastEvent["StartUnauthenticatedReconnectChat"] = "StartUnauthenticatedReconnectChat";
41
+ BroadcastEvent["SetCustomContext"] = "SetCustomContext";
42
+ })(BroadcastEvent || (BroadcastEvent = {}));
43
+
25
44
  export let TelemetryEvent;
26
45
 
27
46
  (function (TelemetryEvent) {
@@ -70,7 +89,9 @@ export let TelemetryEvent;
70
89
  TelemetryEvent["PrechatSurveyLoaded"] = "PrechatSurveyLoaded";
71
90
  TelemetryEvent["PrechatSubmitted"] = "PrechatSubmitted";
72
91
  TelemetryEvent["StartChatSDKCall"] = "StartChatCall";
92
+ TelemetryEvent["StartChatEventRecevied"] = "StartChatEventReceived";
73
93
  TelemetryEvent["EndChatSDKCall"] = "EndChatCall";
94
+ TelemetryEvent["EndChatEventReceived"] = "EndChatEventReceived";
74
95
  TelemetryEvent["OnNewMessageFailed"] = "OnNewMessageFailed";
75
96
  TelemetryEvent["OnNewMessageAudioNotificationFailed"] = "OnNewMessageAudioNotificationFailed";
76
97
  TelemetryEvent["DownloadTranscriptResponseNullOrUndefined"] = "DownloadTranscriptResponseNullOrUndefined";
@@ -84,6 +105,7 @@ export let TelemetryEvent;
84
105
  TelemetryEvent["LoadingPaneLoaded"] = "LoadingPaneLoaded";
85
106
  TelemetryEvent["EmailTranscriptLoaded"] = "EmailTranscriptLoaded";
86
107
  TelemetryEvent["OutOfOfficePaneLoaded"] = "OutOfOfficePaneLoaded";
108
+ TelemetryEvent["PostChatSurveyLoadingPaneLoaded"] = "PostChatSurveyLoadingPaneLoaded";
87
109
  TelemetryEvent["PostChatSurveyLoaded"] = "PostChatSurveyLoaded";
88
110
  TelemetryEvent["ConfirmationPaneLoaded"] = "ConfirmationPaneLoaded";
89
111
  TelemetryEvent["ProactiveChatPaneLoaded"] = "ProactiveChatPaneLoaded";
@@ -105,7 +127,10 @@ export let TelemetryEvent;
105
127
  TelemetryEvent["InvalidConfiguration"] = "InvalidConfiguration";
106
128
  TelemetryEvent["SendTypingIndicatorSucceeded"] = "SendTypingIndicatorSucceeded";
107
129
  TelemetryEvent["SendTypingIndicatorFailed"] = "SendTypingIndicatorFailed";
130
+ TelemetryEvent["WebChatEvent"] = "WebChatEvent";
108
131
  TelemetryEvent["PreChatSurveyStartChatMethodFailed"] = "PreChatSurveyStartChatMethodFailed";
132
+ TelemetryEvent["ChatAlreadyTriggered"] = "ChatAlreadyTriggered";
133
+ TelemetryEvent["StartProactiveChatEventReceived"] = "StartProactiveChatEventReceived";
109
134
  TelemetryEvent["StartProactiveChatMethodFailed"] = "StartProactiveChatMethodFailed";
110
135
  TelemetryEvent["ProactiveChatAccepted"] = "ProactiveChatAccepted";
111
136
  TelemetryEvent["ProactiveChatRejected"] = "ProactiveChatRejected";
@@ -114,13 +139,14 @@ export let TelemetryEvent;
114
139
  TelemetryEvent["ReconnectChatContinueConversation"] = "ReconnectChatContinueConversation";
115
140
  TelemetryEvent["ReconnectChatStartNewConversation"] = "ReconnectChatStartNewConversation";
116
141
  TelemetryEvent["ReconnectChatMinimize"] = "ReconnectChatMinimize";
117
- TelemetryEvent["ChatWidgetStateChanged"] = "ChatWidgetStateChanged";
142
+ TelemetryEvent["MessageSent"] = "MessageSent";
143
+ TelemetryEvent["MessageReceived"] = "MessageReceived";
144
+ TelemetryEvent["CustomContextReceived"] = "CustomContextReceived";
118
145
  })(TelemetryEvent || (TelemetryEvent = {}));
119
146
 
120
147
  export class TelemetryConstants {
121
148
  static map(eventTypeOrScenarioType) {
122
149
  switch (eventTypeOrScenarioType) {
123
- case TelemetryEvent.StartChatSDKCall:
124
150
  case TelemetryEvent.ParseAdaptiveCardFailed:
125
151
  return ScenarioType.CONFIG_VALIDATION;
126
152
 
@@ -131,6 +157,7 @@ export class TelemetryConstants {
131
157
  case TelemetryEvent.LCWChatButtonShow:
132
158
  case TelemetryEvent.PrechatSurveyLoaded:
133
159
  case TelemetryEvent.LoadingPaneLoaded:
160
+ case TelemetryEvent.PostChatSurveyLoadingPaneLoaded:
134
161
  case TelemetryEvent.PostChatSurveyLoaded:
135
162
  case TelemetryEvent.EmailTranscriptLoaded:
136
163
  case TelemetryEvent.OutOfOfficePaneLoaded:
@@ -157,14 +184,22 @@ export class TelemetryConstants {
157
184
  case TelemetryEvent.PreChatSurveyStartChatMethodFailed:
158
185
  case TelemetryEvent.HeaderCloseButtonClicked:
159
186
  case TelemetryEvent.HeaderMinimizeButtonClicked:
187
+ case TelemetryEvent.MessageSent:
188
+ case TelemetryEvent.MessageReceived:
189
+ case TelemetryEvent.CustomContextReceived:
160
190
  return ScenarioType.ACTIONS;
161
191
 
192
+ case TelemetryEvent.StartChatSDKCall:
193
+ case TelemetryEvent.StartChatEventRecevied:
162
194
  case TelemetryEvent.StartChatMethodException:
163
195
  case TelemetryEvent.CloseChatMethodException:
196
+ case TelemetryEvent.StartProactiveChatEventReceived:
164
197
  case TelemetryEvent.StartProactiveChatMethodFailed:
165
198
  case TelemetryEvent.OnNewMessageFailed:
166
199
  case TelemetryEvent.OnNewMessageAudioNotificationFailed:
167
200
  case TelemetryEvent.GetConversationDetailsCallFailed:
201
+ case TelemetryEvent.EndChatSDKCall:
202
+ case TelemetryEvent.EndChatEventReceived:
168
203
  case TelemetryEvent.EndChatSDKCallFailed:
169
204
  case TelemetryEvent.PostChatContextCallFailed:
170
205
  case TelemetryEvent.PostChatContextCallSucceed:
@@ -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";
@@ -259,4 +259,16 @@ _defineProperty(TelemetryHelper, "logConfigDataEvent", (logLevel, payload) => {
259
259
  }
260
260
  };
261
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);
262
274
  });
@@ -4,6 +4,7 @@ import { LogLevel, ScenarioType, TelemetryConstants, TelemetryEvent } from "./Te
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";
7
8
  export class TelemetryTimers {}
8
9
 
9
10
  _defineProperty(TelemetryTimers, "LcwLoadToChatButtonTimer", void 0);
@@ -26,25 +27,25 @@ export const RegisterLoggers = () => {
26
27
  const registerLoggers = () => {
27
28
  var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7, _TelemetryManager$Int8;
28
29
 
29
- 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)) {
30
+ 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) {
30
31
  BroadcastService.getAnyMessage().subscribe(event => {
31
- if (event.payload && event.eventName !== TelemetryEvent.ChatWidgetStateChanged) {
32
+ if (event.payload && event.eventName in TelemetryEvent) {
32
33
  logTelemetry(event);
33
34
  }
34
35
  });
35
36
  }
36
37
 
37
- if (!((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int5 !== void 0 && (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) !== null && _TelemetryManager$Int6 !== void 0 && _TelemetryManager$Int6.disableConsoleLog)) {
38
+ 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) {
38
39
  loggers.push(consoleLogger());
39
40
  }
40
41
 
41
- if (!((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int7 !== void 0 && (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) !== null && _TelemetryManager$Int8 !== void 0 && _TelemetryManager$Int8.telemetryDisabled)) {
42
+ 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) {
42
43
  var _TelemetryManager$Int9, _TelemetryManager$Int18, _TelemetryManager$Int19;
43
44
 
44
45
  if ((_TelemetryManager$Int9 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int9 !== void 0 && _TelemetryManager$Int9.ariaConfig) {
45
46
  var _TelemetryManager$Int10, _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13, _TelemetryManager$Int14, _TelemetryManager$Int15, _TelemetryManager$Int16, _TelemetryManager$Int17;
46
47
 
47
- 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"));
48
+ 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));
48
49
  }
49
50
 
50
51
  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;
@@ -67,8 +68,11 @@ export const RegisterLoggers = () => {
67
68
 
68
69
  const logTelemetry = telemetryEvent => {
69
70
  loggers.map(logger => {
71
+ var _payload;
72
+
70
73
  const logLevel = telemetryEvent.logLevel ?? LogLevel.INFO;
71
- logger.log(logLevel, parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload));
74
+ const scenarioType = ((_payload = telemetryEvent.payload) === null || _payload === void 0 ? void 0 : _payload.scenarioType) ?? ScenarioType.UNDEFINED;
75
+ logger.log(logLevel, parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload, scenarioType));
72
76
  });
73
77
  };
74
78
 
@@ -1,6 +1,6 @@
1
1
  export const defaultAriaConfig = {
2
2
  collectorUriForTelemetry: "",
3
3
  ariaTelemetryKey: "c7655518acf1403f93ff6b9f77942f0a-d01a02fd-6b50-4de3-a566-62eda11f93bc-7083",
4
- ariaTelemetryApplicationName: "",
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,10 @@
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";
5
+ import { Constants, AriaTelemetryConstants, EnvironmentVersion } from "../../Constants";
6
6
  import { TelemetryHelper } from "../TelemetryHelper";
7
+ import { TelemetryManager } from "../TelemetryManager";
7
8
  export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUriForTelemetry, ariaTelemetryApplicationName) => {
8
9
  let _logger;
9
10
 
@@ -15,6 +16,21 @@ export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, colle
15
16
 
16
17
  if (!isNullOrEmptyString(collectiorUriForTelemetry)) {
17
18
  configuration.collectorUri = collectiorUriForTelemetry;
19
+ } else {
20
+ if (TelemetryManager.InternalTelemetryData.environmentVersion == EnvironmentVersion.prod) {
21
+ var _TelemetryManager$Int;
22
+
23
+ const orgUrl = (_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : _TelemetryManager$Int.orgUrl;
24
+
25
+ if (!isNullOrUndefined(orgUrl)) {
26
+ // If the given org is a Production EU org, modify the Aria collector uri
27
+ const region = getDomain(orgUrl);
28
+
29
+ if (region === AriaTelemetryConstants.EU) {
30
+ configuration.collectorUri = AriaTelemetryConstants.EUROPE_ENDPOINT;
31
+ }
32
+ }
33
+ }
18
34
  }
19
35
 
20
36
  try {
@@ -33,18 +49,22 @@ export const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, colle
33
49
 
34
50
  const ariaLogger = {
35
51
  log: (logLevel, telemetryInput) => {
36
- let property;
37
- const eventProperties = new AWTEventProperties();
38
- const event = TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput);
39
- eventProperties.setName(telemetryInput.scenarioType);
40
-
41
- for (const key of Object.keys(event)) {
42
- property = typeof event[key] === "object" ? JSON.stringify(event[key]) : event[key];
43
- eventProperties.setProperty(key, property);
44
- }
52
+ try {
53
+ let property;
54
+ const eventProperties = new AWTEventProperties();
55
+ const event = TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput);
56
+ eventProperties.setName(telemetryInput.scenarioType);
57
+
58
+ for (const key of Object.keys(event)) {
59
+ property = typeof event[key] === "object" ? JSON.stringify(event[key]) : event[key];
60
+ eventProperties.setProperty(key, property);
61
+ }
45
62
 
46
- eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, Constants.LiveChatWidget, AWTPiiKind.GenericData);
47
- logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
63
+ eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, Constants.LiveChatWidget, AWTPiiKind.GenericData);
64
+ logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
65
+ } catch (error) {
66
+ console.error("Error in logging telemetry to Aria logger:" + error);
67
+ }
48
68
  },
49
69
  dispose: () => {
50
70
  AWTLogManager.flush(function () {
@@ -1,4 +1,4 @@
1
- import { Constants, LocaleConstants } from "./Constants";
1
+ import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
2
2
  import { KeyCodes } from "./KeyCodes";
3
3
 
4
4
  const getElementBySelector = selector => {
@@ -276,4 +276,14 @@ export const createTimer = () => {
276
276
  }
277
277
 
278
278
  };
279
+ }; // Returns the domain of the org
280
+
281
+ export const getDomain = hostValue => {
282
+ for (let i = 0; i < AriaTelemetryConstants.lcwEUDomainNames.length; i++) {
283
+ if (hostValue.endsWith(AriaTelemetryConstants.lcwEUDomainNames[i])) {
284
+ return AriaTelemetryConstants.EU;
285
+ }
286
+ }
287
+
288
+ return AriaTelemetryConstants.Public;
279
289
  };
@@ -26,7 +26,7 @@ export const ChatButtonStateful = props => {
26
26
  dir: state.domainStates.globalDir,
27
27
  titleText: "Let's Chat!",
28
28
  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,
29
+ 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,
30
30
  unreadMessageCount: state.appStates.unreadMessageCount ? state.appStates.unreadMessageCount > Constants.maximumUnreadMessageCount ? Constants.maximumUnreadMessageCount.toString() + "+" : state.appStates.unreadMessageCount.toString() : "0",
31
31
  onClick: async () => {
32
32
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -1,39 +1,30 @@
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 { BroadcastService, ConfirmationPane } from "@microsoft/omnichannel-chat-components";
5
5
  import { DimLayer } from "../dimlayer/DimLayer";
6
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
7
7
  import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
8
8
  import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
9
- import { PostChatSurveyMode } from "../postchatsurveypanestateful/enums/PostChatSurveyMode";
10
9
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
11
10
  import useChatAdapterStore from "../../hooks/useChatAdapterStore";
12
- import useChatContextStore from "../../hooks/useChatContextStore";
13
- import useChatSDKStore from "../../hooks/useChatSDKStore";
14
- import { Constants } from "../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ import useChatContextStore from "../../hooks/useChatContextStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
12
 
16
13
  export const ConfirmationPaneStateful = props => {
17
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
18
-
19
14
  const initialTabIndexMap = new Map();
20
- let elements = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
-
22
- const chatSDK = useChatSDKStore();
15
+ let elements = [];
23
16
  const [state, dispatch] = useChatContextStore();
24
17
  const {
25
- endChat
18
+ prepareEndChat
26
19
  } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
21
 
29
22
  const [adapter] = useChatAdapterStore();
30
- 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;
31
- 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;
32
23
  const controlProps = {
33
24
  id: "oc-lcw-confirmation-pane",
34
25
  dir: state.domainStates.globalDir,
35
26
  onConfirm: async () => {
36
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
27
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
37
28
  Event: TelemetryEvent.ConfirmationConfirmButtonClicked,
38
29
  Description: "Confirmation pane Confirm button clicked"
39
30
  });
@@ -43,28 +34,8 @@ export const ConfirmationPaneStateful = props => {
43
34
  });
44
35
 
45
36
  try {
46
- // check agent has joined conversation
47
- const conversationDetails = await chatSDK.getConversationDetails();
48
-
49
- if (isPostChatEnabled === "true" && postChatSurveyMode === PostChatSurveyMode.Embed && conversationDetails.canRenderPostChat === Constants.truePascal) {
50
- const loadPostChatEvent = {
51
- eventName: "LoadPostChatSurvey"
52
- };
53
- BroadcastService.postMessage(loadPostChatEvent);
54
- } else {
55
- setTabIndices(elements, initialTabIndexMap, true);
56
-
57
- try {
58
- await endChat(adapter);
59
- } catch (error) {
60
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
61
- Event: TelemetryEvent.CloseChatMethodException,
62
- ExceptionDetails: {
63
- exception: `Failed to endChat: ${error}`
64
- }
65
- });
66
- }
67
- }
37
+ setTabIndices(elements, initialTabIndexMap, true);
38
+ await prepareEndChat(adapter, state);
68
39
  } catch (ex) {
69
40
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
70
41
  Event: TelemetryEvent.GetConversationDetailsCallFailed,
@@ -76,7 +47,7 @@ export const ConfirmationPaneStateful = props => {
76
47
  }
77
48
  },
78
49
  onCancel: () => {
79
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
50
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
80
51
  Event: TelemetryEvent.ConfirmationCancelButtonClicked,
81
52
  Description: "Confirmation pane Cancel button clicked."
82
53
  });
@@ -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;
@@ -96,9 +96,8 @@ export const FooterStateful = props => {
96
96
  controlProps: controlProps,
97
97
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
98
98
  }), /*#__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
99
+ audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? NewMessageNotificationSoundBase64,
100
+ 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
101
  }));
103
102
  };
104
103
  export default FooterStateful;
@@ -1,5 +1,5 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
- import React, { useEffect, useState } from "react";
2
+ import React, { useEffect, useRef, useState } from "react";
3
3
  import { ConversationState } from "../../contexts/common/ConversationState";
4
4
  import { Header } from "@microsoft/omnichannel-chat-components";
5
5
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
@@ -21,6 +21,7 @@ export const HeaderStateful = props => {
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
23
  const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
24
+ const conversationState = useRef(state.appStates.conversationState);
24
25
  const controlProps = {
25
26
  id: "oc-lcw-header",
26
27
  dir: state.domainStates.globalDir,
@@ -40,17 +41,15 @@ export const HeaderStateful = props => {
40
41
  Description: "Header Close button clicked."
41
42
  });
42
43
 
43
- if (state.appStates.conversationState === ConversationState.Active) {
44
+ if (conversationState.current === ConversationState.Active) {
44
45
  dispatch({
45
46
  type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
46
47
  payload: true
47
48
  });
48
- } else if (state.appStates.conversationState === ConversationState.Postchat) {
49
- dispatch({
50
- type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
51
- payload: false
52
- });
53
- await endChat(adapter);
49
+ } else {
50
+ const skipEndChatSDK = true;
51
+ const skipCloseChat = false;
52
+ await endChat(adapter, skipEndChatSDK, skipCloseChat);
54
53
  }
55
54
 
56
55
  dispatch({
@@ -82,7 +81,11 @@ export const HeaderStateful = props => {
82
81
  if (state.appStates.outsideOperatingHours) {
83
82
  setOutOfOperatingHours(true);
84
83
  }
85
- }, []);
84
+
85
+ if (state.appStates.conversationState) {
86
+ conversationState.current = state.appStates.conversationState;
87
+ }
88
+ }, [state.appStates]);
86
89
  return /*#__PURE__*/React.createElement(Header, {
87
90
  componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
88
91
  controlProps: outOfOperatingHours || state.appStates.conversationState === ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,
@@ -1,5 +1,4 @@
1
1
  import MarkdownIt from "markdown-it";
2
- import MarkdownSlack from "slack-markdown-it";
3
2
  import MarkdownItForInline from "markdown-it-for-inline";
4
3
  import { defaultMarkdownLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts";
5
4
  import { Constants } from "../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -12,8 +11,9 @@ export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineM
12
11
  html: true,
13
12
  linkify: true,
14
13
  breaks: !disableNewLineMarkdownSupport
15
- });
16
- markdown.use(MarkdownSlack); // Markdown override for open link in new tab
14
+ }); // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
15
+ // markdown.use(MarkdownSlack);
16
+ // Markdown override for open link in new tab
17
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, quotes
18
18
 
19
19
  markdown.use(MarkdownItForInline, "url_new_win", "link_open", function (tokens, idx, env) {
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
2
+ import { ChatReconnectIconBase64, CloseChatButtonIconBase64, ModernChatIconBase64, ProactiveChatBannerBase64 } from "@microsoft/omnichannel-chat-components";
2
3
  import MockAdapter from "../../../webchatcontainerstateful/common/mockadapter";
4
+ import { NewMessageNotificationSoundBase64 } from "../../../../assets/Audios";
3
5
  import { WebChatStoreLoader } from "../../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
4
6
  import { activityStatusMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware";
5
7
  import { createActivityMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
@@ -8,10 +10,11 @@ import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webcha
8
10
  import { createMarkdown } from "../createMarkdown";
9
11
  import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
10
12
  import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
11
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger"; // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
+
12
15
  export const dummyDefaultProps = {
13
16
  audioNotificationProps: {
14
- audioSrc: "assets/audios/newMessageNotification.mp3"
17
+ audioSrc: NewMessageNotificationSoundBase64
15
18
  },
16
19
  callingContainerProps: {
17
20
  controlProps: {
@@ -366,7 +369,7 @@ export const dummyDefaultProps = {
366
369
  margin: "-2px -2px -2px -3px",
367
370
  justifyContent: "center",
368
371
  backgroundSize: "65% 65%",
369
- backgroundImage: "assets/imgs/chat.svg",
372
+ backgroundImage: `url(${ModernChatIconBase64})`,
370
373
  display: "flex",
371
374
  backgroundRepeat: "no-repeat",
372
375
  backgroundPosition: "center"
@@ -887,7 +890,7 @@ export const dummyDefaultProps = {
887
890
  },
888
891
  headerIconProps: {
889
892
  id: "oc-lcw-header-icon",
890
- src: "assets/imgs/chatIcon.svg",
893
+ src: ModernChatIconBase64,
891
894
  alt: "Chat Icon",
892
895
  className: undefined
893
896
  },
@@ -1012,7 +1015,7 @@ export const dummyDefaultProps = {
1012
1015
  alignSelf: "auto"
1013
1016
  },
1014
1017
  iconImageProps: {
1015
- src: "assets/imgs/chat.svg",
1018
+ src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2lpKSI+DQo8cGF0aCBkPSJNMTUuMTk3MSAxNi4yNzI1VjI1Ljg1MjRDMTUuMTk3MSAyNy4zODExIDE1Ljg0MDEgMjcuNTIwMSAxNi45ODMyIDI3LjUyMDFMMjYuNzA4NCAyNy41NjQ5TDMxLjAwMzkgMzIuMzEyM1YyNy41NjQ5SDMxLjg5N0MzMi4xNzQzIDI3LjU2MzcgMzIuNDQ4NyAyNy41MDc3IDMyLjcwNDUgMjcuNDAwMUMzMi45NjAzIDI3LjI5MjQgMzMuMTkyNSAyNy4xMzUzIDMzLjM4NzggMjYuOTM3NUMzMy41ODMxIDI2LjczOTggMzMuNzM3NyAyNi41MDU0IDMzLjg0MjcgMjYuMjQ3N0MzMy45NDc4IDI1Ljk5IDM0LjAwMTMgMjUuNzE0IDM0LjAwMDEgMjUuNDM1NVYxNi4zMDM4QzM0LjAwMTMgMTYuMDI1NCAzMy45NDc4IDE1Ljc0OTQgMzMuODQyNyAxNS40OTE3QzMzLjczNzcgMTUuMjM0IDMzLjU4MzEgMTQuOTk5NiAzMy4zODc4IDE0LjgwMThDMzMuMTkyNSAxNC42MDQxIDMyLjk2MDMgMTQuNDQ2OSAzMi43MDQ1IDE0LjMzOTNDMzIuNDQ4NyAxNC4yMzE2IDMyLjE3NDMgMTQuMTc1NiAzMS44OTcgMTQuMTc0NEwxNy4zMDQ3IDE0LjE0MzFDMTcuMDI2OSAxNC4xNDM3IDE2Ljc1MiAxNC4xOTkyIDE2LjQ5NTcgMTQuMzA2NkMxNi4yMzk0IDE0LjQxNCAxNi4wMDY3IDE0LjU3MTEgMTUuODEwOSAxNC43Njg5QzE1LjYxNTIgMTQuOTY2NyAxNS40NjAyIDE1LjIwMTMgMTUuMzU0OCAxNS40NTkzQzE1LjI0OTUgMTUuNzE3MyAxNS4xOTU5IDE1Ljk5MzYgMTUuMTk3MSAxNi4yNzI1WiIgZmlsbD0iI0Q2RDZENiIvPg0KPC9nPg0KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfZGlpKSI+DQo8cGF0aCBkPSJNMjcuODczNSA2LjY5ODg3VjE4Ljg0MDlDMjcuODczNSAyMC43Nzg1IDI3LjA1NzIgMjAuOTU0NiAyNS42MDU4IDIwLjk1NDZMMTMuMjU4IDIxLjAxMTRMNy44MDQxNCAyNy4wMjg1VjIxLjAxMTRINi42NzAyN0M2LjMxODEyIDIxLjAwOTkgNS45Njk3MSAyMC45Mzg5IDUuNjQ0OTMgMjAuODAyNUM1LjMyMDE2IDIwLjY2NjEgNS4wMjUzOCAyMC40NjY4IDQuNzc3NDIgMjAuMjE2MkM0LjUyOTQ2IDE5Ljk2NTYgNC4zMzMxOSAxOS42Njg1IDQuMTk5OCAxOS4zNDE5QzQuMDY2NDIgMTkuMDE1MiAzLjk5ODUzIDE4LjY2NTUgNC4wMDAwMiAxOC4zMTI1VjYuNzM4NjRDMy45OTg1MyA2LjM4NTcxIDQuMDY2NDIgNi4wMzU5NSA0LjE5OTggNS43MDkzMUM0LjMzMzE5IDUuMzgyNjcgNC41Mjk0NiA1LjA4NTU3IDQuNzc3NDIgNC44MzQ5NUM1LjAyNTM4IDQuNTg0MzQgNS4zMjAxNiA0LjM4NTEzIDUuNjQ0OTMgNC4yNDg2OUM1Ljk2OTcxIDQuMTEyMjUgNi4zMTgxMiA0LjA0MTI2IDYuNjcwMjcgNC4wMzk3N0wyNS4xOTc2IDRDMjUuNTUwMiA0LjAwMDc0IDI1Ljg5OTMgNC4wNzExOCAyNi4yMjQ3IDQuMjA3MjlDMjYuNTUwMSA0LjM0MzM5IDI2Ljg0NTYgNC41NDI0OSAyNy4wOTQxIDQuNzkzMThDMjcuMzQyNyA1LjA0Mzg2IDI3LjUzOTUgNS4zNDEyMiAyNy42NzMyIDUuNjY4MjNDMjcuODA3IDUuOTk1MjMgMjcuODc1IDYuMzQ1NDYgMjcuODczNSA2LjY5ODg3WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPg0KPC9nPg0KPGRlZnM+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2lpIiB4PSIxNS4xOTcxIiB5PSIxNC4xNDMxIiB3aWR0aD0iMTguODAzMSIgaGVpZ2h0PSIxOC4xNjkzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+DQo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC4yIiBkeT0iLTAuMiIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTcgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC41IiBkeT0iLTAuNSIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTYgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9ImVmZmVjdDFfaW5uZXJTaGFkb3ciIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPC9maWx0ZXI+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2RpaSIgeD0iMCIgeT0iMCIgd2lkdGg9IjM5Ljg3MzYiIGhlaWdodD0iMzkuMDI4NSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPg0KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIi8+DQo8ZmVPZmZzZXQgZHg9IjQiIGR5PSI0Ii8+DQo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0Ii8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvdyIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMiIgZHk9Ii0yIi8+DQo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4xNyAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+DQo8ZmVPZmZzZXQgZHg9Ii0xIiBkeT0iLTEiLz4NCjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4NCjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwLjE2IDAiLz4NCjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJlZmZlY3QyX2lubmVyU2hhZG93IiByZXN1bHQ9ImVmZmVjdDNfaW5uZXJTaGFkb3ciLz4NCjwvZmlsdGVyPg0KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iLTAuMzk1MDAxIiB5MT0iMjMuMTI4MiIgeDI9IjIwLjEwNTgiIHkyPSIzNy44NDc0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQo8c3RvcCBzdG9wLWNvbG9yPSIjRUZFRkVGIi8+DQo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPC9kZWZzPg0KPC9zdmc+DQo=",
1016
1019
  imageFit: 0,
1017
1020
  width: "86px",
1018
1021
  height: "86px",
@@ -1220,7 +1223,7 @@ export const dummyDefaultProps = {
1220
1223
  },
1221
1224
  headerContainerStyleProps: {
1222
1225
  backgroundColor: "rgb(49, 95, 162)",
1223
- backgroundImage: "assets/imgs/Proactive_banner.png",
1226
+ backgroundImage: `url(${ProactiveChatBannerBase64})`,
1224
1227
  backgroundPosition: "initial",
1225
1228
  backgroundRepeat: "no-repeat",
1226
1229
  borderTopLeftRadius: "inherit",
@@ -1248,7 +1251,7 @@ export const dummyDefaultProps = {
1248
1251
  fontWeight: "600"
1249
1252
  },
1250
1253
  closeButtonStyleProps: {
1251
- backgroundImage: "assets/imgs/closeChatButton.svg",
1254
+ backgroundImage: `url(${CloseChatButtonIconBase64})`,
1252
1255
  backgroundPosition: "center",
1253
1256
  backgroundRepeat: "no-repeat",
1254
1257
  color: "#605e5c",
@@ -1371,7 +1374,7 @@ export const dummyDefaultProps = {
1371
1374
  lineHeight: "19px"
1372
1375
  },
1373
1376
  iconStyleProps: {
1374
- backgroundImage: "assets/imgs//ChatReconnectPopupIcon.png",
1377
+ backgroundImage: `url(${ChatReconnectIconBase64})`,
1375
1378
  backgroundPosition: "center",
1376
1379
  backgroundRepeat: "no-repeat",
1377
1380
  backgroundSize: "200px",
@@ -1422,7 +1425,8 @@ export const dummyDefaultProps = {
1422
1425
  },
1423
1426
  authClientFunction: undefined,
1424
1427
  isReconnectEnabled: undefined,
1425
- reconnectId: undefined
1428
+ reconnectId: undefined,
1429
+ redirectInSameWindow: undefined
1426
1430
  },
1427
1431
  styleProps: {
1428
1432
  generalStyles: {
@@ -1494,7 +1498,7 @@ export const dummyDefaultProps = {
1494
1498
  internalErrorBoxClass: undefined,
1495
1499
  internalRenderErrorBox: undefined,
1496
1500
  locale: "en-US",
1497
- onTelemetry: undefined,
1501
+ onTelemetry: createWebChatTelemetry(),
1498
1502
  overrideLocalizedStrings: undefined,
1499
1503
  renderMarkdown: createMarkdown(false, false),
1500
1504
  scrollToEndButtonMiddleware: undefined,