@microsoft/omnichannel-chat-widget 0.1.0-main.bf74329 → 0.1.0-main.c1bbb91
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/assets/Icons.js +4 -2
- package/lib/cjs/common/Constants.js +24 -4
- package/lib/cjs/common/KeyCodes.js +3 -1
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -1
- package/lib/cjs/common/storage/default/defaultCacheManager.js +5 -3
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +15 -6
- package/lib/cjs/common/telemetry/TelemetryConstants.js +12 -5
- package/lib/cjs/common/telemetry/TelemetryHelper.js +7 -2
- package/lib/cjs/common/telemetry/TelemetryManager.js +3 -1
- package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +2 -2
- package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
- package/lib/cjs/components/headerstateful/HeaderStateful.js +6 -4
- package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
- package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +3 -1
- package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -1
- package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +67 -16
- package/lib/cjs/components/livechatwidget/common/endChat.js +42 -2
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +13 -19
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +75 -114
- package/lib/cjs/components/livechatwidget/common/startChat.js +162 -45
- package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +152 -116
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
- package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +2 -2
- package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
- package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +4 -0
- package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +12 -1
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +29 -27
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +6 -3
- package/lib/cjs/contexts/createReducer.js +19 -2
- package/lib/cjs/controller/componentController.js +1 -1
- package/lib/cjs/hooks/useDebounce.js +28 -0
- package/lib/cjs/hooks/useWindowDimensions.js +30 -0
- package/lib/cjs/plugins/newMessageEventHandler.js +4 -0
- package/lib/esm/assets/Icons.js +2 -1
- package/lib/esm/common/Constants.js +21 -3
- package/lib/esm/common/KeyCodes.js +3 -1
- package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -1
- package/lib/esm/common/storage/default/defaultCacheManager.js +5 -3
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +15 -6
- package/lib/esm/common/telemetry/TelemetryConstants.js +12 -5
- package/lib/esm/common/telemetry/TelemetryHelper.js +7 -2
- package/lib/esm/common/telemetry/TelemetryManager.js +3 -1
- package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +2 -2
- package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
- package/lib/esm/components/headerstateful/HeaderStateful.js +6 -4
- package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
- package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +3 -1
- package/lib/esm/components/livechatwidget/common/Deferred.js +3 -1
- package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +67 -16
- package/lib/esm/components/livechatwidget/common/endChat.js +42 -2
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +13 -19
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +72 -109
- package/lib/esm/components/livechatwidget/common/startChat.js +161 -45
- package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +153 -117
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
- package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +2 -2
- package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
- package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +12 -1
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +29 -27
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +6 -3
- package/lib/esm/contexts/createReducer.js +19 -2
- package/lib/esm/controller/componentController.js +1 -1
- package/lib/esm/hooks/useDebounce.js +22 -0
- package/lib/esm/hooks/useWindowDimensions.js +23 -0
- package/lib/esm/plugins/newMessageEventHandler.js +4 -0
- package/lib/types/assets/Icons.d.ts +1 -0
- package/lib/types/common/Constants.d.ts +14 -0
- package/lib/types/common/storage/default/defaultCacheManager.d.ts +1 -1
- package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +1 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +11 -4
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
- package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
- package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
- package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
- package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +3 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
- package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
- package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +29 -27
- package/lib/types/hooks/useDebounce.d.ts +3 -0
- package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
- package/package.json +3 -3
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = void 0;
|
|
7
|
-
var _Constants = require("../../../common/Constants");
|
|
6
|
+
exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = exports.checkIfConversationStillValid = void 0;
|
|
8
7
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
8
|
+
var _Constants = require("../../../common/Constants");
|
|
9
|
+
var _utils = require("../../../common/utils");
|
|
10
|
+
var _authHelper = require("./authHelper");
|
|
11
|
+
var _ActivityStreamHandler = require("./ActivityStreamHandler");
|
|
12
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
13
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
10
14
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
11
15
|
var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
|
|
@@ -14,13 +18,9 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
|
14
18
|
var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
|
|
15
19
|
var _createAdapter = require("./createAdapter");
|
|
16
20
|
var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
|
|
17
|
-
var _utils = require("../../../common/utils");
|
|
18
21
|
var _reconnectChatHelper = require("./reconnectChatHelper");
|
|
19
22
|
var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
|
|
20
23
|
var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
|
|
21
|
-
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
22
|
-
var _ActivityStreamHandler = require("./ActivityStreamHandler");
|
|
23
|
-
var _authHelper = require("./authHelper");
|
|
24
24
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
25
|
let optionalParams = {};
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -28,7 +28,7 @@ let widgetInstanceId;
|
|
|
28
28
|
|
|
29
29
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
30
|
const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
|
|
31
|
-
var _props$controlProps
|
|
31
|
+
var _props$controlProps;
|
|
32
32
|
optionalParams = {}; //Resetting to ensure no stale values
|
|
33
33
|
widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId;
|
|
34
34
|
|
|
@@ -36,25 +36,10 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
|
|
|
36
36
|
if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
+
await (0, _reconnectChatHelper.handleChatReconnect)(chatSDK, props, dispatch, setAdapter, initStartChat, state);
|
|
39
40
|
|
|
40
|
-
//
|
|
41
|
-
if (
|
|
42
|
-
var _props$reconnectChatP2, _props$reconnectChatP3, _props$reconnectChatP4;
|
|
43
|
-
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);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Getting reconnectId for authenticated chat
|
|
48
|
-
const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
|
|
49
|
-
if (reconnectId) {
|
|
50
|
-
dispatch({
|
|
51
|
-
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
52
|
-
payload: reconnectId
|
|
53
|
-
});
|
|
54
|
-
dispatch({
|
|
55
|
-
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
56
|
-
payload: _ConversationState.ConversationState.ReconnectChat
|
|
57
|
-
});
|
|
41
|
+
// If chat reconnect has kicked in chat state will become Active or Reconnect. So just exit, else go next
|
|
42
|
+
if (state.appStates.conversationState === _ConversationState.ConversationState.Active || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat) {
|
|
58
43
|
return;
|
|
59
44
|
}
|
|
60
45
|
|
|
@@ -63,12 +48,21 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
|
|
|
63
48
|
const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
|
|
64
49
|
|
|
65
50
|
//Setting PreChat and intiate chat
|
|
66
|
-
setPreChatAndInitiateChat(chatSDK,
|
|
51
|
+
setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, undefined, props);
|
|
67
52
|
};
|
|
68
53
|
|
|
69
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
55
|
exports.prepareStartChat = prepareStartChat;
|
|
71
|
-
const setPreChatAndInitiateChat = async (chatSDK,
|
|
56
|
+
const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState, state, props) => {
|
|
57
|
+
//Handle reconnect scenario
|
|
58
|
+
if (state) {
|
|
59
|
+
await (0, _reconnectChatHelper.handleChatReconnect)(chatSDK, props, dispatch, setAdapter, initStartChat, state);
|
|
60
|
+
// If chat reconnect has kicked in chat state will become Active or Reconnect. So just exit, else go next
|
|
61
|
+
if (state.appStates.conversationState === _ConversationState.ConversationState.Active || state.appStates.conversationState === _ConversationState.ConversationState.ReconnectChat) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
72
66
|
// Getting prechat Survey Context
|
|
73
67
|
const parseToJson = false;
|
|
74
68
|
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
@@ -90,14 +84,28 @@ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, disp
|
|
|
90
84
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
91
85
|
payload: _ConversationState.ConversationState.Loading
|
|
92
86
|
});
|
|
93
|
-
|
|
87
|
+
const optionalParams = {
|
|
88
|
+
isProactiveChat
|
|
89
|
+
};
|
|
90
|
+
await initStartChat(chatSDK, dispatch, setAdapter, props, optionalParams);
|
|
94
91
|
};
|
|
95
92
|
|
|
96
93
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
94
|
exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
|
|
98
|
-
const initStartChat = async (chatSDK,
|
|
95
|
+
const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persistedState) => {
|
|
96
|
+
var _props$controlProps2;
|
|
97
|
+
let isStartChatSuccessful = false;
|
|
98
|
+
const chatConfig = props === null || props === void 0 ? void 0 : props.chatConfig;
|
|
99
|
+
const getAuthToken = props === null || props === void 0 ? void 0 : props.getAuthToken;
|
|
100
|
+
const hideErrorUIPane = props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.hideErrorUIPane;
|
|
99
101
|
try {
|
|
100
102
|
var _newAdapter$activity$, _TelemetryTimers$Widg;
|
|
103
|
+
//Start widget load timer
|
|
104
|
+
_TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
|
|
105
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
106
|
+
Event: _TelemetryConstants.TelemetryEvent.WidgetLoadStarted,
|
|
107
|
+
Description: "Widget loading started"
|
|
108
|
+
});
|
|
101
109
|
const authClientFunction = (0, _authHelper.getAuthClientFunction)(chatConfig);
|
|
102
110
|
if (getAuthToken && authClientFunction) {
|
|
103
111
|
// set auth token to chat sdk before start chat
|
|
@@ -106,7 +114,6 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
106
114
|
return;
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
|
-
let isStartChatSuccessful = false;
|
|
110
117
|
|
|
111
118
|
//Check if chat retrieved from cache
|
|
112
119
|
if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
|
|
@@ -120,16 +127,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
120
127
|
});
|
|
121
128
|
}
|
|
122
129
|
try {
|
|
123
|
-
|
|
124
|
-
_TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
|
|
125
|
-
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
126
|
-
Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
|
|
127
|
-
});
|
|
128
|
-
|
|
130
|
+
var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
|
|
129
131
|
// Set custom context params
|
|
130
132
|
setCustomContextParams(chatSDK);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
const defaultOptionalParams = {
|
|
134
|
+
sendDefaultInitContext: true,
|
|
135
|
+
isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
|
|
136
|
+
portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
|
|
137
|
+
};
|
|
138
|
+
const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
|
|
139
|
+
await chatSDK.startChat(startChatOptionalParams);
|
|
133
140
|
isStartChatSuccessful = true;
|
|
134
141
|
} catch (error) {
|
|
135
142
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
@@ -162,7 +169,7 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
162
169
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
|
|
163
170
|
payload: persistedState
|
|
164
171
|
});
|
|
165
|
-
|
|
172
|
+
(0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
|
|
166
173
|
return;
|
|
167
174
|
}
|
|
168
175
|
|
|
@@ -174,7 +181,7 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
174
181
|
});
|
|
175
182
|
|
|
176
183
|
// Set post chat context in state, no survey load
|
|
177
|
-
|
|
184
|
+
(0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
|
|
178
185
|
|
|
179
186
|
// Updating chat session detail for telemetry
|
|
180
187
|
await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch);
|
|
@@ -182,6 +189,11 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
182
189
|
// Set app state to Active
|
|
183
190
|
if (isStartChatSuccessful) {
|
|
184
191
|
_ActivityStreamHandler.ActivityStreamHandler.uncork();
|
|
192
|
+
// Update start chat failure app state if chat loads successfully
|
|
193
|
+
dispatch({
|
|
194
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
|
|
195
|
+
payload: false
|
|
196
|
+
});
|
|
185
197
|
dispatch({
|
|
186
198
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
187
199
|
payload: _ConversationState.ConversationState.Active
|
|
@@ -210,6 +222,29 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
210
222
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
211
223
|
payload: _ConversationState.ConversationState.OutOfOffice
|
|
212
224
|
});
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (!hideErrorUIPane) {
|
|
228
|
+
// Set app state to failing start chat if hideErrorUI is not turned on
|
|
229
|
+
dispatch({
|
|
230
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
|
|
231
|
+
payload: true
|
|
232
|
+
});
|
|
233
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
234
|
+
Event: _TelemetryConstants.TelemetryEvent.ErrorUIPaneLoaded,
|
|
235
|
+
Description: "Error UI Pane Loaded"
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
// Show the loading pane in other cases for failure, this will help for both hideStartChatButton case
|
|
239
|
+
dispatch({
|
|
240
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
241
|
+
payload: _ConversationState.ConversationState.Loading
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// If sessionInit was successful but LCW startchat failed due to some reason e.g adapter didn't load
|
|
245
|
+
// we need to directly endChat to avoid leaving ghost chats in OC, not disturbing any other UI state
|
|
246
|
+
if (isStartChatSuccessful === true) {
|
|
247
|
+
await forceEndChat(chatSDK);
|
|
213
248
|
}
|
|
214
249
|
} finally {
|
|
215
250
|
optionalParams = {};
|
|
@@ -219,13 +254,24 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
219
254
|
|
|
220
255
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
221
256
|
exports.initStartChat = initStartChat;
|
|
257
|
+
const forceEndChat = async chatSDK => {
|
|
258
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
259
|
+
Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
|
|
260
|
+
ExceptionDetails: {
|
|
261
|
+
Exception: "SessionInit was successful, but widget load failed."
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat();
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
222
268
|
const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
|
|
223
|
-
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$
|
|
269
|
+
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps3, _persistedState$domai6, _persistedState$appSt;
|
|
224
270
|
// By pass this function in case of popout chat
|
|
225
|
-
if (state.appStates.
|
|
271
|
+
if (state.appStates.hideStartChatButton === true) {
|
|
226
272
|
return false;
|
|
227
273
|
}
|
|
228
|
-
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$
|
|
274
|
+
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$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.widgetInstanceId) ?? "");
|
|
229
275
|
|
|
230
276
|
//Connect to only active chat session
|
|
231
277
|
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) {
|
|
@@ -237,7 +283,7 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
|
|
|
237
283
|
const optionalParams = {
|
|
238
284
|
liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
|
|
239
285
|
};
|
|
240
|
-
await initStartChat(chatSDK,
|
|
286
|
+
await initStartChat(chatSDK, dispatch, setAdapter, props, optionalParams, persistedState);
|
|
241
287
|
return true;
|
|
242
288
|
} else {
|
|
243
289
|
return false;
|
|
@@ -265,4 +311,75 @@ const setCustomContextParams = chatSDK => {
|
|
|
265
311
|
customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
|
|
266
312
|
});
|
|
267
313
|
}
|
|
268
|
-
};
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
317
|
+
const handleAuthenticationIfEnabled = async (chatSDK, props) => {
|
|
318
|
+
//For auth chat
|
|
319
|
+
if (props.getAuthToken) {
|
|
320
|
+
const authClientFunction = (0, _authHelper.getAuthClientFunction)(props.chatConfig);
|
|
321
|
+
if (authClientFunction) {
|
|
322
|
+
// set auth token to chat sdk before start chat
|
|
323
|
+
const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
|
|
324
|
+
if (!authSuccess) {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return true;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
334
|
+
const checkIfConversationStillValid = async (chatSDK, props, requestId, dispatch) => {
|
|
335
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
336
|
+
let conversationDetails = undefined;
|
|
337
|
+
|
|
338
|
+
// Show Loading screen during auth check and start chat calls
|
|
339
|
+
dispatch({
|
|
340
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
341
|
+
payload: _ConversationState.ConversationState.Loading
|
|
342
|
+
});
|
|
343
|
+
const authSucceed = await handleAuthenticationIfEnabled(chatSDK, props);
|
|
344
|
+
if (!authSucceed) {
|
|
345
|
+
var _props$controlProps4;
|
|
346
|
+
if (!(props !== null && props !== void 0 && (_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.hideErrorUIPane)) {
|
|
347
|
+
// Set app state to failing start chat if hideErrorUI is not turned on
|
|
348
|
+
dispatch({
|
|
349
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_START_CHAT_FAILING,
|
|
350
|
+
payload: true
|
|
351
|
+
});
|
|
352
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
353
|
+
Event: _TelemetryConstants.TelemetryEvent.ErrorUIPaneLoaded,
|
|
354
|
+
Description: "Error UI Pane Loaded"
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
//Preserve old requestId
|
|
361
|
+
const oldRequestId = chatSDK.requestId;
|
|
362
|
+
try {
|
|
363
|
+
chatSDK.requestId = requestId;
|
|
364
|
+
conversationDetails = await chatSDK.getConversationDetails();
|
|
365
|
+
if (Object.keys(conversationDetails).length === 0) {
|
|
366
|
+
chatSDK.requestId = oldRequestId;
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
if (conversationDetails.state === _Constants.LiveWorkItemState.Closed || conversationDetails.state === _Constants.LiveWorkItemState.WrapUp) {
|
|
370
|
+
chatSDK.requestId = oldRequestId;
|
|
371
|
+
return false;
|
|
372
|
+
}
|
|
373
|
+
return true;
|
|
374
|
+
} catch (erorr) {
|
|
375
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
376
|
+
Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsException,
|
|
377
|
+
ExceptionDetails: {
|
|
378
|
+
exception: `Conversation is not valid: ${erorr}`
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
chatSDK.requestId = oldRequestId;
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
exports.checkIfConversationStillValid = checkIfConversationStillValid;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|