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