@microsoft/omnichannel-chat-widget 0.1.0-main.7338c17 → 0.1.0-main.7b290a7

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 (133) hide show
  1. package/README.md +3 -11
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +28 -0
  4. package/lib/cjs/common/Constants.js +36 -4
  5. package/lib/cjs/common/telemetry/TelemetryConstants.js +39 -5
  6. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  7. package/lib/cjs/common/telemetry/TelemetryManager.js +17 -6
  8. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  10. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  11. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  12. package/lib/cjs/common/utils.js +16 -2
  13. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  14. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  15. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -39
  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 -21
  20. package/lib/cjs/components/livechatwidget/common/endChat.js +102 -57
  21. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +1 -1
  22. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +32 -7
  23. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  24. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +6 -17
  25. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
  26. package/lib/cjs/components/livechatwidget/common/startChat.js +43 -30
  27. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +91 -30
  28. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  29. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -2
  30. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  31. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
  33. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  34. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  35. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  36. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  37. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +7 -7
  38. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  39. package/lib/cjs/contexts/createReducer.js +8 -10
  40. package/lib/cjs/controller/componentController.js +2 -2
  41. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  42. package/lib/esm/assets/Audios.js +1 -0
  43. package/lib/esm/assets/Icons.js +11 -0
  44. package/lib/esm/common/Constants.js +32 -3
  45. package/lib/esm/common/telemetry/TelemetryConstants.js +35 -4
  46. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  47. package/lib/esm/common/telemetry/TelemetryManager.js +15 -6
  48. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  49. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  50. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  51. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  52. package/lib/esm/common/utils.js +12 -1
  53. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  54. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  55. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -35
  56. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  57. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -9
  58. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  59. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +14 -22
  60. package/lib/esm/components/livechatwidget/common/endChat.js +101 -55
  61. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +1 -1
  62. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +29 -8
  63. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  64. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +5 -14
  65. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
  66. package/lib/esm/components/livechatwidget/common/startChat.js +43 -31
  67. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +83 -28
  68. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  69. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +3 -3
  70. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  71. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  72. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  73. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  74. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  75. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  76. package/lib/esm/contexts/common/ConversationState.js +3 -2
  77. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +7 -7
  78. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  79. package/lib/esm/contexts/createReducer.js +8 -9
  80. package/lib/esm/controller/componentController.js +2 -2
  81. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  82. package/lib/types/assets/Audios.d.ts +1 -0
  83. package/lib/types/assets/Icons.d.ts +11 -0
  84. package/lib/types/common/Constants.d.ts +18 -1
  85. package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
  86. package/lib/types/common/telemetry/TelemetryConstants.d.ts +24 -3
  87. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  88. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  89. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  90. package/lib/types/common/utils.d.ts +1 -0
  91. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  92. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  93. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  94. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  95. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  96. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  97. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -1
  98. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  99. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  100. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  101. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  102. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  103. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  104. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  105. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +7 -7
  106. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  107. package/package.json +9 -11
  108. package/lib/cjs/assets/assets.d.js +0 -1
  109. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  110. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  111. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  112. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  113. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  114. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  115. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  116. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  117. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  118. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  119. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  120. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  121. package/lib/esm/assets/assets.d.js +0 -0
  122. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  123. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  124. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  125. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  126. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  127. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  128. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  129. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  130. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  131. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  132. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  133. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.handleUnauthenticatedReconnectChat = exports.getReconnectIdForAuthenticatedChat = void 0;
6
+ exports.startUnauthenticatedReconnectChat = exports.handleUnauthenticatedReconnectChat = exports.handleRedirectUnauthenticatedReconnectChat = exports.getReconnectIdForAuthenticatedChat = exports.getChatReconnectContext = void 0;
7
7
 
8
8
  require("regenerator-runtime/runtime");
9
9
 
10
10
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
11
 
12
- var _Constants = require("../../../common/Constants");
12
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
13
 
14
14
  var _ConversationState = require("../../../contexts/common/ConversationState");
15
15
 
