@microsoft/omnichannel-chat-widget 0.1.0-main.a7e4e7d → 0.1.0-main.b511ad6

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 (110) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +14 -0
  3. package/lib/cjs/common/telemetry/TelemetryConstants.js +20 -2
  4. package/lib/cjs/common/utils.js +49 -3
  5. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +19 -3
  6. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  7. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +10 -1
  8. package/lib/cjs/components/headerstateful/HeaderStateful.js +2 -2
  9. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  10. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  11. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  12. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  13. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  14. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  15. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  16. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +31 -30
  17. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -3
  18. package/lib/cjs/components/livechatwidget/common/endChat.js +52 -20
  19. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +16 -3
  20. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +23 -15
  21. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  22. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  23. package/lib/cjs/components/livechatwidget/common/startChat.js +152 -81
  24. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +180 -89
  25. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +4 -8
  26. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  27. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  28. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  29. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  30. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  31. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  33. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  34. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  35. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  36. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +2 -0
  37. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -2
  38. package/lib/cjs/contexts/createReducer.js +8 -0
  39. package/lib/cjs/controller/componentController.js +3 -3
  40. package/lib/esm/common/Constants.js +14 -0
  41. package/lib/esm/common/telemetry/TelemetryConstants.js +20 -2
  42. package/lib/esm/common/utils.js +37 -1
  43. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +21 -6
  44. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  45. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +8 -2
  46. package/lib/esm/components/headerstateful/HeaderStateful.js +2 -2
  47. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  48. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  49. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  50. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  51. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  52. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  53. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  54. package/lib/esm/components/livechatwidget/common/createMarkdown.js +31 -30
  55. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -3
  56. package/lib/esm/components/livechatwidget/common/endChat.js +53 -20
  57. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +15 -5
  58. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +23 -15
  59. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  60. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  61. package/lib/esm/components/livechatwidget/common/startChat.js +147 -80
  62. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +175 -91
  63. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -8
  64. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  65. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  66. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  67. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  68. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  69. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  70. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  71. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  72. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  73. package/lib/esm/contexts/common/ConversationState.js +3 -2
  74. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +2 -0
  75. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -2
  76. package/lib/esm/contexts/createReducer.js +8 -0
  77. package/lib/esm/controller/componentController.js +3 -3
  78. package/lib/types/common/Constants.d.ts +7 -0
  79. package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
  80. package/lib/types/common/telemetry/TelemetryConstants.d.ts +20 -3
  81. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -1
  82. package/lib/types/common/utils.d.ts +4 -1
  83. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  84. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  85. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  86. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  87. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  88. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  89. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  90. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  91. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -4
  92. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  93. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  94. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  95. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  96. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -0
  97. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  98. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  99. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  100. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  101. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  102. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  103. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  104. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  105. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  106. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  107. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  108. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -1
  109. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +3 -1
  110. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.prepareStartChat = exports.initStartChat = void 0;
6
+ exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = void 0;
7
7
 
8
8
  var _Constants = require("../../../common/Constants");
9
9
 
@@ -11,8 +11,6 @@ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants"
11
11
 
12
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
13
 
14
- var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
-
16
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
15
 
18
16
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
@@ -37,12 +35,17 @@ var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
37
35
 
38
36
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
39
37
 
38
+ var _ActivityStreamHandler = require("./ActivityStreamHandler");
39
+
40
40
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
41
  let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
42
 
43
43
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
44
44
  var _props$reconnectChatP;
45
45
 
46
+ optionalParams = {}; //Resetting to ensure no stale values
47
+ // Can connect to existing chat session
48
+
46
49
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
47
50
  return;
48
51
  } // Redirecting if unauthenticated reconnect chat expired
@@ -51,58 +54,105 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
51
54
  if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
52
55
  var _props$reconnectChatP2, _props$reconnectChatP3;
53
56
 
54
- 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);
55
- } else {
56
- // Getting PreChat Survey Context
57
- const parseToJson = false;
58
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
59
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
57
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, 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);
58
+ return;
59
+ } // Getting reconnectId for authenticated chat
60
60
 
