@microsoft/omnichannel-chat-widget 0.1.0-main.a72fbb6 → 0.1.0-main.acb91cf

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 (96) hide show
  1. package/lib/cjs/common/Constants.js +2 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +6 -0
  3. package/lib/cjs/common/utils.js +20 -7
  4. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  5. package/lib/cjs/components/headerstateful/HeaderStateful.js +2 -1
  6. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  7. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  8. package/lib/cjs/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
  9. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  10. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  11. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  12. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  13. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  14. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  15. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  16. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +8 -6
  17. package/lib/cjs/components/livechatwidget/common/endChat.js +3 -3
  18. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +4 -0
  19. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +55 -35
  20. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  21. package/lib/cjs/components/livechatwidget/common/startChat.js +55 -27
  22. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +113 -55
  23. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  24. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +11 -0
  25. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  26. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  27. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  28. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  29. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  30. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -0
  31. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  32. package/lib/cjs/contexts/createReducer.js +8 -0
  33. package/lib/esm/common/Constants.js +2 -0
  34. package/lib/esm/common/telemetry/TelemetryConstants.js +6 -0
  35. package/lib/esm/common/utils.js +14 -5
  36. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  37. package/lib/esm/components/headerstateful/HeaderStateful.js +2 -1
  38. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  39. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  40. package/lib/esm/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
  41. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  42. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  43. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  44. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  45. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  46. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  47. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  48. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +8 -6
  49. package/lib/esm/components/livechatwidget/common/endChat.js +3 -3
  50. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +4 -0
  51. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +55 -37
  52. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  53. package/lib/esm/components/livechatwidget/common/startChat.js +51 -28
  54. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +112 -57
  55. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  56. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +10 -0
  57. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  58. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  59. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  60. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  61. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  62. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -0
  63. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  64. package/lib/esm/contexts/createReducer.js +8 -0
  65. package/lib/types/common/Constants.d.ts +1 -0
  66. package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
  67. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -1
  68. package/lib/types/common/utils.d.ts +5 -4
  69. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  70. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  71. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  72. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  73. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  74. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  75. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  76. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  77. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  78. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  79. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -5
  80. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  81. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  82. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -3
  83. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  84. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  85. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -2
  86. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  87. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  88. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  89. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  90. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  91. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  92. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  93. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  94. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  95. package/package.json +4 -3
  96. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +0 -4
@@ -0,0 +1,38 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ export function shareObservable(observable) {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ let observers = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+
6
+ let subscription; // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+
8
+ return new window.Observable(observer => {
9
+ if (!subscription) {
10
+ subscription = observable.subscribe({
11
+ complete() {
12
+ observers.forEach(observer => observer.complete());
13
+ },
14
+
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ error(err) {
17
+ observers.forEach(observer => observer.error(err));
18
+ },
19
+
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ next(value) {
22
+ observers.forEach(observer => observer.next(value));
23
+ }
24
+
25
+ });
26
+ }
27
+
28
+ observers.push(observer);
29
+ return () => {
30
+ observers = observers.filter(o => o !== observer);
31
+
32
+ if (!observers.length) {
33
+ subscription.unsubscribe();
34
+ subscription = null;
35
+ }
36
+ };
37
+ });
38
+ }
@@ -13,14 +13,19 @@ import { getReconnectIdForAuthenticatedChat, handleRedirectUnauthenticatedReconn
13
13
  import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
14
14
  import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
15
15
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ import { ActivityStreamHandler } from "./ActivityStreamHandler";
17
+ import { getAuthClientFunction, handleAuthentication } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+
17
19
  let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
20
 
21
+ let widgetInstanceId; // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+
19
23
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
20
- var _props$reconnectChatP;
24
+ var _props$controlProps, _props$reconnectChatP;
21
25
 
22
26
  optionalParams = {}; //Resetting to ensure no stale values
23
- // Can connect to existing chat session
27
+
28
+ widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId; // Can connect to existing chat session
24
29
 
25
30
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
26
31
  return;
@@ -28,9 +33,9 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
28
33
 
29
34
 
30
35
  if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
31
- var _props$reconnectChatP2, _props$reconnectChatP3;
36
+ var _props$reconnectChatP2, _props$reconnectChatP3, _props$reconnectChatP4;
32
37
 
33
- await handleRedirectUnauthenticatedReconnectChat(chatSDK, props.authProps, 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);
38
+ await handleRedirectUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.redirectInSameWindow);
34
39
  return;
