@microsoft/omnichannel-chat-widget 0.1.0-main.89c6531 → 0.1.0-main.ae3aa42

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 (147) 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 +38 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +37 -4
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +11 -6
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +31 -10
  13. package/lib/cjs/common/utils.js +15 -2
  14. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -54
  15. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  16. package/lib/cjs/components/footerstateful/FooterStateful.js +4 -5
  17. package/lib/cjs/components/headerstateful/HeaderStateful.js +11 -8
  18. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  19. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +16 -9
  20. package/lib/cjs/components/livechatwidget/common/endChat.js +102 -50
  21. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  22. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +29 -9
  23. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  24. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -5
  25. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +26 -24
  26. package/lib/cjs/components/livechatwidget/common/startChat.js +113 -54
  27. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  28. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +98 -37
  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/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  32. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +28 -11
  33. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
  34. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  35. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  36. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  37. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
  38. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  39. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  40. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +44 -0
  41. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  42. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +15 -13
  43. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  44. package/lib/cjs/contexts/createReducer.js +20 -10
  45. package/lib/cjs/controller/componentController.js +2 -2
  46. package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
  47. package/lib/esm/assets/Audios.js +1 -0
  48. package/lib/esm/assets/Icons.js +11 -0
  49. package/lib/esm/common/Constants.js +34 -3
  50. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  51. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  52. package/lib/esm/common/telemetry/TelemetryConstants.js +33 -3
  53. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  54. package/lib/esm/common/telemetry/TelemetryManager.js +10 -6
  55. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  56. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  57. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  58. package/lib/esm/common/utils.js +11 -1
  59. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -50
  60. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  61. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  62. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -9
  63. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  64. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +14 -10
  65. package/lib/esm/components/livechatwidget/common/endChat.js +100 -47
  66. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  67. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +25 -9
  68. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  69. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -4
  70. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
  71. package/lib/esm/components/livechatwidget/common/startChat.js +108 -51
  72. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  73. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +92 -36
  74. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  75. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  76. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  77. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +26 -10
  78. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
  79. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  80. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  81. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  82. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  83. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  84. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  85. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +31 -0
  86. package/lib/esm/contexts/common/ConversationState.js +3 -2
  87. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +15 -13
  88. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  89. package/lib/esm/contexts/createReducer.js +20 -9
  90. package/lib/esm/controller/componentController.js +2 -2
  91. package/lib/esm/plugins/newMessageEventHandler.js +84 -0
  92. package/lib/types/assets/Audios.d.ts +1 -0
  93. package/lib/types/assets/Icons.d.ts +11 -0
  94. package/lib/types/common/Constants.d.ts +19 -1
  95. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  96. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  97. package/lib/types/common/telemetry/TelemetryConstants.d.ts +23 -1
  98. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
  99. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  100. package/lib/types/common/utils.d.ts +1 -0
  101. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  102. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  103. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  104. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  105. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  106. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  107. package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
  108. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  109. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  110. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  111. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  112. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  113. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  114. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  115. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  116. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  117. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  118. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  119. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -0
  120. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +15 -13
  121. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  122. package/package.json +11 -11
  123. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  124. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  125. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  126. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  127. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  128. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  129. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  130. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  131. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  132. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  133. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  134. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  135. package/lib/esm/assets/assets.d.js +0 -0
  136. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  137. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  138. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  139. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  140. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  141. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  142. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  143. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  144. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  145. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  146. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  147. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.prepareStartChat = exports.initStartChat = void 0;
7
7
 
8
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _Constants = require("../../../common/Constants");
11
9
 
10
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
+
12
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
13
 
14
+ var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
+
14
16
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
15
17
 
16
18
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
@@ -23,66 +25,82 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
23
25
 
24
26
  var _createAdapter = require("./createAdapter");
25
27
 
28
+ var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
29
+
26
30
  var _utils = require("../../../common/utils");
27
31
 
28
32
  var _reconnectChatHelper = require("./reconnectChatHelper");
29
33
 
30
- var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
31
-
32
34
  var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