61
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
62
61
 
63
- if (reconnectId) {
64
- dispatch({
65
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
66
- payload: reconnectId
67
- });
68
- dispatch({
69
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
70
- payload: _ConversationState.ConversationState.ReconnectChat
71
- });
72
- } else if (showPrechat) {
73
- dispatch({
74
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
75
- payload: preChatSurveyResponse
76
- });
77
- dispatch({
78
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
79
- payload: _ConversationState.ConversationState.Prechat
62
+ const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
63
+
64
+ if (reconnectId) {
65
+ dispatch({
66
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
67
+ payload: reconnectId
68
+ });
69
+ dispatch({
70
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
71
+ payload: _ConversationState.ConversationState.ReconnectChat
72
+ });
73
+ return;
74
+ } // Set custom context params
75
+
76
+
77
+ setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
78
+
79
+ const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
80
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
81
+
82
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
83
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
+
85
+
86
+ exports.prepareStartChat = prepareStartChat;
87
+
88
+ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
89
+ // Getting prechat Survey Context
90
+ const parseToJson = false;
91
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
92
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
93
+
94
+ if (showPrechat) {
95
+ dispatch({
96
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
97
+ payload: preChatSurveyResponse
98
+ });
99
+ dispatch({
100
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
101
+ payload: _ConversationState.ConversationState.Prechat
102
+ });
103
+ return;
104
+ } //Initiate start chat
105
+
106
+
107
+ dispatch({
108
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
109
+ payload: _ConversationState.ConversationState.Loading
110
+ });
111
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
112
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
+
114
+
115
+ exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
116
+
117
+ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
118
+ if (getAuthToken) {
119
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
120
+ Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled
121
+ });
122
+
123
+ let authClientFunction = undefined;
124
+
125
+ if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
126
+ var _chatConfig$LiveChatC;
127
+
128
+ authClientFunction = (chatConfig === null || chatConfig === void 0 ? void 0 : (_chatConfig$LiveChatC = chatConfig.LiveChatConfigAuthSettings) === null || _chatConfig$LiveChatC === void 0 ? void 0 : _chatConfig$LiveChatC.msdyn_javascriptclientfunction) ?? undefined;
129
+ }
130
+
131
+ const token = await getAuthToken(authClientFunction);
132
+
133
+ if (!(0, _utils.isNullOrEmptyString)(token)) {
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
+ chatSDK.setAuthTokenProvider(async () => {
136
+ return token;
80
137
  });
81
- setCustomContextParams(props, state);
82
138
  } else {
83
- dispatch({
84
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
85
- payload: _ConversationState.ConversationState.Loading
139
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
140
+ Event: _TelemetryConstants.TelemetryEvent.ReceivedNullOrEmptyToken
86
141
  });
87
- setCustomContextParams(props, state);
88
- await initStartChat(chatSDK, dispatch, setAdapter);
89
142
  }
90
143
  }
91
144
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
145
 
93
146
 
94
- exports.prepareStartChat = prepareStartChat;
95
-
96
- const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
147
+ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
97
148
  try {
98
149
  var _newAdapter$activity$, _TelemetryTimers$Widg;
99
150
 
100
- let isStartChatSuccessful = false;
151
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
101
152
 
102
153
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
103
154
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
104
155
 
105
- // Broadcasting limited cached chat details
106
156
  _omnichannelChatComponents.BroadcastService.postMessage({
107
157
  eventName: _TelemetryConstants.BroadcastEvent.ChatRetrievedFromCache,
108
158
  payload: {
@@ -113,13 +163,17 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
113
163
  }
114
164
 
115
165
  try {
166
+ //Start widget load timer
116
167
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
117
168
 
118
169
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
119
170
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
120
- });
171
+ }); // Set optional params
172
+
121
173
 
122
- optionalParams = Object.assign({}, params, optionalParams);
174
+ optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
175
+
176
+ await handleAuthentication(chatSDK, chatConfig, getAuthToken);
123
177
  await chatSDK.startChat(optionalParams);
