@microsoft/omnichannel-chat-widget 0.1.0-main.20562ae → 0.1.0-main.24bd1e6

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 (104) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +48 -6
  3. package/lib/cjs/common/telemetry/TelemetryConstants.js +28 -3
  4. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  5. package/lib/cjs/common/telemetry/TelemetryManager.js +10 -1
  6. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  7. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  8. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  9. package/lib/cjs/common/utils.js +76 -2
  10. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  11. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  12. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  13. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -2
  14. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  15. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +12 -15
  16. package/lib/cjs/components/livechatwidget/common/endChat.js +63 -16
  17. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +24 -3
  18. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  19. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +3 -15
  20. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  21. package/lib/cjs/components/livechatwidget/common/startChat.js +131 -48
  22. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +204 -87
  23. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  24. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  25. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  26. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  27. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  28. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  29. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  30. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  31. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  33. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  34. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +24 -21
  35. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +3 -2
  36. package/lib/cjs/contexts/createReducer.js +16 -0
  37. package/lib/cjs/controller/componentController.js +3 -3
  38. package/lib/cjs/plugins/newMessageEventHandler.js +10 -13
  39. package/lib/esm/common/Constants.js +44 -5
  40. package/lib/esm/common/telemetry/TelemetryConstants.js +28 -3
  41. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  42. package/lib/esm/common/telemetry/TelemetryManager.js +9 -1
  43. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  44. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  45. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  46. package/lib/esm/common/utils.js +55 -1
  47. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  48. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  49. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  50. package/lib/esm/components/footerstateful/FooterStateful.js +1 -2
  51. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  52. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +12 -16
  53. package/lib/esm/components/livechatwidget/common/endChat.js +61 -17
  54. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +22 -5
  55. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  56. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +3 -13
  57. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  58. package/lib/esm/components/livechatwidget/common/startChat.js +131 -51
  59. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +195 -90
  60. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  61. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  62. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  63. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  64. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  65. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  66. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  67. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  68. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  69. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  70. package/lib/esm/contexts/common/ConversationState.js +3 -2
  71. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +24 -21
  72. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +3 -2
  73. package/lib/esm/contexts/createReducer.js +16 -0
  74. package/lib/esm/controller/componentController.js +3 -3
  75. package/lib/esm/plugins/newMessageEventHandler.js +10 -12
  76. package/lib/types/common/Constants.d.ts +24 -2
  77. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  78. package/lib/types/common/telemetry/TelemetryConstants.d.ts +27 -5
  79. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  80. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  81. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  82. package/lib/types/common/utils.d.ts +6 -0
  83. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  84. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  85. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  86. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  87. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  88. package/lib/types/components/livechatwidget/common/startChat.d.ts +2 -1
  89. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  90. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -1
  91. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  92. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  93. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  94. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  95. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  96. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  97. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  98. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  99. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  100. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  101. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  102. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  103. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +24 -21
  104. package/package.json +6 -7
@@ -1,7 +1,6 @@
1
- import { ChatSDKError, Constants } from "../../../common/Constants";
2
- import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
1
+ import { ChatSDKError } from "../../../common/Constants";
2
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
3
  import { ConversationState } from "../../../contexts/common/ConversationState";
4
- import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
5
4
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
6
5
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
7
6
  import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
@@ -9,20 +8,32 @@ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
9
8
  import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
10
9
  import { createAdapter } from "./createAdapter";
11
10
  import { createOnNewAdapterActivityHandler } from "../../../plugins/newMessageEventHandler";
12
- import { createTimer } from "../../../common/utils";
13
- import { getReconnectIdForAuthenticatedChat } from "./reconnectChatHelper";
11
+ import { createTimer, getStateFromCache, isUndefinedOrEmpty } from "../../../common/utils";
12
+ import { getReconnectIdForAuthenticatedChat, handleRedirectUnauthenticatedReconnectChat } from "./reconnectChatHelper";
14
13
  import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
15
- import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
15
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+
17
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
18
 
17
19
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
20
+ var _props$reconnectChatP;
21
+
22
+ optionalParams = {}; //Resetting to ensure no stale values
23
+ // Can connect to existing chat session
24
+
18
25
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
19
26
  return;
20
- } // Getting PreChat Survey Context
27
+ } // Redirecting if unauthenticated reconnect chat expired
21
28
 
22
29
 
23
- const parseToJson = false;
24
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
25
- const showPrechat = state.appStates.conversationState === ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
30
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
31
+ var _props$reconnectChatP2, _props$reconnectChatP3;
32
+
33
+ await 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);
34
+ return;
35
+ } // Getting reconnectId for authenticated chat
36
+
26
37
 
27
38
  const reconnectId = await getReconnectIdForAuthenticatedChat(props, chatSDK);
28
39
 
@@ -35,7 +46,26 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
35
46
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
36
47
  payload: ConversationState.ReconnectChat
37
48
  });
38
- } else if (showPrechat) {
49
+ return;
50
+ } // Set custom context params
51
+
52
+
53
+ setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
54
+
55
+ const isProactiveChat = state.appStates.conversationState === ConversationState.ProactiveChat;
56
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
57
+
58
+ setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
59
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+
61
+
62
+ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
63
+ // Getting prechat Survey Context
64
+ const parseToJson = false;
65
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
66
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
67
+
68
+ if (showPrechat) {
39
69
  dispatch({
40
70
  type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
41
71
  payload: preChatSurveyResponse
@@ -44,13 +74,15 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
44
74
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
45
75
  payload: ConversationState.Prechat
46
76
  });
47
- } else {
48
- dispatch({
49
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
- payload: ConversationState.Loading
51
- });
52
- await initStartChat(chatSDK, dispatch, setAdapter);
53
- }
77
+ return;
78
+ } //Initiate start chat
79
+
80
+
81
+ dispatch({
82
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
83
+ payload: ConversationState.Loading
84
+ });
85
+ await initStartChat(chatSDK, dispatch, setAdapter);
54
86
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
87
 