33
35
 
36
+ var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
37
+
34
38
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
39
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
36
- // Getting PreChat Survey Context
37
- const parseToJson = false;
38
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
39
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
40
+ var _props$reconnectChatP;
40
41
 
41
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
42
+ if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
43
+ return;
44
+ } // Redirecting if unauthenticated reconnect chat expired
42
45
 
43
- if (reconnectId) {
44
- dispatch({
45
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
46
- payload: reconnectId
47
- });
48
- dispatch({
49
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
- payload: _ConversationState.ConversationState.ReconnectChat
51
- });
52
- } else if (showPrechat) {
53
- dispatch({
54
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
55
- payload: preChatSurveyResponse
56
- });
57
- dispatch({
58
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
59
- payload: _ConversationState.ConversationState.Prechat
60
- });
46
+
47
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
48
+ var _props$reconnectChatP2, _props$reconnectChatP3;
49
+
50
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.redirectInSameWindow);
61
51
  } else {
62
- dispatch({
63
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
64
- payload: _ConversationState.ConversationState.Loading
65
- });
66
- await initStartChat(chatSDK, dispatch, setAdapter);
52
+ // Getting PreChat Survey Context
53
+ const parseToJson = false;
54
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
55
+ const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
56
+
57
+ const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
58
+
59
+ if (reconnectId) {
60
+ dispatch({
61
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
62
+ payload: reconnectId
63
+ });
64
+ dispatch({
65
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
66
+ payload: _ConversationState.ConversationState.ReconnectChat
67
+ });
68
+ } else if (showPrechat) {
69
+ dispatch({
70
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
71
+ payload: preChatSurveyResponse
72
+ });
73
+ dispatch({
74
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
75
+ payload: _ConversationState.ConversationState.Prechat
76
+ });
77
+ } else {
78
+ dispatch({
79
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
80
+ payload: _ConversationState.ConversationState.Loading
81
+ });
82
+ await initStartChat(chatSDK, dispatch, setAdapter);
83
+ }
67
84
  }
68
85
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
86
 
70
87
 
71
88
  exports.prepareStartChat = prepareStartChat;
72
89
 
73
- const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
90
+ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
74
91
  try {
75
- var _TelemetryTimers$Widg;
92
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
76
93
 
77
94
  try {
78
- _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.INFO, {
95
+ _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
96
+
97
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
79
98
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
80
99
  });
81
100
 
82
101
  await chatSDK.startChat(params);
83
- _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
84
102
  } catch (error) {
85
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
103
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
86
104
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
87
105
  ExceptionDetails: {
88
106
  exception: `Failed to setup startChat: ${error}`
@@ -91,24 +109,41 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
91
109
  }
92
110
 
93
111
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
94
- setAdapter(newAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ setAdapter(newAdapter);
113
+ const chatToken = await chatSDK.getChatToken();
114
+ newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe((0, _newMessageEventHandler.createOnNewAdapterActivityHandler)(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
95
115
 
96
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
116
+ if (!persistedState) {
97
117
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
118
+ if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
119
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
+ const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
121
+ dispatch({
122
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
123
+ payload: chatToken
124
+ });
125
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
+
127
+
128
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
99
129
  dispatch({
100
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
101
- payload: chatToken
130
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
131
+ payload: liveChatContext
102
132
  });
103
- }
104
-
105
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, false);
106
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
133
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
134
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
107
135
 
108
- dispatch({
109
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
110
- payload: _ConversationState.ConversationState.Active
111
- });
136
+ dispatch({
137
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
138
+ payload: _ConversationState.ConversationState.Active
139
+ });
140
+ } else {
141
+ dispatch({
142
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
143
+ payload: persistedState
144
+ });
145
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
146
+ }
112
147
 
113
148
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
114
149
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
@@ -117,9 +152,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
117
152
  });
118
153
  } catch (ex) {
119
154
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
120
- Event: _TelemetryConstants.TelemetryEvent.StartChatFailed,
155
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
121
156
  ExceptionDetails: {
122
- Exception: `Start Chat Failed: ${ex}`
157
+ Exception: `Widget load Failed: ${ex}`
123
158
  }
124
159
  });