@@ -41,6 +41,8 @@ const getChatReconnectContext = async (chatSDK, reconnectId) => {
41
41
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
42
 
43
43
 
44
+ exports.getChatReconnectContext = getChatReconnectContext;
45
+
44
46
  const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
45
47
  var _props$reconnectChatP, _props$reconnectChatP2;
46
48
 
@@ -61,33 +63,116 @@ const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
61
63
 
62
64
  exports.getReconnectIdForAuthenticatedChat = getReconnectIdForAuthenticatedChat;
63
65
 
64
- const handleUnauthenticatedReconnectChat = async (dispatch, reconnectId, initStartChat) => {
65
- const reconnectAvailabilityResponse = await getChatReconnectContext(reconnectId);
66
+ const handleUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
67
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
66
68
 
67
- if (reconnectAvailabilityResponse && reconnectAvailabilityResponse.redirectURL) {
68
- redirectPage(reconnectAvailabilityResponse.redirectURL);
69
+ if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
70
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
69
71
  } else {
70
- const optionalParams = {
71
- reconnectId: reconnectId
72
- };
72
+ await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
73
+ }
74
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+
76
+
77
+ exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
78
+
79
+ const startUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
80
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
81
+
82
+ if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
+ await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
84
+ }
85
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+
87
+
88
+ exports.startUnauthenticatedReconnectChat = startUnauthenticatedReconnectChat;
89
+
90
+ const setReconnectIdAndStartChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
91
+ const startUnauthenticatedReconnectChat = {
92
+ eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
+ };
94
+
95
+ _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat);
96
+
97
+ const optionalParams = {
98
+ reconnectId: reconnectId
99
+ };
100
+ dispatch({
101
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
102
+ payload: reconnectId
103
+ });
104
+ dispatch({
105
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
106
+ payload: _ConversationState.ConversationState.Loading
107
+ });
108
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
109
+ };
110
+
111
+ const redirectPage = (redirectURL, redirectInSameWindow) => {
112
+ const redirectPageRequest = {
113
+ eventName: _TelemetryConstants.BroadcastEvent.RedirectPageRequest,
114
+ payload: {
115
+ redirectURL: redirectURL
116
+ }
117
+ };
118
+
119
+ _omnichannelChatComponents.BroadcastService.postMessage(redirectPageRequest);
120
+
121
+ if (redirectInSameWindow) {
122
+ window.location.href = redirectURL;
123
+ }
124
+ };
125
+
126
+ const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
127
+ return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
128
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
+
130
+
131
+ const startNewChatEmptyRedirectionUrl = async (chatSDK, dispatch, setAdapter, initStartChat) => {
132
+ const startUnauthenticatedReconnectChat = {
133
+ eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
134
+ };
135
+
136
+ _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
137
+
138
+
139
+ const parseToJson = false;
140
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
141
+
142
+ if (preChatSurveyResponse) {
143
+ dispatch({
144
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
145
+ payload: preChatSurveyResponse
146
+ });
73
147
  dispatch({
74
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
75
- payload: reconnectId
148
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
149
+ payload: _ConversationState.ConversationState.Prechat
76
150
  });
151
+ } else {
77
152
  dispatch({
78
153
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
79
154
  payload: _ConversationState.ConversationState.Loading
80
155
  });
81
- await initStartChat(optionalParams);
156
+ await initStartChat(chatSDK, dispatch, setAdapter);
82
157
  }
83
- };
158
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
159
 
85
- exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
86
160
 
87
- const redirectPage = newUrl => {
88
- const data = {
89
- messageName: _Constants.Constants.redirectPageRequest,
90
- newUrl: newUrl
91
- };
92
- window.parent.postMessage(data, "*");
161
+ const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
162
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
163
+
164
+ if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
165
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
166
+ }
167
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
+
169
+
170
+ exports.handleRedirectUnauthenticatedReconnectChat = handleRedirectUnauthenticatedReconnectChat;
171
+
172
+ const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
173
+ if (reconnectAvailabilityResponse.redirectURL) {
174
+ redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
175
+ } else {
176
+ await startNewChatEmptyRedirectionUrl(chatSDK, dispatch, setAdapter, initStartChat);
177
+ }
93
178
  };
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.registerTelemetryLoggers = void 0;
7
7
 
8
- var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
9
-
10
8
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
11
9
 
10
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
+
12
12
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
13
 
14
14
  var _defaultAriaConfig = require("../../../common/telemetry/defaultConfigs/defaultAriaConfig");
