@microsoft/omnichannel-chat-widget 0.1.0-main.8e79cb8 → 0.1.0-main.99b5123

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