35
40
  } // Getting reconnectId for authenticated chat
36
41
 
@@ -47,19 +52,17 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
47
52
  payload: ConversationState.ReconnectChat
48
53
  });
49
54
  return;
50
- } // Set custom context params
55
+ } // Setting Proactive chat settings
51
56
 
52
57
 
53
- setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
54
-
55
58
  const isProactiveChat = state.appStates.conversationState === ConversationState.ProactiveChat;
56
59
  const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
57
60
 
58
- setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
61
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
59
62
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
63
 
61
64
 
62
- const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
65
+ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
63
66
  // Getting prechat Survey Context
64
67
  const parseToJson = false;
65
68
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
@@ -82,14 +85,25 @@ const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapte
82
85
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
83
86
  payload: ConversationState.Loading
84
87
  });
85
- await initStartChat(chatSDK, authProps, dispatch, setAdapter);
88
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
86
89
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
90
 
88
91
 
89
- const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, persistedState) => {
92
+ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
90
93
  try {
91
94
  var _newAdapter$activity$, _TelemetryTimers$Widg;
92
95
 
96
+ const authClientFunction = getAuthClientFunction(chatConfig);
97
+
98
+ if (getAuthToken && authClientFunction) {
99
+ // set auth token to chat sdk before start chat
100
+ const authSuccess = await handleAuthentication(chatSDK, chatConfig, getAuthToken);
101
+
102
+ if (!authSuccess) {
103
+ return;
104
+ }
105
+ }
106
+
93
107
  let isStartChatSuccessful = false; //Check if chat retrieved from cache
94
108
 
95
109
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
@@ -109,14 +123,10 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
109
123
  TelemetryTimers.WidgetLoadTimer = createTimer();
110
124
  TelemetryHelper.logSDKEvent(LogLevel.INFO, {
111
125
  Event: TelemetryEvent.StartChatSDKCall
112
- }); // Set optional params
113
-
114
- optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
115
-
116
- if (authProps && authProps.setAuthTokenProviderToChatSdk) {
117
- await authProps.setAuthTokenProviderToChatSdk(chatSDK, authProps.authClientFunction);
118
- }
126
+ }); // Set custom context params
119
127
 
128
+ setCustomContextParams(chatSDK);
129
+ optionalParams = Object.assign({}, params, optionalParams);
120
130
  await chatSDK.startChat(optionalParams);
121
131
  isStartChatSuccessful = true;
122
132
  } catch (error) {
@@ -167,6 +177,7 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
167
177
  await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
168
178
 
169
179
  if (isStartChatSuccessful) {
180
+ ActivityStreamHandler.uncork();
170
181
  dispatch({
171
182
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
172
183
  payload: ConversationState.Active
@@ -199,19 +210,20 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
199
210
  }
200
211
  } finally {
201
212
  optionalParams = {};
213
+ widgetInstanceId = "";
202
214
  }
203
215
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
216
 
205
217
 
206
218
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
207
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
219
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
208
220
 
209
221
  // By pass this function in case of popout chat
210
222
  if (state.appStates.skipChatButtonRendering === true) {
211
223
  return false;
212
224
  }
213
225
 
214
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId); //Connect to only active chat session
226
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? ""); //Connect to only active chat session
215
227
 