@@ -17,21 +17,9 @@ var _defaultTelemetryInternalData = require("../../../common/telemetry/defaultCo
17
17
 
18
18
  var _defaultTelemetryConfiguration = require("../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration");
19
19
 
20
- var _package = require("@microsoft/omnichannel-chat-components/package.json");
21
-
22
- var _package2 = require("@microsoft/omnichannel-chat-sdk/package.json");
23
-
24
20
  const registerTelemetryLoggers = (props, dispatch) => {
25
21
  var _props$liveChatContex, _props$liveChatContex2;
26
22
 
27
- let widgetPackageInfo;
28
-
29
- try {
30
- widgetPackageInfo = require("@microsoft/omnichannel-chat-widget/package.json");
31
- } catch (error) {
32
- widgetPackageInfo = "0.0.0-0";
33
- }
34
-
35
23
  const telemetryConfig = { ..._defaultTelemetryConfiguration.defaultTelemetryConfiguration,
36
24
  ...props.telemetryConfig
37
25
  };
@@ -53,12 +41,13 @@ const registerTelemetryLoggers = (props, dispatch) => {
53
41
  }
54
42
 
55
43
  telemetryData = _TelemetryHelper.TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
56
- telemetryData.OCChatSDKVersion = _package2.version;
57
- telemetryData.chatComponentVersion = _package.version;
58
- telemetryData.chatWidgetVersion = widgetPackageInfo;
44
+ telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
45
+ telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
46
+ telemetryData.chatWidgetVersion = telemetryConfig.chatWidgetVersion ?? "0.0.0-0";
59
47
  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;
60
48
  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;
61
49
  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;
50
+ _TelemetryManager.TelemetryManager.InternalTelemetryData = telemetryData;
62
51
  dispatch({
63
52
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
64
53
  payload: telemetryData
@@ -7,13 +7,13 @@ exports.setPostChatContextAndLoadSurvey = void 0;
7
7
 
8
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
9
 
10
- var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
-
12
- var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
10
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
11
 
14
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
15
13
 
16
- var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
14
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
15
+
16
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
17
17
 
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
@@ -39,7 +39,8 @@ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat)
39
39
  exception: ex
40
40
  }
41
41
  });
42
- }
42
+ } // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
+
43
44
 
44
45
  _omnichannelChatComponents.BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
45
46
  dispatch({
@@ -25,6 +25,8 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
25
25
 
26
26
  var _createAdapter = require("./createAdapter");
27
27
 
28
+ var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
29
+
28
30
  var _utils = require("../../../common/utils");
29
31
 
30
32
  var _reconnectChatHelper = require("./reconnectChatHelper");
@@ -35,41 +37,50 @@ var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
35
37
 
36
38
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
39
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
40
+ var _props$reconnectChatP;
41
+
38
42
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
39
43
  return;
40
- } // Getting PreChat Survey Context
41
-
44
+ } // Redirecting if unauthenticated reconnect chat expired
42
45
 
43
- const parseToJson = false;
44
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
45
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
46
46
 
47
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
47
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
48
+ var _props$reconnectChatP2, _props$reconnectChatP3;
48
49
 
49
- if (reconnectId) {
50
- dispatch({
51
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
52
- payload: reconnectId
53
- });
54
- dispatch({
55
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
56
- payload: _ConversationState.ConversationState.ReconnectChat
57
- });
58
- } else if (showPrechat) {
59
- dispatch({
60
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
61
- payload: preChatSurveyResponse
62
- });
63
- dispatch({
64
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
65
- payload: _ConversationState.ConversationState.Prechat
66
- });
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);
67
51
  } else {
68
- dispatch({
69
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
70
- payload: _ConversationState.ConversationState.Loading
71
- });
72
- 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
+ }
73
84
  }
74
85
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
86
 
@@ -78,7 +89,7 @@ exports.prepareStartChat = prepareStartChat;
78
89
 
79
90
  const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
80
91
  try {
81
- var _TelemetryTimers$Widg;
92
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
82
93
 
83
94
  try {
84
95
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
@@ -99,6 +110,8 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
99
110
 
100
111
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
101
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));
102
115
 
103
116
  if (!persistedState) {
104
117
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -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,14 +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
- var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
89
-
90
- var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
91
-
92
92
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
93
93
 
94
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); }
@@ -98,7 +98,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
98
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); }
99
99
 
