@microsoft/omnichannel-chat-widget 0.1.0-main.8b6c0d8 → 0.1.0-main.c461296

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 (142) hide show
  1. package/README.md +235 -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 +6 -0
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +25 -3
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +9 -4
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +12 -4
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  11. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +14 -1
  12. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +3 -0
  13. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +8 -1
  14. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +24 -35
  15. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  16. package/lib/cjs/components/footerstateful/FooterStateful.js +3 -3
  17. package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -3
  18. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  19. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +38 -33
  20. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
  21. package/lib/cjs/components/livechatwidget/common/endChat.js +65 -49
  22. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  23. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +26 -9
  24. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +18 -3
  25. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +26 -24
  26. package/lib/cjs/components/livechatwidget/common/startChat.js +77 -27
  27. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  28. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +45 -18
  29. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  30. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  31. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +28 -11
  32. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
  33. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -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/contexts/common/ConversationState.js +3 -2
  40. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +4 -0
  41. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +11 -4
  42. package/lib/cjs/contexts/createReducer.js +27 -0
  43. package/lib/cjs/controller/componentController.js +2 -2
  44. package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
  45. package/lib/esm/assets/Audios.js +1 -0
  46. package/lib/esm/assets/Icons.js +11 -0
  47. package/lib/esm/common/Constants.js +6 -0
  48. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  49. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  50. package/lib/esm/common/telemetry/TelemetryConstants.js +21 -2
  51. package/lib/esm/common/telemetry/TelemetryHelper.js +9 -4
  52. package/lib/esm/common/telemetry/TelemetryManager.js +8 -4
  53. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  54. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +14 -1
  55. package/lib/esm/common/telemetry/loggers/consoleLogger.js +3 -0
  56. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +9 -1
  57. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -34
  58. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  59. package/lib/esm/components/footerstateful/FooterStateful.js +3 -3
  60. package/lib/esm/components/headerstateful/HeaderStateful.js +13 -4
  61. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  62. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +36 -33
  63. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  64. package/lib/esm/components/livechatwidget/common/endChat.js +64 -45
  65. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  66. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +23 -9
  67. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +18 -2
  68. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
  69. package/lib/esm/components/livechatwidget/common/startChat.js +71 -23
  70. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  71. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +40 -17
  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/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +26 -10
  75. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
  76. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  77. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  78. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  79. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  80. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  81. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  82. package/lib/esm/contexts/common/ConversationState.js +3 -2
  83. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +4 -0
  84. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +11 -4
  85. package/lib/esm/contexts/createReducer.js +27 -0
  86. package/lib/esm/controller/componentController.js +2 -2
  87. package/lib/esm/plugins/newMessageEventHandler.js +84 -0
  88. package/lib/types/assets/Audios.d.ts +1 -0
  89. package/lib/types/assets/Icons.d.ts +11 -0
  90. package/lib/types/common/Constants.d.ts +3 -0
  91. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  92. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  93. package/lib/types/common/telemetry/TelemetryConstants.d.ts +17 -1
  94. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  95. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  96. package/lib/types/common/telemetry/definitions/Payload.d.ts +3 -0
  97. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  98. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  99. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  100. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -1
  101. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  102. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  103. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  104. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  105. package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
  106. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  107. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  108. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  109. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  110. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  111. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  112. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  113. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  114. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -0
  115. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +5 -1
  116. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  117. package/package.json +7 -6
  118. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  119. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  120. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  121. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  122. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  123. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  124. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  125. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  126. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  127. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  128. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  129. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  130. package/lib/esm/assets/assets.d.js +0 -0
  131. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  132. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  133. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  134. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  135. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  136. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  137. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  138. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  139. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  140. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  141. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  142. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -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";
@@ -11,7 +13,7 @@ import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/web
11
13
 