216
228
  if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai6 = persistedState.domainStates) === null || _persistedState$domai6 === void 0 ? void 0 : _persistedState$domai6.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === ConversationState.Active) {
217
229
  var _persistedState$domai7;
@@ -223,7 +235,7 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
223
235
  const optionalParams = {
224
236
  liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
225
237
  };
226
- await initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
238
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
227
239
  return true;
228
240
  } else {
229
241
  return false;
@@ -231,17 +243,28 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
231
243
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
232
244
 
233
245
 
234
- const setCustomContextParams = (props, chatSDK) => {
235
- var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
246
+ const setCustomContextParams = chatSDK => {
247
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
236
248
 
237
249
  // Add custom context only for unauthenticated chat
238
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId);
250
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId, widgetInstanceId ?? "");
239
251
 
240
- if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
241
- var _persistedState$domai9;
252
+ if (!isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
253
+ var _persistedState$domai9, _persistedState$domai10;
254
+
255
+ if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
256
+ const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
257
+ TelemetryHelper.logSDKEvent(LogLevel.WARN, {
258
+ Event: TelemetryEvent.StartChatMethodException,
259
+ ExceptionDetails: {
260
+ exception: errorMessage
261
+ }
262
+ });
263
+ throw new Error(errorMessage);
264
+ }
242
265
 
243
266
  optionalParams = Object.assign({}, optionalParams, {
244
- customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
267
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
245
268
  });
246
269
  }
247
270
  };