124
178
  isStartChatSuccessful = true;
125
179
  } catch (error) {
@@ -130,46 +184,53 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
130
184
  }
131
185
  });
132
186
 
133
- isStartChatSuccessful = false;
134
- }
187
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
188
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
189
+
190
+ dispatch({
191
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
192
+ payload: _ConversationState.ConversationState.Closed
193
+ });
194
+ return;
195
+ } // New adapter creation
196
+
135
197
 
136
198
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
137
199
  setAdapter(newAdapter);
138
200
  const chatToken = await chatSDK.getChatToken();
201
+ dispatch({
202
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
203
+ payload: chatToken
204
+ });
139
205
  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));
140
206
 
141
- if (!persistedState) {
142
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
144
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
146
- dispatch({
147
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
148
- payload: chatToken
149
- });
150
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
-
152
-
153
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
154
- dispatch({
155
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
156
- payload: liveChatContext
157
- });
158
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
159
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
160
-
161
- if (isStartChatSuccessful) {
162
- dispatch({
163
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
164
- payload: _ConversationState.ConversationState.Active
165
- });
166
- }
167
- } else {
207
+ if (persistedState) {
168
208
  dispatch({
169
209
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
170
210
  payload: persistedState
171
211
  });
172
212
  await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
213
+ return;
214
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
215
+
216
+
217
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
218
+ dispatch({
219
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
220
+ payload: liveChatContext
221
+ }); // Set post chat context in state, no survey load
222
+
223
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // Updating chat session detail for telemetry
224
+
225
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
226
+
227
+ if (isStartChatSuccessful) {
228
+ _ActivityStreamHandler.ActivityStreamHandler.uncork();
229
+
230
+ dispatch({
231
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
232
+ payload: _ConversationState.ConversationState.Active
233
+ });
173
234
  }
174
235
 
175
236
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -198,6 +259,8 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
198
259
  payload: _ConversationState.ConversationState.OutOfOffice
199
260
  });
200
261
  }
262
+ } finally {
263
+ optionalParams = {};
201
264
  }
202
265
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
266
 
@@ -205,13 +268,16 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
205
268
  exports.initStartChat = initStartChat;
206
269
 
207
270
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
208
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _DataStoreManager$cli, _persistedState$domai6;
271
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
209
272
 
210
- const widgetStateEventName = (0, _utils.getWidgetCacheId)((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) ?? "");
211
- const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(widgetStateEventName, "localStorage");
212
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
273
+ // By pass this function in case of popout chat
274
+ if (state.appStates.skipChatButtonRendering === true) {
275
+ return false;
276
+ }
213
277
 
214
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai6 = persistedState.domainStates) !== null && _persistedState$domai6 !== void 0 && _persistedState$domai6.liveChatContext) {
278
+ const persistedState = (0, _utils.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
279
+
280
+ if (persistedState && !(0, _utils.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.ConversationState.Active) {
215
281
  var _persistedState$domai7;
216
282
 
217
283
  dispatch({
@@ -221,20 +287,25 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
221
287
  const optionalParams = {
222
288
  liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
223
289
  };
224
- await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
290
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
225
291
  return true;
226
292
  } else {
227
293
  return false;
228
294
  }
229
- };
295
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
296
+
297
+
298
+ const setCustomContextParams = (props, chatSDK) => {
299
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
300
+
301
+ // Add custom context only for unauthenticated chat
302
+ const persistedState = (0, _utils.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);
230
303
 
231
- const setCustomContextParams = (props, state) => {
232
- var _props$chatConfig, _state$domainStates;
304
+ if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
305
+ var _persistedState$domai9;
233
306
 
234
- // Add custom context if any only for unauthenticated chat
235
- if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && (_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.customContext) {
236
307
  optionalParams = Object.assign({}, optionalParams, {
237
- customContext: state.domainStates.customContext
308
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
238
309
  });
239
310
  }
240
311
  };