12
14
  export const dummyDefaultProps = {
13
15
  audioNotificationProps: {
14
- audioSrc: "assets/audios/newMessageNotification.mp3"
16
+ audioSrc: NewMessageNotificationSoundBase64
15
17
  },
16
18
  callingContainerProps: {
17
19
  controlProps: {
@@ -132,7 +134,7 @@ export const dummyDefaultProps = {
132
134
  id: "oc-lcw-CurrentCall-timer",
133
135
  showHours: false,
134
136
  timerStyles: {
135
- color: "white",
137
+ color: "#FFFFFF",
136
138
  textAlign: "center",
137
139
  backgroundColor: "#3d3c3c",
138
140
  height: "45px",
@@ -163,8 +165,8 @@ export const dummyDefaultProps = {
163
165
  },
164
166
  audioCallButtonStyleProps: {
165
167
  borderRadius: "50%",
166
- color: "white",
167
- backgroundColor: "green",
168
+ color: "#FFFFFF",
169
+ backgroundColor: "#008000",
168
170
  lineHeight: "40px",
169
171
  height: "40px",
170
172
  width: "40px",
@@ -175,8 +177,8 @@ export const dummyDefaultProps = {
175
177
  },
176
178
  videoCallButtonStyleProps: {
177
179
  borderRadius: "50%",
178
- color: "white",
179
- backgroundColor: "green",
180
+ color: "#FFFFFF",
181
+ backgroundColor: "#008000",
180
182
  lineHeight: "40px",
181
183
  height: "40px",
182
184
  width: "40px",
@@ -191,8 +193,8 @@ export const dummyDefaultProps = {
191
193
  },
192
194
  declineCallButtonStyleProps: {
193
195
  borderRadius: "50%",
194
- color: "white",
195
- backgroundColor: "red",
196
+ color: "#FFFFFF",
197
+ backgroundColor: "#DC0000",
196
198
  lineHeight: "40px",
197
199
  height: "40px",
198
200
  width: "40px",
@@ -201,12 +203,12 @@ export const dummyDefaultProps = {
201
203
  },
202
204
  incomingCallTitleStyleProps: {
203
205
  margin: "0 5px",
204
- color: "white",
206
+ color: "#FFFFFF",
205
207
  fontSize: 12,
206
208
  fontFamily: "Segoe UI, Arial, sans-serif"
207
209
  },
208
210
  itemFocusStyleProps: {
209
- outline: "2px solid white"
211
+ outline: "2px solid #FFFFFF"
210
212
  }
211
213
  },
212
214
  currentCallStyleProps: {
@@ -218,7 +220,7 @@ export const dummyDefaultProps = {
218
220
  },
219
221
  micButtonStyleProps: {
220
222
  borderRadius: "2px",
221
- color: "white",
223
+ color: "#FFFFFF",
222
224
  backgroundColor: "#3d3c3c",
223
225
  height: "45px",
224
226
  width: "50px",
@@ -229,7 +231,7 @@ export const dummyDefaultProps = {
229
231
  },
230
232
  videoOffButtonStyleProps: {
231
233
  borderRadius: "2px",
232
- color: "white",
234
+ color: "#FFFFFF",
233
235
  backgroundColor: "#3d3c3c",
234
236
  height: "45px",
235
237
  width: "50px",
@@ -243,8 +245,8 @@ export const dummyDefaultProps = {
243
245
  },
244
246
  endCallButtonStyleProps: {
245
247
  borderRadius: "2px",
246
- color: "white",
247
- backgroundColor: "red",
248
+ color: "#FFFFFF",
249
+ backgroundColor: "#DC0000",
248
250
  lineHeight: "50px",
249
251
  height: "45px",
250
252
  width: "50px",
@@ -253,7 +255,7 @@ export const dummyDefaultProps = {
253
255
  currentCallTimerStyleProps: {
254
256
  borderRadius: "2px",
255
257
  margin: "1px",
256
- color: "white",
258
+ color: "#FFFFFF",
257
259
  paddingTop: "18px",
258
260
  fontSize: 12,
259
261
  fontFamily: "Segoe UI, Arial, sans-serif",
@@ -366,7 +368,7 @@ export const dummyDefaultProps = {
366
368
  margin: "-2px -2px -2px -3px",
367
369
  justifyContent: "center",
368
370
  backgroundSize: "65% 65%",
369
- backgroundImage: "assets/imgs/chat.svg",
371
+ backgroundImage: `url(${ModernChatIconBase64})`,
370
372
  display: "flex",
371
373
  backgroundRepeat: "no-repeat",
372
374
  backgroundPosition: "center"
@@ -475,7 +477,7 @@ export const dummyDefaultProps = {
475
477
  },
476
478
  styleProps: {
477
479
  generalStyleProps: {
478
- backgroundColor: "white",
480
+ backgroundColor: "#FFFFFF",
479
481
  borderRadius: "2px",
480
482
  color: "black",
481
483
  fontFamily: "Segoe UI, Arial, sans-serif",
@@ -517,7 +519,7 @@ export const dummyDefaultProps = {
517
519
  },
518
520
  confirmButtonStyleProps: {
519
521
  backgroundColor: "rgba(9,72,159,1)",
520
- color: "white",
522
+ color: "#FFFFFF",
521
523
  fontFamily: "Segoe UI, Arial, sans-serif",
522
524
  fontSize: "14px",
523
525
  fontWeight: "500",
@@ -531,7 +533,7 @@ export const dummyDefaultProps = {
531
533
  border: "2px dotted #000"
532
534
  },
533
535
  cancelButtonStyleProps: {
534
- backgroundColor: "white",
536
+ backgroundColor: "#FFFFFF",
535
537
  fontFamily: "Segoe UI, Arial, sans-serif",
536
538
  fontSize: "14px",
537
539
  fontWeight: "500",
@@ -887,7 +889,7 @@ export const dummyDefaultProps = {
887
889
  },
888
890
  headerIconProps: {
889
891
  id: "oc-lcw-header-icon",
890
- src: "assets/imgs/chatIcon.svg",
892
+ src: ModernChatIconBase64,
891
893
  alt: "Chat Icon",
892
894
  className: undefined
893
895
  },
@@ -916,16 +918,16 @@ export const dummyDefaultProps = {
916
918
  fontSize: 16,
917
919
  fontFamily: "Segoe UI, Arial, sans-serif",
918
920
  fontWeight: "450",
919
- color: "white",
921
+ color: "#FFFFFF",
920
922
  padding: "3px 0"
921
923
  },
922
924
  minimizeButtonStyleProps: {
923
- color: "white",
925
+ color: "#FFFFFF",
924
926
  margin: "5px 0",
925
927
  fontSize: "12px"
926
928
  },
927
929
  closeButtonStyleProps: {
928
- color: "white",
930
+ color: "#FFFFFF",
929
931
  margin: "5px 0",
930
932
  fontSize: "12px"
931
933
  },
@@ -1012,7 +1014,7 @@ export const dummyDefaultProps = {
1012
1014
  alignSelf: "auto"
1013
1015
  },
1014
1016
  iconImageProps: {
1015
- src: "assets/imgs/chat.svg",
1017
+ 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
1018
  imageFit: 0,
1017
1019
  width: "86px",
1018
1020
  height: "86px",
@@ -1087,7 +1089,7 @@ export const dummyDefaultProps = {
1087
1089
  titleStyleProps: {
1088
1090
  // ...[Existing chat button title style props]
1089
1091
  margin: "0 0 0 10px",
1090
- color: "White"
1092
+ color: "#FFFFFF"
1091
1093
  }
1092
1094
  }
1093
1095
  },
@@ -1220,7 +1222,7 @@ export const dummyDefaultProps = {
1220
1222
  },
1221
1223
  headerContainerStyleProps: {
1222
1224
  backgroundColor: "rgb(49, 95, 162)",
1223
- backgroundImage: "assets/imgs/Proactive_banner.png",
1225
+ backgroundImage: `url(${ProactiveChatBannerBase64})`,
1224
1226
  backgroundPosition: "initial",
1225
1227
  backgroundRepeat: "no-repeat",
1226
1228
  borderTopLeftRadius: "inherit",
@@ -1248,7 +1250,7 @@ export const dummyDefaultProps = {
1248
1250
  fontWeight: "600"
1249
1251
  },
1250
1252
  closeButtonStyleProps: {
1251
- backgroundImage: "assets/imgs/closeChatButton.svg",
1253
+ backgroundImage: `url(${CloseChatButtonIconBase64})`,
1252
1254
  backgroundPosition: "center",
1253
1255
  backgroundRepeat: "no-repeat",
1254
1256
  color: "#605e5c",
@@ -1371,7 +1373,7 @@ export const dummyDefaultProps = {
1371
1373
  lineHeight: "19px"
1372
1374
  },
1373
1375
  iconStyleProps: {
1374
- backgroundImage: "assets/imgs//ChatReconnectPopupIcon.png",
1376
+ backgroundImage: `url(${ChatReconnectIconBase64})`,
1375
1377
  backgroundPosition: "center",
1376
1378
  backgroundRepeat: "no-repeat",
1377
1379
  backgroundSize: "200px",
@@ -1453,7 +1455,7 @@ export const dummyDefaultProps = {
1453
1455
  bubbleBackground: "#315FA2",
1454
1456
  bubbleBorderRadius: 4,
1455
1457
  bubbleBorderWidth: 0,
1456
- bubbleFromUserBackground: "White",
1458
+ bubbleFromUserBackground: "#FFFFFF",
1457
1459
  bubbleFromUserBorderRadius: 4,
1458
1460
  bubbleFromUserBorderWidth: 1,
1459
1461
  bubbleFromUserTextColor: "Black",
@@ -1461,7 +1463,7 @@ export const dummyDefaultProps = {
1461
1463
  bubbleMaxWidth: 250,
1462
1464
  bubbleMinHeight: 34,
1463
1465
  bubbleMinWidth: 20,
1464
- bubbleTextColor: "White",
1466
+ bubbleTextColor: "#FFFFFF",
1465
1467
  hideSendBox: false,
1466
1468
  hideUploadButton: true,
1467
1469
  primaryFont: "Segoe UI, Arial, sans-serif",
@@ -1470,7 +1472,7 @@ export const dummyDefaultProps = {
1470
1472
  sendBoxTextWrap: true,
1471
1473
  sendBoxHeight: 60,
1472
1474
  sendBoxMaxHeight: 96,
1473
- sendBoxBackground: "White",
1475
+ sendBoxBackground: "#FFFFFF",
1474
1476
  showAvatarInGroup: true,
1475
1477
  suggestedActionsStackedHeight: 125,
1476
1478
  suggestedActionsStackedOverflow: "scroll",
@@ -1581,7 +1583,7 @@ export const dummyDefaultProps = {
1581
1583
  fontWeight: 600,
1582
1584
  fontSize: "13px",
1583
1585
  lineHeight: "18px",
1584
- color: "white",
1586
+ color: "#FFFFFF",
1585
1587
  paddingTop: "7px",
1586
1588
  WebkitUserSelect: "none",
1587
1589
  MozUserSelect: "none",
@@ -1685,5 +1687,6 @@ export const dummyDefaultProps = {
1685
1687
  PRECHAT_REQUIRED_FIELD_MISSING_MESSAGE: "{0} field is required",
1686
1688
  MARKDOWN_EXTERNAL_LINK_ALT: "Opens in a new window; external."
1687
1689
  }
1688
- }
1690
+ },
1691
+ telemetryConfig: undefined
1689
1692
  };
@@ -0,0 +1,4 @@
1
+ import { disposeLoggers } from "../../../common/telemetry/TelemetryManager";
2
+ export const disposeTelemetryLoggers = () => {
3
+ disposeLoggers();
4
+ };
@@ -1,53 +1,72 @@
1
- import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
1
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
2
3
  import { ConversationState } from "../../../contexts/common/ConversationState";
3
4
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
4
- import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
5
- import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
6
5
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
7
6
  import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
8
- import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
9
- import { BroadcastService } from "@microsoft/omnichannel-chat-components"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
8
 
11
- export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter) => {
12
- try {
13
- var _props$webChatContain;
9
+ export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat) => {
10
+ if (!skipEndChatSDK) {
11
+ try {
12
+ TelemetryHelper.logSDKEvent(LogLevel.INFO, {
13
+ Event: TelemetryEvent.EndChatSDKCall
14
+ });
15
+ await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
16
+ } catch (ex) {
17
+ TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
18
+ Event: TelemetryEvent.EndChatSDKCallFailed,
19
+ ExceptionDetails: {
20
+ exception: ex
21
+ }
22
+ });
23
+ }
24
+ }
25
+
26
+ if (!skipCloseChat) {
27
+ try {
28
+ var _props$webChatContain;
14
29
 
15
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
16
- Event: TelemetryEvent.EndChatSDKCall
17
- });
18
- await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
19
- adapter === null || adapter === void 0 ? void 0 : adapter.end();
20
- setAdapter(undefined);
21
- setWebChatStyles({ ...defaultWebChatContainerStatefulProps.webChatStyles,
22
- ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
23
- });
24
- WebChatStoreLoader.store = null;
25
- dispatch({
26
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
27
- payload: ConversationState.Closed
28
- });
29
- dispatch({
30
- type: LiveChatWidgetActionType.SET_RECONNECT_ID,
31
- payload: undefined
32
- });
33
- dispatch({
34
- type: LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
35
- payload: null
36
- });
37
- dispatch({
38
- type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
39
- payload: undefined
40
- });
41
- BroadcastService.postMessage({
42
- eventName: "EndChat"
43
- });
44
- } catch (ex) {
45
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
46
- Event: TelemetryEvent.EndChatSDKCallFailed,
47
- ExceptionDetails: {
48
- exception: ex
49
- }
50
- });
51
- NotificationHandler.notifyError(NotificationScenarios.Connection, "End Chat Call Failed: " + ex);
30
+ adapter === null || adapter === void 0 ? void 0 : adapter.end();
31
+ setAdapter(undefined);
32
+ setWebChatStyles({ ...defaultWebChatContainerStatefulProps.webChatStyles,
33
+ ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
34
+ });
35
+ WebChatStoreLoader.store = null;
36
+ dispatch({
37
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
38
+ payload: ConversationState.Closed
39
+ });
40
+ dispatch({
41
+ type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
42
+ payload: false
43
+ });
44
+ dispatch({
45
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
46
+ payload: undefined
47
+ });
48
+ dispatch({
49
+ type: LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
50
+ payload: null
51
+ });
52
+ dispatch({
53
+ type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
54
+ payload: undefined
55
+ });
56
+ dispatch({
57
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
58
+ payload: undefined
59
+ });
60
+ BroadcastService.postMessage({
61
+ eventName: BroadcastEvent.EndChat
62
+ });
63
+ } catch (error) {
64
+ TelemetryHelper.logActionEvent(LogLevel.ERROR, {
65
+ Event: TelemetryEvent.CloseChatMethodException,
66
+ ExceptionDetails: {
67
+ exception: `Failed to endChat: ${error}`
68
+ }
69
+ });
70
+ }
52
71
  }
53
72
  };
@@ -8,6 +8,9 @@ export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
8
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
9
  const callingSDK = await chatSDK.getVoiceVideoCalling();
10
10
  setVoiceVideoCallingSDK(callingSDK);
11
+ TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
12
+ Event: TelemetryEvent.CallingSDKLoadSuccess
13
+ });
11
14
  return true;
12
15
  }
13
16
 
@@ -1,7 +1,10 @@
1
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
1
2
  import { createStore } from "botframework-webchat";
3
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
2
4
  import { ConversationState } from "../../../contexts/common/ConversationState";
3
5
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
4
6
  import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
7
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
5
8
  import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
6
9
  import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
7
10
  import { changeLanguageCodeFormatForWebChat } from "../../../common/utils";
@@ -22,8 +25,7 @@ import gifUploadMiddleware from "../../webchatcontainerstateful/webchatcontrolle
22
25
  import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware";
23
26
  import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
24
27
  import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
25
- import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
26
- import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
29
 
28
30
  export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
29
31
  var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21;
@@ -45,6 +47,11 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
45
47
  const conversationEndCallback = async () => {
46
48
  var _props$webChatContain4, _props$webChatContain5;
47
49
 
50
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
51
+ Event: TelemetryEvent.ConversationEndedThreadEventReceived,
52
+ Description: "Conversation is ended by agent side or by timeout."
53
+ });
54
+
48
55
  if ((props === null || props === void 0 ? void 0 : (_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : (_props$webChatContain5 = _props$webChatContain4.renderingMiddlewareProps) === null || _props$webChatContain5 === void 0 ? void 0 : _props$webChatContain5.hideSendboxOnConversationEnd) !== false) {
49
56
  setWebChatStyles(styles => {
50
57
  return { ...styles,
@@ -53,16 +60,23 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
53
60
  });
54
61
  }
55
62
 
56
- if (isPostChatEnabled === "true" && postChatSurveyMode === PostChatSurveyMode.Embed) {
63
+ if (isPostChatEnabled === "true") {
64
+ if (postChatSurveyMode === PostChatSurveyMode.Embed) {
65
+ const loadPostChatEvent = {
66
+ eventName: BroadcastEvent.LoadPostChatSurvey
67
+ };
68
+ BroadcastService.postMessage(loadPostChatEvent);
69
+ } else if (postChatSurveyMode === PostChatSurveyMode.Link) {
70
+ dispatch({
71
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
72
+ payload: ConversationState.InActive
73
+ });
74
+ }
75
+ } else {
57
76
  dispatch({
58
- type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
77
+ type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
59
78
  payload: true
60
79
  });
61
- dispatch({
62
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
63
- payload: ConversationState.Loading
64
- });
65
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
66
80
  }
67
81
 
68
82
  dispatch({
@@ -4,10 +4,19 @@ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
4
4
  import { defaultAriaConfig } from "../../../common/telemetry/defaultConfigs/defaultAriaConfig";
5
5
  import { defaultInternalTelemetryData } from "../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData";
6
6
  import { defaultTelemetryConfiguration } from "../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration";
7
- import packageInfo from "@microsoft/omnichannel-chat-sdk/package.json";
7
+ import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
8
+ import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
8
9
  export const registerTelemetryLoggers = (props, dispatch) => {
9
10
  var _props$liveChatContex, _props$liveChatContex2;
10
11
 
12
+ let widgetPackageInfo;
13
+
14
+ try {
15
+ widgetPackageInfo = require("@microsoft/omnichannel-chat-widget/package.json");
16
+ } catch (error) {
17
+ widgetPackageInfo = "0.0.0-0";
18
+ }
19
+
11
20
  const telemetryConfig = { ...defaultTelemetryConfiguration,
12
21
  ...props.telemetryConfig
13
22
  };
@@ -17,6 +26,8 @@ export const registerTelemetryLoggers = (props, dispatch) => {
17
26
 
18
27
  TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
19
28
  } else {
29
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
30
+
20
31
  let telemetryData = { ...defaultInternalTelemetryData,
21
32
  telemetryConfig: Object.assign({}, defaultTelemetryConfiguration, telemetryConfig),
22
33
  ariaConfig: Object.assign({}, defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
@@ -27,7 +38,12 @@ export const registerTelemetryLoggers = (props, dispatch) => {
27
38
  }
28
39
 
29
40
  telemetryData = TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
30
- telemetryData.OCChatSDKVersion = packageInfo.version;
41
+ telemetryData.OCChatSDKVersion = chatSdkVersion;
42
+ telemetryData.chatComponentVersion = chatComponentVersion;
43
+ telemetryData.chatWidgetVersion = widgetPackageInfo;
44
+ telemetryData.orgId = (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId;
45
+ telemetryData.widgetId = (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId;
46
+ telemetryData.orgUrl = (_props$chatSDK3 = props.chatSDK) === null || _props$chatSDK3 === void 0 ? void 0 : (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) === null || _props$chatSDK3$omnic === void 0 ? void 0 : _props$chatSDK3$omnic.orgUrl;
31
47
  dispatch({
32
48
  type: LiveChatWidgetActionType.SET_TELEMETRY_DATA,
33
49
  payload: telemetryData
@@ -1,20 +1,23 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
3
+ import { ConversationState } from "../../../contexts/common/ConversationState";
2
4
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
3
- import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
4
- import { ConversationState } from "../../../contexts/common/ConversationState"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
6
 
6
- export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, loadSurvey) => {
7
+ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
7
8
  try {
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- const context = await chatSDK.getPostChatSurveyContext();
10
- TelemetryHelper.logSDKEvent(LogLevel.INFO, {
11
- Event: TelemetryEvent.PostChatContextCallSucceed,
12
- Description: "Postchat context call succeed."
13
- });
14
- dispatch({
15
- type: LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
16
- payload: context
17
- });
9
+ if (!persistedChat) {
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const context = await chatSDK.getPostChatSurveyContext();
12
+ TelemetryHelper.logSDKEvent(LogLevel.INFO, {
13
+ Event: TelemetryEvent.PostChatContextCallSucceed,
14
+ Description: "Postchat context call succeed."
15
+ });
16
+ dispatch({
17
+ type: LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
18
+ payload: context
19
+ });
20
+ }
18
21
  } catch (ex) {
19
22
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
20
23
  Event: TelemetryEvent.PostChatContextCallFailed,
@@ -22,19 +25,17 @@ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, loadSur
22
25
  exception: ex
23
26
  }
24
27
  });
25
- }
26
- /* -true: setPostChatContextAndLoadSurvey is called after passing all checks from ConfirmationPane and endChatMiddleware in usual scenario.
27
- -false: Below if condition is needed for multi-tab scenarios. So when agent ends a chat and customer has opened chat in multiple tabs,
28
- all tabs should show post chat survey as per existing functionality. But when an agent end a conversation, Omnichannel SDK
29
- getPostChatSurveyContext returns as invalid conversation. To avoid that, caching the survey url is needed after chat starts and
30
- in this case loadSurvey is false
31
- */
28
+ } // eslint-disable-next-line @typescript-eslint/no-unused-vars
32
29
 
33
30
 
34
- if (loadSurvey) {
31
+ BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
32
+ dispatch({
33
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
34
+ payload: ConversationState.Loading
35
+ });
35
36
  dispatch({
36
37
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
37
38
  payload: ConversationState.Postchat
38
39
  });
39
- }
40
+ });
40
41
  };