56
88
 
@@ -58,12 +90,30 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
58
90
  try {
59
91
  var _newAdapter$activity$, _TelemetryTimers$Widg;
60
92
 
93
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
94
+
95
+ if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
96
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
97
+
98
+ BroadcastService.postMessage({
99
+ eventName: BroadcastEvent.ChatRetrievedFromCache,
100
+ payload: {
101
+ chatId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : (_persistedState$domai2 = _persistedState$domai.liveChatContext) === null || _persistedState$domai2 === void 0 ? void 0 : (_persistedState$domai3 = _persistedState$domai2.chatToken) === null || _persistedState$domai3 === void 0 ? void 0 : _persistedState$domai3.chatId,
102
+ requestId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai4 = persistedState.domainStates) === null || _persistedState$domai4 === void 0 ? void 0 : (_persistedState$domai5 = _persistedState$domai4.liveChatContext) === null || _persistedState$domai5 === void 0 ? void 0 : _persistedState$domai5.requestId
103
+ }
104
+ });
105
+ }
106
+
61
107
  try {
108
+ //Start widget load timer
62
109
  TelemetryTimers.WidgetLoadTimer = createTimer();
63
110
  TelemetryHelper.logSDKEvent(LogLevel.INFO, {
64
111
  Event: TelemetryEvent.StartChatSDKCall
65
- });
66
- await chatSDK.startChat(params);
112
+ }); // Set optional params
113
+
114
+ optionalParams = Object.assign({}, params, optionalParams);
115
+ await chatSDK.startChat(optionalParams);
116
+ isStartChatSuccessful = true;
67
117
  } catch (error) {
68
118
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
69
119
  Event: TelemetryEvent.StartChatMethodException,
@@ -71,43 +121,51 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
71
121
  exception: `Failed to setup startChat: ${error}`
72
122
  }
73
123
  });
74
- }
124
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
125
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
126
+
127
+ dispatch({
128
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
129
+ payload: ConversationState.Closed
130
+ });
131
+ return;
132
+ } // New adapter creation
133
+
75
134
 
76
135
  const newAdapter = await createAdapter(chatSDK);
77
136
  setAdapter(newAdapter);
78
137
  const chatToken = await chatSDK.getChatToken();
138
+ dispatch({
139
+ type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
140
+ payload: chatToken
141
+ });
79
142
  newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe(createOnNewAdapterActivityHandler(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
80
143
 
81
- if (!persistedState) {
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
86
- dispatch({
87
- type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
88
- payload: chatToken
89
- });
90
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
-
92
-
93
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
144
+ if (persistedState) {
94
145
  dispatch({
95
- type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
96
- payload: liveChatContext
146
+ type: LiveChatWidgetActionType.SET_WIDGET_STATE,
147
+ payload: persistedState
97
148
  });
98
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch);
99
- await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
149
+ await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
150
+ return;
151
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
+
153
+
154
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
155
+ dispatch({
156
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
157
+ payload: liveChatContext
158
+ }); // Set post chat context in state, no survey load
159
+
160
+ await setPostChatContextAndLoadSurvey(chatSDK, dispatch); // Updating chat session detail for telemetry
100
161
 
162
+ await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
163
+
164
+ if (isStartChatSuccessful) {
101
165
  dispatch({
102
166
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
103
167
  payload: ConversationState.Active
104
168
  });
105
- } else {
106
- dispatch({
107
- type: LiveChatWidgetActionType.SET_WIDGET_STATE,
108
- payload: persistedState
109
- });
110
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
111
169
  }
112
170
 
113
171
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
@@ -134,31 +192,53 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
134
192
  payload: ConversationState.OutOfOffice
135
193
  });
136
194
  }
195
+ } finally {
196
+ optionalParams = {};
137
197
  }
138
198
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
139
199
 
140
200
 
141
201
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
142
- var _DataStoreManager$cli, _persistedState$domai;
202
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
203
+
204
+ // By pass this function in case of popout chat
205
+ if (state.appStates.skipChatButtonRendering === true) {
206
+ return false;
207
+ }
143
208
 
144
- const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(Constants.widgetStateDataKey, "localStorage");
145
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
209
+ 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
146
210
 
147
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
148
- var _persistedState$domai2;
211
+ 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) {
212
+ var _persistedState$domai7;
149
213
 
150
214
  dispatch({
151
215
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
152
216
  payload: ConversationState.Loading
153
217
  });
154
218
  const optionalParams = {
155
- liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
219
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
156
220
  };
157
221
  await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
158
222
  return true;
159
223
  } else {
160
224
  return false;
161
225
  }
226
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
227
+
228
+
229
+ const setCustomContextParams = (props, chatSDK) => {
230
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
231
+
232
+ // Add custom context only for unauthenticated chat
233
+ 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);
234
+
235
+ 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)) {
236
+ var _persistedState$domai9;
237
+
238
+ optionalParams = Object.assign({}, optionalParams, {
239
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
240
+ });
241
+ }
162
242
  };
163
243
 
164
- export { prepareStartChat, initStartChat };
244
+ export { prepareStartChat, initStartChat, setPreChatAndInitiateChat };