100
100
  const LiveChatWidgetStateful = props => {
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$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;
102
102
 
103
103
  const [state, dispatch] = (0, _useChatContextStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
104
 
@@ -107,12 +107,14 @@ const LiveChatWidgetStateful = props => {
107
107
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
108
108
  }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
109
 
110
- const chatSDK = (0, _useChatSDKStore.default)();
110
+ const chatSDK = (0, _useChatSDKStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
+
111
112
  const [voiceVideoCallingSDK, setVoiceVideoCallingSDK] = (0, _react2.useState)(undefined);
112
113
  const {
113
114
  Composer
114
115
  } = _botframeworkWebchat.Components;
115
- const canStartProactiveChat = (0, _react2.useRef)(true); // Process general styles
116
+ const canStartProactiveChat = (0, _react2.useRef)(true);
117
+ const canEndChat = (0, _react2.useRef)(true); // Process general styles
116
118
 
117
119
  const generalStyles = {
118
120
  root: Object.assign({}, (0, _getGeneralStylesForButton.getGeneralStylesForButton)(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
@@ -134,6 +136,10 @@ const LiveChatWidgetStateful = props => {
134
136
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
135
137
  payload: ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.skipChatButtonRendering) || false
136
138
  });
139
+ dispatch({
140
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
141
+ payload: false
142
+ });
137
143
  (0, _initCallingSdk.initCallingSdk)(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
138
144
  sdkCreated && dispatch({
139
145
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
@@ -144,7 +150,7 @@ const LiveChatWidgetStateful = props => {
144
150
  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) {
145
151
  var _props$reconnectChatP2;
146
152
 
147
- (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(dispatch, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, _startChat.initStartChat);
153
+ (0, _reconnectChatHelper.startUnauthenticatedReconnectChat)(chatSDK, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, _startChat.initStartChat);
148
154
  } // Initialize global dir
149
155
 
150
156
 
@@ -154,13 +160,11 @@ const LiveChatWidgetStateful = props => {
154
160
  payload: globalDir
155
161
  });
156
162
 
157
- if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.chatToken) {
163
+ if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.liveChatContext) {
158
164
  var _state$domainStates2;
159
165
 
160
166
  const optionalParams = {
161
- liveChatContext: {
162
- chatToken: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.chatToken
163
- }
167
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
164
168
  };
165
169
  (0, _startChat.initStartChat)(chatSDK, dispatch, setAdapter, optionalParams);
166
170
  }
@@ -170,9 +174,9 @@ const LiveChatWidgetStateful = props => {
170
174
  var _props$reconnectChatP3;
171
175
 
172
176
  if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
173
- var _props$reconnectChatP4;
177
+ var _props$reconnectChatP4, _props$reconnectChatP5;
174
178
 
175
- (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(dispatch, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, _startChat.initStartChat);
179
+ (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);
176
180
  } else {
177
181
  (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
178
182
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -185,6 +189,12 @@ const LiveChatWidgetStateful = props => {
185
189
  payload: _ConversationState.ConversationState.ReconnectChat
186
190
  });
187
191
  } else {
192
+ const chatStartedSkippingChatButtonRendering = {
193
+ eventName: _TelemetryConstants.BroadcastEvent.StartChatSkippingChatButtonRendering
194
+ };
195
+
196
+ _omnichannelChatComponents.BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
197
+
188
198
  dispatch({
189
199
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
190
200
  payload: _ConversationState.ConversationState.Loading
@@ -196,6 +206,19 @@ const LiveChatWidgetStateful = props => {
196
206
  }
197
207
  }, [state.appStates.skipChatButtonRendering]);
198
208
  (0, _react2.useEffect)(() => {
209
+ // Add the custom context on receiving the SetCustomContext event
210
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.SetCustomContext).subscribe(msg => {
211
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
212
+ Event: _TelemetryConstants.TelemetryEvent.CustomContextReceived,
213
+ Description: "CustomContext received."
214
+ });
215
+
216
+ dispatch({
217
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
218
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
219
+ });
220
+ });
221
+
199
222
  _omnichannelChatComponents.BroadcastService.getMessageByEventName("StartProactiveChat").subscribe(msg => {
200
223
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
201
224
  Event: _TelemetryConstants.TelemetryEvent.StartProactiveChatEventReceived,
@@ -212,9 +235,42 @@ const LiveChatWidgetStateful = props => {
212
235
  Description: "Start proactive chat method called, when chat was already triggered."
213
236
  });
214
237
  }
238
+ }); // start chat from SDK Event
239
+
240
+
241
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName("StartChat").subscribe(() => {
242
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
243
+ Event: _TelemetryConstants.TelemetryEvent.StartChatEventRecevied,
244
+ Description: "Start chat event received."
245
+ });
246
+
247
+ if (state.appStates.isMinimized) {
248
+ dispatch({
249
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
250
+ payload: false
251
+ });
252
+ } else {
253
+ (0, _startChat.prepareStartChat)(props, chatSDK, state, dispatch, setAdapter);
254
+ }
255
+ }); // end chat from SDK Event
256
+
257
+
258
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName("EndChat").subscribe(async () => {
259
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
260
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
261
+ Description: "End chat event received."
262
+ });
263
+
264
+ if (canEndChat.current) {
265
+ (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
266
+ } else {
267
+ const skipEndChatSDK = true;
268
+ const skipCloseChat = false;
269
+ (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
270
+ }
215
271
  });
216
272
 
217
- window.addEventListener("beforeunload", event => {
273
+ window.addEventListener("beforeunload", () => {
218
274
  (0, _disposeTelemetryLoggers.disposeTelemetryLoggers)();
219
275
  });
220
276
 
@@ -224,11 +280,12 @@ const LiveChatWidgetStateful = props => {
224
280
  }, []);
225
281
  (0, _react2.useEffect)(() => {
226
282
  canStartProactiveChat.current = state.appStates.conversationState === _ConversationState.ConversationState.Closed;
283
+ canEndChat.current = state.appStates.conversationState === _ConversationState.ConversationState.Active;
227
284
 
228
285
  if (state.appStates.conversationState === _ConversationState.ConversationState.Active) {
229
286
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
230
287
  _omnichannelChatComponents.BroadcastService.postMessage({
231
- eventName: "NewMessageNotification"
288
+ eventName: _TelemetryConstants.BroadcastEvent.NewMessageNotification
232
289
  });
233
290
  });
234
291
  } // Track the message count
@@ -253,7 +310,7 @@ const LiveChatWidgetStateful = props => {
253
310
  });
254
311
  const customEvent = {
255
312
  elementType: _omnichannelChatComponents.ElementType.Custom,
256
- eventName: "UnreadMessageCount",
313
+ eventName: _TelemetryConstants.BroadcastEvent.UnreadMessageCount,
257
314
  payload: 0
258
315
  };
259
316
 
@@ -264,7 +321,7 @@ const LiveChatWidgetStateful = props => {
264
321
  if (state.appStates.isMinimized && state.appStates.unreadMessageCount > 0) {
265
322
  const customEvent = {
266
323
  elementType: _omnichannelChatComponents.ElementType.Custom,
267
- eventName: "UnreadMessageCount",
324
+ eventName: _TelemetryConstants.BroadcastEvent.UnreadMessageCount,
268
325
  payload: `${state.appStates.unreadMessageCount}`
269
326
  };
270
327
 
@@ -280,9 +337,13 @@ const LiveChatWidgetStateful = props => {
280
337
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]);
281
338
  const webChatProps = (0, _initWebChatComposer.initWebChatComposer)(props, chatSDK, state, dispatch, setWebChatStyles);
282
339
 
283
- const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
340
+ const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
341
+
342
+
343
+ 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
284
344
 
285
- const endChatRelay = () => (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
345
+
346
+ const prepareEndChatRelay = (adapter, state) => (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
286
347
 
287
348
  const prepareStartChatRelay = () => (0, _startChat.prepareStartChat)(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
288
349
 
@@ -293,7 +354,7 @@ const LiveChatWidgetStateful = props => {
293
354
 
294
355
  (0, _react2.useEffect)(() => {
295
356
  const chatWidgetStateChangeEvent = {
296
- eventName: _TelemetryConstants.TelemetryEvent.ChatWidgetStateChanged,
357
+ eventName: _TelemetryConstants.BroadcastEvent.ChatWidgetStateChanged,
297
358
  payload: { ...state
298
359
  }
299
360
  };
@@ -321,15 +382,15 @@ const LiveChatWidgetStateful = props => {
321
382
  })), !((_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, {
322
383
  reconnectChatProps: props.reconnectChatPaneProps,
323
384
  initStartChat: initStartChatRelay
324
- })), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hidePreChatSurveyPane) && (0, _componentController.shouldShowPreChatSurveyPane)(state) && /*#__PURE__*/_react2.default.createElement(_PreChatSurveyPaneStateful.default, {
385
+ })), !((_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, {
325
386
  surveyProps: props.preChatSurveyPaneProps,
326
387
  initStartChat: initStartChatRelay
327
- }), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
388
+ })), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && (0, _componentController.shouldShowCallingContainer)(state) && /*#__PURE__*/_react2.default.createElement(_CallingContainerStateful.default, _extends({
328
389
  voiceVideoCallingSdk: voiceVideoCallingSDK
329
- }, 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, {
390
+ }, 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, {
330
391
  setPostChatContext: setPostChatContextRelay,
331
- endChat: endChatRelay
332
- }))), !((_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))));
392
+ prepareEndChat: prepareEndChatRelay
393
+ }))), !((_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))));
333
394
  };
334
395
 
335
396
  exports.LiveChatWidgetStateful = LiveChatWidgetStateful;