125
160
 
@@ -137,6 +172,30 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
137
172
  });
138
173
  }
139
174
  }
140
- };
175
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
+
177
+
178
+ exports.initStartChat = initStartChat;
179
+
180
+ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
181
+ var _DataStoreManager$cli, _persistedState$domai;
141
182
 
142
- exports.initStartChat = initStartChat;
183
+ const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(_Constants.Constants.widgetStateDataKey, "localStorage");
184
+ const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
185
+
186
+ if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
187
+ var _persistedState$domai2;
188
+
189
+ dispatch({
190
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
191
+ payload: _ConversationState.ConversationState.Loading
192
+ });
193
+ const optionalParams = {
194
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
195
+ };
196
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
197
+ return true;
198
+ } else {
199
+ return false;
200
+ }
201
+ };
@@ -16,12 +16,12 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
16
16
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
17
17
 
18
18
  // Defines startProactiveChat callback
19
- const startProactiveChat = (dispatch, bodyTitle, showPrechat, inNewWindow) => {
19
+ const startProactiveChat = (dispatch, notificationConfig, enablePreChat, inNewWindow) => {
20
20
  dispatch({
21
21
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
22
22
  payload: {
23
- proactiveChatBodyTitle: bodyTitle ?? "",
24
- proactiveChatEnablePrechat: showPrechat ?? false,
23
+ proactiveChatBodyTitle: notificationConfig && notificationConfig.message ? notificationConfig.message : "",
24
+ proactiveChatEnablePrechat: enablePreChat ?? false,
25
25
  proactiveChatInNewWindow: inNewWindow ?? false
26
26
  }
27
27
  });
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.LiveChatWidgetStateful = void 0;
7
7
 
8
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
+
8
10
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
11
 
10
12
  var _react = require("@fluentui/react");
@@ -29,6 +31,8 @@ var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmati
29
31
 
30
32
  var _ConversationState = require("../../../contexts/common/ConversationState");
31
33
 
34
+ var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
35
+
32
36
  var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
33
37
 
34
38
  var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
@@ -49,6 +53,8 @@ var _ProactiveChatPaneStateful = _interopRequireDefault(require("../../proactive
49
53
 
50
54
  var _ReconnectChatPaneStateful = _interopRequireDefault(require("../../reconnectchatpanestateful/ReconnectChatPaneStateful"));
51
55
 
56
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
57
+
52
58
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
53
59
 
54
60
  var _WebChatContainerStateful = _interopRequireDefault(require("../../webchatcontainerstateful/WebChatContainerStateful"));
@@ -59,6 +65,8 @@ var _createInternetConnectionChangeHandler = require("../common/createInternetCo
59
65
 
60
66
  var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
61
67
 
68
+ var _disposeTelemetryLoggers = require("../common/disposeTelemetryLoggers");
69
+
62
70
  var _endChat = require("../common/endChat");
63
71
 
64
72
  var _getGeneralStylesForButton = require("../common/getGeneralStylesForButton");
@@ -81,10 +89,6 @@ var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useCha
81
89
 
82
90
  var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDKStore"));
83
91
 
84
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
85
-
86
- var _disposeTelemetryLoggers = require("../common/disposeTelemetryLoggers");
87
-
88
92
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
89
93
 
90
94
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -94,7 +98,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
94
98
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
95
99
 
96
100
  const LiveChatWidgetStateful = props => {
97
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$componentOverr, _props$controlProps6, _props$componentOverr2, _props$controlProps7, _props$componentOverr3, _props$controlProps8, _props$componentOverr4, _props$controlProps9, _props$componentOverr5, _props$controlProps10, _props$componentOverr6, _props$controlProps11, _props$controlProps12, _props$controlProps13, _props$componentOverr7, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$componentOverr10, _props$componentOverr11;
101
+ var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$componentOverr, _props$controlProps6, _props$componentOverr2, _props$controlProps7, _props$componentOverr3, _props$controlProps8, _props$componentOverr4, _props$controlProps9, _props$componentOverr5, _props$controlProps10, _props$componentOverr6, _props$controlProps11, _props$componentOverr7, _props$controlProps12, _props$controlProps13, _props$componentOverr8, _props$controlProps14, _props$componentOverr9, _props$controlProps15, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
98
102
 
99
103
  const [state, dispatch] = (0, _useChatContextStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
104
 
@@ -108,7 +112,8 @@ const LiveChatWidgetStateful = props => {
108
112
  const {
109
113
  Composer
110
114
  } = _botframeworkWebchat.Components;
111
- const canStartProactiveChat = (0, _react2.useRef)(true); // Process general styles
115
+ const canStartProactiveChat = (0, _react2.useRef)(true);
116
+ const canEndChat = (0, _react2.useRef)(true); // Process general styles
112
117
 
113
118
  const generalStyles = {
114
119
  root: Object.assign({}, (0, _getGeneralStylesForButton.getGeneralStylesForButton)(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
@@ -121,6 +126,7 @@ const LiveChatWidgetStateful = props => {
121
126
 
122
127
  (0, _registerTelemetryLoggers.registerTelemetryLoggers)(props, dispatch);
123
128
  (0, _createInternetConnectionChangeHandler.createInternetConnectionChangeHandler)();
129
+ _DataStoreManager.DataStoreManager.clientDataStore = props.contextDataStore ?? undefined;
124
130
  dispatch({
125
131
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_ELEMENT_ID,
126
132
  payload: widgetElementId
@@ -139,7 +145,7 @@ const LiveChatWidgetStateful = props => {
139
145
  if (!((_props$controlProps3 = props.controlProps) !== null && _props$controlProps3 !== void 0 && _props$controlProps3.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
140
146
  var _props$reconnectChatP2;
141
147
 
142
- (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(dispatch, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, _startChat.initStartChat);
148
+ (0, _reconnectChatHelper.startUnauthenticatedReconnectChat)(chatSDK, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, _startChat.initStartChat);
143
149
  } // Initialize global dir
144
150
 
145
151
 
@@ -149,13 +155,11 @@ const LiveChatWidgetStateful = props => {
149
155
  payload: globalDir
150
156
  });
151
157
 
152
- if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.chatToken) {
158
+ if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.liveChatContext) {
153
159
  var _state$domainStates2;
154
160
 
155
161
  const optionalParams = {
156
- liveChatContext: {
157
- chatToken: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.chatToken
158
- }
162
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
159
163
  };
160
164
  (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, optionalParams);
161
165
  }
@@ -165,9 +169,9 @@ const LiveChatWidgetStateful = props => {
165
169
  var _props$reconnectChatP3;
166
170
 
167
171
  if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
168
- var _props$reconnectChatP4;
172
+ var _props$reconnectChatP4, _props$reconnectChatP5;
169
173
 
170
- (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(dispatch, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, _startChat.initStartChat);
174
+ (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(chatSDK, dispatch, setAdapter, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, _startChat.initStartChat, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.redirectInSameWindow);
171
175
  } else {
172
176
  (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
173
177
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -180,6 +184,12 @@ const LiveChatWidgetStateful = props => {
180
184
  payload: _ConversationState.ConversationState.ReconnectChat
181
185
  });
182
186
  } else {
187
+ const chatStartedSkippingChatButtonRendering = {
188
+ eventName: _TelemetryConstants.BroadcastEvent.StartChatSkippingChatButtonRendering
189
+ };
190
+
191
+ _omnichannelChatComponents.BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
192
+
183
193
  dispatch({
184
194
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
185
195
  payload: _ConversationState.ConversationState.Loading
@@ -192,32 +202,78 @@ const LiveChatWidgetStateful = props => {
192
202
  }, [state.appStates.skipChatButtonRendering]);
193
203
  (0, _react2.useEffect)(() => {
194
204
  _omnichannelChatComponents.BroadcastService.getMessageByEventName("StartProactiveChat").subscribe(msg => {
205
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
206
+ Event: _TelemetryConstants.TelemetryEvent.StartProactiveChatEventReceived,
207
+ Description: "Start proactive chat event received."
208
+ });
209
+
195
210
  if (canStartProactiveChat.current) {
196
211
  var _msg$payload, _msg$payload2, _msg$payload3;
197
212
 
198
- (0, _startProactiveChat.startProactiveChat)(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.bodyTitle, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.showPrechat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
213
+ (0, _startProactiveChat.startProactiveChat)(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.notificationConfig, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.enablePreChat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
214
+ } else {
215
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
216
+ Event: _TelemetryConstants.TelemetryEvent.ChatAlreadyTriggered,
217
+ Description: "Start proactive chat method called, when chat was already triggered."
218
+ });
219
+ }
220
+ }); // start chat from SDK Event
221
+
222
+
223
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName("StartChat").subscribe(() => {
224
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
225
+ Event: _TelemetryConstants.TelemetryEvent.StartChatEventRecevied,
226
+ Description: "Start chat event received."
227
+ });
228
+
229
+ if (state.appStates.isMinimized) {
230
+ dispatch({
231
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
232
+ payload: false
233
+ });
234
+ } else {
235
+ (0, _startChat.prepareStartChat)(props, chatSDK, state, dispatch, setAdapter);
236
+ }
237
+ }); // end chat from SDK Event
238
+
239
+
240
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName("EndChat").subscribe(async () => {
241
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
242
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
243
+ Description: "End chat event received."
244
+ });
245
+
246
+ if (canEndChat.current) {
247
+ (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
248
+ } else {
249
+ const skipEndChatSDK = true;
250
+ const skipCloseChat = false;
251
+ (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
199
252
  }
200
253
  });
201
254
 
202
- window.addEventListener("beforeunload", event => {
255
+ window.addEventListener("beforeunload", () => {
203
256
  (0, _disposeTelemetryLoggers.disposeTelemetryLoggers)();
204
257
  });
258
+
259
+ if (state.appStates.conversationEndedByAgent) {
260
+ (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
261
+ }
205
262
  }, []);
206
263
  (0, _react2.useEffect)(() => {
207
- if (state.appStates.conversationState !== _ConversationState.ConversationState.Closed) {
208
- canStartProactiveChat.current = false;
209
- }
264
+ canStartProactiveChat.current = state.appStates.conversationState === _ConversationState.ConversationState.Closed;
265
+ canEndChat.current = state.appStates.conversationState === _ConversationState.ConversationState.Active;
210
266
 
211
267
  if (state.appStates.conversationState === _ConversationState.ConversationState.Active) {
212
268
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
213
269
  _omnichannelChatComponents.BroadcastService.postMessage({
214
- eventName: "NewMessageNotification"
270
+ eventName: _TelemetryConstants.BroadcastEvent.NewMessageNotification
215
271
  });
216
272
  });
217
273
  } // Track the message count
218
274
 
219
275
 
220
- if (state.appStates.conversationState == _ConversationState.ConversationState.Active) {
276
+ if (state.appStates.conversationState === _ConversationState.ConversationState.Active) {
221
277
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
222
278
  currentMessageCountRef.current++;
223
279
  dispatch({
@@ -236,7 +292,7 @@ const LiveChatWidgetStateful = props => {
236
292
  });
237
293
  const customEvent = {
238
294
  elementType: _omnichannelChatComponents.ElementType.Custom,
239
- eventName: "UnreadMessageCount",
295
+ eventName: _TelemetryConstants.BroadcastEvent.UnreadMessageCount,
240
296
  payload: 0
241
297
  };
242
298
 
@@ -247,7 +303,7 @@ const LiveChatWidgetStateful = props => {
247
303
  if (state.appStates.isMinimized && state.appStates.unreadMessageCount > 0) {
248
304
  const customEvent = {
249
305
  elementType: _omnichannelChatComponents.ElementType.Custom,
250
- eventName: "UnreadMessageCount",
306
+ eventName: _TelemetryConstants.BroadcastEvent.UnreadMessageCount,
251
307
  payload: `${state.appStates.unreadMessageCount}`
252
308
  };
253
309
 
@@ -263,25 +319,30 @@ const LiveChatWidgetStateful = props => {
263
319
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]);
264
320
  const webChatProps = (0, _initWebChatComposer.initWebChatComposer)(props, chatSDK, state, dispatch, setWebChatStyles);
265
321
 
266
- const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
322
+ const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
323
+
324
+
325
+ const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat) => (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat); // eslint-disable-next-line @typescript-eslint/no-explicit-any
267
326
 
268
- const endChatRelay = () => (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
327
+
328
+ const prepareEndChatRelay = (adapter, state) => (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
269
329
 
270
330
  const prepareStartChatRelay = () => (0, _startChat.prepareStartChat)(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
271
331
 
272
332
 
273
- const initStartChatRelay = optionalParams => (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, optionalParams);
333
+ const initStartChatRelay = (optionalParams, persistedState) => (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
274
334
 
275
335
  const confirmationPaneProps = (0, _initConfirmationPropsComposer.initConfirmationPropsComposer)(props); // publish chat widget state
276
336
 
277
- const chatWidgetStateChangeEvent = {
278
- eventName: _TelemetryConstants.TelemetryEvent.ChatWidgetStateChanged,
279
- payload: { ...state
280
- }
281
- };
282
-
283
- _omnichannelChatComponents.BroadcastService.postMessage(chatWidgetStateChangeEvent);
337
+ (0, _react2.useEffect)(() => {
338
+ const chatWidgetStateChangeEvent = {
339
+ eventName: _TelemetryConstants.BroadcastEvent.ChatWidgetStateChanged,
340
+ payload: { ...state
341
+ }
342
+ };
284
343
 
344
+ _omnichannelChatComponents.BroadcastService.postMessage(chatWidgetStateChangeEvent);
345
+ }, [state]);
285
346
  return /*#__PURE__*/_react2.default.createElement(Composer, _extends({}, webChatProps, {
286
347
  styleOptions: webChatStyles,
287
348
  directLine: ((_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.directLine) ?? adapter ?? _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.directLine
@@ -303,15 +364,15 @@ const LiveChatWidgetStateful = props => {
303
364
  })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideLoadingPane) && (0, _componentController.shouldShowLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/_react2.default.createElement(_LoadingPaneStateful.default, props.loadingPaneProps)), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.hideOutOfOfficeHoursPane) && (0, _componentController.shouldShowOutOfOfficeHoursPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/_react2.default.createElement(_OOOHPaneStateful.default, props.outOfOfficeHoursPaneProps)), !((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideReconnectChatPane) && (0, _componentController.shouldShowReconnectChatPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/_react2.default.createElement(_ReconnectChatPaneStateful.default, {
304
365
  reconnectChatProps: props.reconnectChatPaneProps,
305
366
  initStartChat: initStartChatRelay
306
- })), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hidePreChatSurveyPane) && (0, _componentController.shouldShowPreChatSurveyPane)(state) && /*#__PURE__*/_react2.default.createElement(_PreChatSurveyPaneStateful.default, {
367
+ })), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hidePreChatSurveyPane) && (0, _componentController.shouldShowPreChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PreChatSurveyPaneStateful.default, {
307
368
  surveyProps: props.preChatSurveyPaneProps,
308
369
  initStartChat: initStartChatRelay
309
- }), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
370
+ })), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
310
371
  voiceVideoCallingSdk: voiceVideoCallingSDK
311
- }, props.callingContainerProps)), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideWebChatContainer) && (0, _componentController.shouldShowWebChatContainer)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.webChatContainer) || /*#__PURE__*/_react2.default.createElement(_WebChatContainerStateful.default, props.webChatContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideConfirmationPane) && (0, _componentController.shouldShowConfirmationPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.confirmationPane) || /*#__PURE__*/_react2.default.createElement(_ConfirmationPaneStateful.default, _extends({}, confirmationPaneProps, {
372
+ }, props.callingContainerProps)), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideWebChatContainer) && (0, _componentController.shouldShowWebChatContainer)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/_react2.default.createElement(_WebChatContainerStateful.default, props.webChatContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideConfirmationPane) && (0, _componentController.shouldShowConfirmationPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/_react2.default.createElement(_ConfirmationPaneStateful.default, _extends({}, confirmationPaneProps, {
312
373
  setPostChatContext: setPostChatContextRelay,
313
- endChat: endChatRelay
314
- }))), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hidePostChatLoadingPane) && (0, _componentController.shouldShowPostChatLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.postChatLoadingPane) || /*#__PURE__*/_react2.default.createElement(_PostChatLoadingPaneStateful.default, props.postChatLoadingPaneProps)), (0, _componentController.shouldShowPostChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PostChatSurveyPaneStateful.default, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), (0, _createFooter.createFooter)(props, state), (0, _componentController.shouldShowEmailTranscriptPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.emailTranscriptPane) || /*#__PURE__*/_react2.default.createElement(_EmailTranscriptPaneStateful.default, props.emailTranscriptPane))));
374
+ prepareEndChat: prepareEndChatRelay
375
+ }))), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hidePostChatLoadingPane) && (0, _componentController.shouldShowPostChatLoadingPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/_react2.default.createElement(_PostChatLoadingPaneStateful.default, props.postChatLoadingPaneProps)), (0, _componentController.shouldShowPostChatSurveyPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/_react2.default.createElement(_PostChatSurveyPaneStateful.default, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), (0, _createFooter.createFooter)(props, state), (0, _componentController.shouldShowEmailTranscriptPane)(state) && ((0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/_react2.default.createElement(_EmailTranscriptPaneStateful.default, props.emailTranscriptPane))));
315
376
  };
316
377
 
317
378
  exports.LiveChatWidgetStateful = LiveChatWidgetStateful;
@@ -46,7 +46,7 @@ const LoadingPaneStateful = props => {
46
46
  firstElement[0].focus();
47
47
  }
48
48
 
49
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
49
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
50
50
  Event: _TelemetryConstants.TelemetryEvent.LoadingPaneLoaded,
51
51
  Description: "Loading pane loaded."
52
52
  });
@@ -5,10 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.OutOfOfficeHoursPaneStateful = void 0;
7
7
 
8
+ var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
+
8
10
  var _react = _interopRequireWildcard(require("react"));
9
11
 
10
12
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
13
 
14
+ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
15
+
12
16
  var _defaultgeneralOOOHPaneStyleProps = require("./common/defaultStyleProps/defaultgeneralOOOHPaneStyleProps");
13
17
 
14
18
  var _utils = require("../../common/utils");
@@ -41,6 +45,10 @@ const OutOfOfficeHoursPaneStateful = props => {
41
45
  if (firstElement && firstElement[0]) {
42
46
  firstElement[0].focus();
43
47
  }
48
+
49
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
50
+ Event: _TelemetryConstants.TelemetryEvent.OutOfOfficePaneLoaded
51
+ });
44
52
  }, []);
45
53
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.OutOfOfficeHoursPane, {
46
54
  componentOverrides: props.componentOverrides,
@@ -15,6 +15,10 @@ var _utils = require("../../common/utils");
15
15
 
16
16
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
17
17
 
18
+ var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
19
+
20
+ var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
21
+
18
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
23
 
20
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -46,6 +50,10 @@ const PostChatLoadingPaneStateful = props => {
46
50
  if (firstElement && firstElement[0]) {
47
51
  firstElement[0].focus();
48
52
  }
53
+
54
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
55
+ Event: _TelemetryConstants.TelemetryEvent.PostChatSurveyLoadingPaneLoaded
56
+ });
49
57
  }, []);
50
58
  return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.LoadingPane, {
51
59
  componentOverrides: props.componentOverrides,