@@ -1,10 +1,10 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
4
- import { BroadcastService, decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
+ import { BroadcastService, decodeComponentString, BroadcastServiceInitialize } from "@microsoft/omnichannel-chat-components";
5
5
  import { Stack } from "@fluentui/react";
6
6
  import React, { useEffect, useRef, useState } from "react";
7
- import { createTimer, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isUndefinedOrEmpty } from "../../../common/utils";
7
+ import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
8
8
  import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
9
9
  import { initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
10
10
  import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
@@ -43,8 +43,10 @@ import { startProactiveChat } from "../common/startProactiveChat";
43
43
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
44
44
  import useChatContextStore from "../../../hooks/useChatContextStore";
45
45
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
46
+ import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
47
+ import { Constants } from "../../../common/Constants";
46
48
  export const LiveChatWidgetStateful = props => {
47
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$controlProps6, _props$componentOverr, _props$controlProps7, _props$componentOverr2, _props$controlProps8, _props$componentOverr3, _props$controlProps9, _props$componentOverr4, _props$controlProps10, _props$componentOverr5, _props$controlProps11, _props$componentOverr6, _props$controlProps12, _props$componentOverr7, _props$controlProps13, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$controlProps16, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
49
+ var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps14, _props$controlProps15, _props$componentOverr, _props$controlProps16, _props$componentOverr2, _props$controlProps17, _props$componentOverr3, _props$controlProps18, _props$componentOverr4, _props$controlProps19, _props$componentOverr5, _props$controlProps20, _props$componentOverr6, _props$controlProps21, _props$componentOverr7, _props$controlProps22, _props$controlProps23, _props$componentOverr8, _props$controlProps24, _props$componentOverr9, _props$controlProps25, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
48
50
 
49
51
  const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
52
 
@@ -64,25 +66,21 @@ export const LiveChatWidgetStateful = props => {
64
66
  const generalStyles = {
65
67
  root: Object.assign({}, getGeneralStylesForButton(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
66
68
  };
69
+ const broadcastServiceChannelName = getBroadcastChannelName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.widgetId, ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
70
+ BroadcastServiceInitialize(broadcastServiceChannelName);
67
71
  TelemetryTimers.LcwLoadToChatButtonTimer = createTimer();
68
- const widgetElementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) || "oc-lcw";
72
+ const widgetElementId = ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.id) || "oc-lcw";
69
73
  const currentMessageCountRef = useRef(0);
70
74
  let widgetStateEventName = "";
71
75
 
72
76
  const initiateEndChatOnBrowserUnload = () => {
73
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _DataStoreManager$cli;
77
+ var _DataStoreManager$cli;
74
78
 
75
79
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
76
80
  Event: TelemetryEvent.BrowserUnloadEventStarted,
77
81
  Description: "Browser unload event received."
78
82
  });
79
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId); // End chat if the chat is still active and browser closed
80
-
81
- if (persistedState.appStates.conversationState === ConversationState.Active) {
82
- //Browser close scenario/no room for PCS/so just end chat and notify agent immidiately
83
- endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
84
- } // Clean local storage
85
-
83
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false); // Clean local storage
86
84
 
87
85
  (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage"); //Dispose calling instance
88
86
 
@@ -97,7 +95,7 @@ export const LiveChatWidgetStateful = props => {
97
95
  };
98
96
 
99
97
  useEffect(() => {
100
- var _props$controlProps2, _props$controlProps3, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps4, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li;
98
+ var _props$controlProps3, _props$controlProps4, _props$controlProps5, _props$controlProps7, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps8, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li, _props$reconnectChatP4, _state$domainStates;
101
99
 
102
100
  registerTelemetryLoggers(props, dispatch);
103
101
  createInternetConnectionChangeHandler();
@@ -108,12 +106,22 @@ export const LiveChatWidgetStateful = props => {
108
106
  });
109
107
  dispatch({
110
108
  type: LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
111
- payload: ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.skipChatButtonRendering) || false
109
+ payload: ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.skipChatButtonRendering) || false
112
110
  });
113
111
  dispatch({
114
112
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
115
113
  payload: false
116
114
  });
115
+
116
+ if ((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.widgetInstanceId && !isNullOrEmptyString((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.widgetInstanceId)) {
117
+ var _props$controlProps6;
118
+
119
+ dispatch({
120
+ type: LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
121
+ payload: (_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId
122
+ });
123
+ }
124
+
117
125
  initCallingSdk(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
118
126
  sdkCreated && dispatch({
119
127
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
@@ -121,35 +129,48 @@ export const LiveChatWidgetStateful = props => {
121
129
  });
122
130
  }); // Initialize global dir
123
131
 
124
- const globalDir = ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
132
+ const globalDir = ((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
125
133
  dispatch({
126
134
  type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
127
135
  payload: globalDir
128
136
  });
129
137
 
130
- if (!((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
131
- var _props$reconnectChatP2;
138
+ if (!((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
139
+ var _props$reconnectChatP2, _props$reconnectChatP3;
132
140
 
133
- startUnauthenticatedReconnectChat(chatSDK, props.authProps, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, initStartChat);
141
+ startUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, initStartChat);
134
142
  return;
135
- } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
143
+ } // Checks if reconnectId is present for auth chat. If it is present, then it shows reconnect chat pane,
144
+ // where customer can choose to continue previous conversation or start new conversation
136
145
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
146
 
138
147
 
139
148
  const isAuthenticationSettingsEnabled = (_props$chatConfig2 = props.chatConfig) !== null && _props$chatConfig2 !== void 0 && (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) !== null && _props$chatConfig2$Li !== void 0 && _props$chatConfig2$Li.msdyn_javascriptclientfunction ? true : false;
140
149
 
141
- if (!isAuthenticationSettingsEnabled) {
142
- var _state$domainStates;
150
+ if (!state.appStates.skipChatButtonRendering && state.appStates.conversationState === ConversationState.Active && isAuthenticationSettingsEnabled === true && (_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.isReconnectEnabled) {
151
+ getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
152
+ if (authReconnectId && !state.appStates.reconnectId) {
153
+ dispatch({
154
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
155
+ payload: authReconnectId
156
+ });
157
+ dispatch({
158
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
159
+ payload: ConversationState.ReconnectChat
160
+ });
161
+ }
162
+ });
163
+ return;
164
+ }
143
165
 
144
- if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
145
- var _state$domainStates2;
166
+ if (!state.appStates.skipChatButtonRendering && !isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
167
+ var _state$domainStates2;
146
168
 
147
- const optionalParams = {
148
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
149
- };
150
- initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams);
151
- return;
152
- }
169
+ const optionalParams = {
170
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
171
+ };
172
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
173
+ return;
153
174
  } // All other case should show start chat button, skipChatButtonRendering will take care of it own
154
175
 
155
176
 
@@ -161,16 +182,16 @@ export const LiveChatWidgetStateful = props => {
161
182
 
162
183
  useEffect(() => {
163
184
  if (state.appStates.skipChatButtonRendering) {
164
- var _props$reconnectChatP3;
185
+ var _props$reconnectChatP5;
165
186
 
166
187
  BroadcastService.postMessage({
167
188
  eventName: BroadcastEvent.ChatInitiated
168
189
  });
169
190
 
170
- if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
171
- var _props$reconnectChatP4, _props$reconnectChatP5;
191
+ if ((_props$reconnectChatP5 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP5 !== void 0 && _props$reconnectChatP5.reconnectId && !state.appStates.reconnectId) {
192
+ var _props$reconnectChatP6, _props$reconnectChatP7, _props$reconnectChatP8;
172
193
 
173
- handleUnauthenticatedReconnectChat(chatSDK, props.authProps, dispatch, setAdapter, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, initStartChat, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.redirectInSameWindow);
194
+ handleUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP6 = props.reconnectChatPaneProps) === null || _props$reconnectChatP6 === void 0 ? void 0 : _props$reconnectChatP6.isReconnectEnabled, (_props$reconnectChatP7 = props.reconnectChatPaneProps) === null || _props$reconnectChatP7 === void 0 ? void 0 : _props$reconnectChatP7.reconnectId, initStartChat, (_props$reconnectChatP8 = props.reconnectChatPaneProps) === null || _props$reconnectChatP8 === void 0 ? void 0 : _props$reconnectChatP8.redirectInSameWindow);
174
195
  } else {
175
196
  getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
176
197
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -187,7 +208,7 @@ export const LiveChatWidgetStateful = props => {
187
208
  eventName: BroadcastEvent.StartChatSkippingChatButtonRendering
188
209
  };
189
210
  BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
190
- setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter);
211
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
191
212
  }
192
213
  });
193
214
  }
@@ -195,7 +216,7 @@ export const LiveChatWidgetStateful = props => {
195
216
  }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
196
217
 
197
218
  useEffect(() => {
198
- var _chatSDK$omnichannelC7, _chatSDK$omnichannelC8;
219
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
199
220
 
200
221
  // Add the custom context on receiving the SetCustomContext event
201
222
  BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
@@ -214,7 +235,7 @@ export const LiveChatWidgetStateful = props => {
214
235
  Description: "Start proactive chat event received."
215
236
  });
216
237
 
217
- if (canStartProactiveChat.current) {
238
+ if (canStartProactiveChat.current === true) {
218
239
  var _msg$payload, _msg$payload2, _msg$payload3;
219
240
 
220
241
  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);
@@ -227,24 +248,36 @@ export const LiveChatWidgetStateful = props => {
227
248
  }); // Start chat from SDK Event
228
249
 
229
250
  BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
230
- var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4;
251
+ var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps9;
231
252
 
232
253
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
233
254
  Event: TelemetryEvent.StartChatEventRecevied,
234
255
  Description: "Start chat event received."
235
256
  });
236
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId);
257
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps9 = props.controlProps) === null || _props$controlProps9 === void 0 ? void 0 : _props$controlProps9.widgetInstanceId) ?? ""); // Chat not found in cache
237
258
 
238
- if (persistedState && (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat)) {
239
- // Embedded mode
259
+ if (persistedState === undefined) {
240
260
  BroadcastService.postMessage({
241
261
  eventName: BroadcastEvent.ChatInitiated
242
262
  });
243
263
  prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
244
- } else {
264
+ return;
265
+ } // Chat exist in cache
266
+
267
+
268
+ if (persistedState) {
245
269
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4;
246
270
 
247
- // Minimize to Maximize
271
+ // Only initiate new chat if widget state in cache in one of the followings
272
+ if (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat) {
273
+ BroadcastService.postMessage({
274
+ eventName: BroadcastEvent.ChatInitiated
275
+ });
276
+ prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
277
+ return;
278
+ } // If minimized, maximize the chat
279
+
280
+
248
281
  dispatch({
249
282
  type: LiveChatWidgetActionType.SET_MINIMIZED,
250
283
  payload: false
@@ -261,10 +294,10 @@ export const LiveChatWidgetStateful = props => {
261
294
 
262
295
  BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
263
296
  if (state.appStates.skipChatButtonRendering !== true) {
264
- var _chatSDK$omnichannelC5, _chatSDK$omnichannelC6;
297
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
265
298
 
266
299
  // This is to ensure to get latest state from cache in multitab
267
- const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.widgetId);
300
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? "");
268
301
 
269
302
  if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
270
303
  prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
@@ -284,9 +317,10 @@ export const LiveChatWidgetStateful = props => {
284
317
  initiateEndChatOnBrowserUnload();
285
318
  }); // Listen to end chat event from other tabs
286
319
 
287
- const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.widgetId);
320
+ const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, ((_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
288
321
  BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
289
322
  endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
323
+ return;
290
324
  }); // When conversation ended by agent
291
325
 
292
326
  if (state.appStates.conversationEndedByAgent) {
@@ -326,6 +360,12 @@ export const LiveChatWidgetStateful = props => {
326
360
  }, [state.appStates.conversationState, state.appStates.proactiveChatStates.proactiveChatInNewWindow]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
327
361
 
328
362
  useEffect(() => {
363
+ if (state.appStates.isMinimized) {
364
+ ActivityStreamHandler.cork();
365
+ } else {
366
+ setTimeout(() => ActivityStreamHandler.uncork(), 500);
367
+ }
368
+
329
369
  currentMessageCountRef.current = -1;
330
370
  dispatch({
331
371
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
@@ -358,9 +398,24 @@ export const LiveChatWidgetStateful = props => {
358
398
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
359
399
 
360
400
  useEffect(() => {
361
- var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic;
401
+ var _props$controlProps12, _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
402
+
403
+ // Only activate these windows events when conversation state is active and chat widget is in popout mode
404
+ // Ghost chat scenarios
405
+ if (state.appStates.conversationState === ConversationState.Active && ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.skipChatButtonRendering) === true) {
406
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
407
+ window.onbeforeunload = function () {
408
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
409
+ return prompt;
410
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
411
+
412
+
413
+ window.onunload = function () {
414
+ initiateEndChatOnBrowserUnload();
415
+ };
416
+ }
362
417
 
363
- widgetStateEventName = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_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, props === null || props === void 0 ? void 0 : (_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);
418
+ widgetStateEventName = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_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, props === null || props === void 0 ? void 0 : (_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, (props === null || props === void 0 ? void 0 : (_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.widgetInstanceId) ?? "");
364
419
  const chatWidgetStateChangeEvent = {
365
420
  eventName: widgetStateEventName,
366
421
  payload: { ...state
@@ -373,7 +428,7 @@ export const LiveChatWidgetStateful = props => {
373
428
  const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
429
 
375
430
 
376
- const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat); // eslint-disable-next-line @typescript-eslint/no-explicit-any
431
+ const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab); // eslint-disable-next-line @typescript-eslint/no-explicit-any
377
432
 
378
433
 
379
434
  const prepareEndChatRelay = (adapter, state) => prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
@@ -381,7 +436,7 @@ export const LiveChatWidgetStateful = props => {
381
436
  const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
437
 
383
438
 
384
- const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
439
+ const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
385
440
 
386
441
  const confirmationPaneProps = initConfirmationPropsComposer(props);
387
442
  return /*#__PURE__*/React.createElement(Composer, _extends({}, webChatProps, {
@@ -391,28 +446,28 @@ export const LiveChatWidgetStateful = props => {
391
446
  id: widgetElementId,
392
447
  styles: generalStyles,
393
448
  className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
394
- }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideChatButton) && !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.skipChatButtonRendering) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
449
+ }, !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideChatButton) && !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.skipChatButtonRendering) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
395
450
  buttonProps: props.chatButtonProps,
396
451
  outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
397
452
  startChat: prepareStartChatRelay
398
- })), !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
453
+ })), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
399
454
  proactiveChatProps: props.proactiveChatPaneProps,
400
455
  startChat: prepareStartChatRelay
401
- })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
456
+ })), !((_props$controlProps17 = props.controlProps) !== null && _props$controlProps17 !== void 0 && _props$controlProps17.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
402
457
  headerProps: props.headerProps,
403
458
  outOfOfficeHeaderProps: props.outOfOfficeHeaderProps,
404
459
  endChat: endChatRelay
405
- })), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
460
+ })), !((_props$controlProps18 = props.controlProps) !== null && _props$controlProps18 !== void 0 && _props$controlProps18.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps19 = props.controlProps) !== null && _props$controlProps19 !== void 0 && _props$controlProps19.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps20 = props.controlProps) !== null && _props$controlProps20 !== void 0 && _props$controlProps20.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
406
461
  reconnectChatProps: props.reconnectChatPaneProps,
407
462
  initStartChat: initStartChatRelay
408
- })), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
463
+ })), !((_props$controlProps21 = props.controlProps) !== null && _props$controlProps21 !== void 0 && _props$controlProps21.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
409
464
  surveyProps: props.preChatSurveyPaneProps,
410
465
  initStartChat: initStartChatRelay
411
- })), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
466
+ })), !((_props$controlProps22 = props.controlProps) !== null && _props$controlProps22 !== void 0 && _props$controlProps22.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
412
467
  voiceVideoCallingSdk: voiceVideoCallingSDK
413
- }, props.callingContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
468
+ }, props.callingContainerProps)), !((_props$controlProps23 = props.controlProps) !== null && _props$controlProps23 !== void 0 && _props$controlProps23.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps24 = props.controlProps) !== null && _props$controlProps24 !== void 0 && _props$controlProps24.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
414
469
  setPostChatContext: setPostChatContextRelay,
415
470
  prepareEndChat: prepareEndChatRelay
416
- }))), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
471
+ }))), !((_props$controlProps25 = props.controlProps) !== null && _props$controlProps25 !== void 0 && _props$controlProps25.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
417
472
  };
418
473
  export default LiveChatWidgetStateful;
@@ -68,7 +68,7 @@ export const PreChatSurveyPaneStateful = props => {
68
68
  try {
69
69
  var _state$domainStates, _state$domainStates$t, _state$domainStates$t2, _persistedState$domai, _persistedState$appSt;
70
70
 
71
- const persistedState = getStateFromCache(((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : (_state$domainStates$t = _state$domainStates.telemetryInternalData) === null || _state$domainStates$t === void 0 ? void 0 : _state$domainStates$t.orgId) ?? "", ((_state$domainStates$t2 = state.domainStates.telemetryInternalData) === null || _state$domainStates$t2 === void 0 ? void 0 : _state$domainStates$t2.widgetId) ?? "");
71
+ const persistedState = getStateFromCache(((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : (_state$domainStates$t = _state$domainStates.telemetryInternalData) === null || _state$domainStates$t === void 0 ? void 0 : _state$domainStates$t.orgId) ?? "", ((_state$domainStates$t2 = state.domainStates.telemetryInternalData) === null || _state$domainStates$t2 === void 0 ? void 0 : _state$domainStates$t2.widgetId) ?? "", state.domainStates.widgetInstanceId ?? "");
72
72
  let optionalParams = {}; //Connect to Active chats and chat is not popout
73
73
 
74
74
  if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : _persistedState$domai.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === ConversationState.Active && !state.appStates.skipChatButtonRendering) {