@microsoft/omnichannel-chat-widget 0.1.0-main.488d6f1 → 0.1.0-main.63cfb47
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/README.md +3 -11
- package/lib/cjs/common/Constants.js +4 -2
- package/lib/cjs/common/telemetry/TelemetryConstants.js +34 -5
- package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
- package/lib/cjs/common/telemetry/TelemetryManager.js +11 -6
- package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -41
- package/lib/cjs/components/footerstateful/FooterStateful.js +1 -2
- package/lib/cjs/components/headerstateful/HeaderStateful.js +1 -7
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +5 -2
- package/lib/cjs/components/livechatwidget/common/endChat.js +39 -3
- package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +1 -1
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +17 -5
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +7 -6
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
- package/lib/cjs/components/livechatwidget/common/startChat.js +43 -30
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +68 -24
- package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -2
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +44 -0
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +15 -16
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +5 -1
- package/lib/cjs/contexts/createReducer.js +0 -10
- package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
- package/lib/esm/common/Constants.js +4 -2
- package/lib/esm/common/telemetry/TelemetryConstants.js +30 -4
- package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
- package/lib/esm/common/telemetry/TelemetryManager.js +10 -6
- package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -36
- package/lib/esm/components/footerstateful/FooterStateful.js +1 -2
- package/lib/esm/components/headerstateful/HeaderStateful.js +1 -7
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +5 -3
- package/lib/esm/components/livechatwidget/common/endChat.js +40 -6
- package/lib/esm/components/livechatwidget/common/initCallingSdk.js +1 -1
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +13 -4
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -3
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -5
- package/lib/esm/components/livechatwidget/common/startChat.js +43 -31
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +62 -22
- package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +3 -3
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +31 -0
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +15 -16
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +5 -1
- package/lib/esm/contexts/createReducer.js +0 -9
- package/lib/esm/plugins/newMessageEventHandler.js +84 -0
- package/lib/types/common/Constants.d.ts +2 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +21 -3
- package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
- package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -4
- package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
- package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
- package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
- package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +15 -16
- package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
- package/package.json +6 -5
|
@@ -1,35 +1,25 @@
|
|
|
1
1
|
import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import { ConfirmationPane } from "@microsoft/omnichannel-chat-components";
|
|
2
3
|
import React, { useEffect } from "react";
|
|
3
4
|
import { findAllFocusableElement, findParentFocusableElementsWithoutChildContainer, preventFocusToMoveOutOfElement, setFocusOnElement, setFocusOnSendBox, setTabIndices } from "../../common/utils";
|
|
4
|
-
import { BroadcastService, ConfirmationPane } from "@microsoft/omnichannel-chat-components";
|
|
5
5
|
import { DimLayer } from "../dimlayer/DimLayer";
|
|
6
6
|
import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
|
|
7
7
|
import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
|
|
8
8
|
import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
|
|
9
|
-
import { PostChatSurveyMode } from "../postchatsurveypanestateful/enums/PostChatSurveyMode";
|
|
10
9
|
import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
|
|
11
10
|
import useChatAdapterStore from "../../hooks/useChatAdapterStore";
|
|
12
|
-
import useChatContextStore from "../../hooks/useChatContextStore";
|
|
13
|
-
import useChatSDKStore from "../../hooks/useChatSDKStore";
|
|
14
|
-
import { Constants } from "../../common/Constants";
|
|
15
|
-
import { ConversationState } from "../../contexts/common/ConversationState"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
import useChatContextStore from "../../hooks/useChatContextStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
12
|
|
|
17
13
|
export const ConfirmationPaneStateful = props => {
|
|
18
|
-
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
|
|
19
|
-
|
|
20
14
|
const initialTabIndexMap = new Map();
|
|
21
|
-
let elements = [];
|
|
22
|
-
|
|
23
|
-
const chatSDK = useChatSDKStore();
|
|
15
|
+
let elements = [];
|
|
24
16
|
const [state, dispatch] = useChatContextStore();
|
|
25
17
|
const {
|
|
26
|
-
|
|
18
|
+
prepareEndChat
|
|
27
19
|
} = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
20
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
21
|
|
|
30
22
|
const [adapter] = useChatAdapterStore();
|
|
31
|
-
const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
|
|
32
|
-
const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
|
|
33
23
|
const controlProps = {
|
|
34
24
|
id: "oc-lcw-confirmation-pane",
|
|
35
25
|
dir: state.domainStates.globalDir,
|
|
@@ -44,28 +34,8 @@ export const ConfirmationPaneStateful = props => {
|
|
|
44
34
|
});
|
|
45
35
|
|
|
46
36
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (isPostChatEnabled === "true" && conversationDetails.canRenderPostChat === Constants.truePascal) {
|
|
51
|
-
if (postChatSurveyMode === PostChatSurveyMode.Embed) {
|
|
52
|
-
const loadPostChatEvent = {
|
|
53
|
-
eventName: "LoadPostChatSurvey"
|
|
54
|
-
};
|
|
55
|
-
BroadcastService.postMessage(loadPostChatEvent);
|
|
56
|
-
} else if (postChatSurveyMode === PostChatSurveyMode.Link) {
|
|
57
|
-
const skipEndChatSDK = false;
|
|
58
|
-
const skipCloseChat = true;
|
|
59
|
-
await endChat(adapter, skipEndChatSDK, skipCloseChat);
|
|
60
|
-
dispatch({
|
|
61
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
62
|
-
payload: ConversationState.InActive
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
setTabIndices(elements, initialTabIndexMap, true);
|
|
67
|
-
await endChat(adapter);
|
|
68
|
-
}
|
|
37
|
+
setTabIndices(elements, initialTabIndexMap, true);
|
|
38
|
+
await prepareEndChat(adapter, state);
|
|
69
39
|
} catch (ex) {
|
|
70
40
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
71
41
|
Event: TelemetryEvent.GetConversationDetailsCallFailed,
|
|
@@ -97,8 +97,7 @@ export const FooterStateful = props => {
|
|
|
97
97
|
styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
|
|
98
98
|
}), /*#__PURE__*/React.createElement(AudioNotificationStateful, {
|
|
99
99
|
audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? NewMessageNotificationSoundBase64,
|
|
100
|
-
|
|
101
|
-
isAudioMuted: state.appStates.isAudioMuted ?? false
|
|
100
|
+
isAudioMuted: state.appStates.isAudioMuted === null ? (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false : state.appStates.isAudioMuted ?? false
|
|
102
101
|
}));
|
|
103
102
|
};
|
|
104
103
|
export default FooterStateful;
|
|
@@ -46,13 +46,7 @@ export const HeaderStateful = props => {
|
|
|
46
46
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
47
47
|
payload: true
|
|
48
48
|
});
|
|
49
|
-
} else
|
|
50
|
-
dispatch({
|
|
51
|
-
type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
|
|
52
|
-
payload: false
|
|
53
|
-
});
|
|
54
|
-
await endChat(adapter);
|
|
55
|
-
} else if (conversationState.current === ConversationState.InActive) {
|
|
49
|
+
} else {
|
|
56
50
|
const skipEndChatSDK = true;
|
|
57
51
|
const skipCloseChat = false;
|
|
58
52
|
await endChat(adapter, skipEndChatSDK, skipCloseChat);
|
|
@@ -9,7 +9,8 @@ import createAttachmentMiddleware from "../../../webchatcontainerstateful/webcha
|
|
|
9
9
|
import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
|
|
10
10
|
import { createMarkdown } from "../createMarkdown";
|
|
11
11
|
import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
|
|
12
|
-
import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
|
|
12
|
+
import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
|
|
13
|
+
import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger"; // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
14
|
|
|
14
15
|
export const dummyDefaultProps = {
|
|
15
16
|
audioNotificationProps: {
|
|
@@ -1424,7 +1425,8 @@ export const dummyDefaultProps = {
|
|
|
1424
1425
|
},
|
|
1425
1426
|
authClientFunction: undefined,
|
|
1426
1427
|
isReconnectEnabled: undefined,
|
|
1427
|
-
reconnectId: undefined
|
|
1428
|
+
reconnectId: undefined,
|
|
1429
|
+
redirectInSameWindow: undefined
|
|
1428
1430
|
},
|
|
1429
1431
|
styleProps: {
|
|
1430
1432
|
generalStyles: {
|
|
@@ -1496,7 +1498,7 @@ export const dummyDefaultProps = {
|
|
|
1496
1498
|
internalErrorBoxClass: undefined,
|
|
1497
1499
|
internalRenderErrorBox: undefined,
|
|
1498
1500
|
locale: "en-US",
|
|
1499
|
-
onTelemetry:
|
|
1501
|
+
onTelemetry: createWebChatTelemetry(),
|
|
1500
1502
|
overrideLocalizedStrings: undefined,
|
|
1501
1503
|
renderMarkdown: createMarkdown(false, false),
|
|
1502
1504
|
scrollToEndButtonMiddleware: undefined,
|
|
@@ -1,15 +1,47 @@
|
|
|
1
|
-
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
1
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
2
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
3
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
4
4
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
5
5
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
6
6
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
7
|
-
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
7
|
+
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
8
|
+
import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
|
|
9
|
+
import { Constants } from "../../../common/Constants";
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state) => {
|
|
13
|
+
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
|
|
14
|
+
|
|
15
|
+
const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
|
|
16
|
+
const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
|
|
17
|
+
const conversationDetails = await chatSDK.getConversationDetails();
|
|
18
|
+
|
|
19
|
+
if (isPostChatEnabled === "true" && (conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.canRenderPostChat) === Constants.truePascal) {
|
|
20
|
+
const skipEndChatSDK = false;
|
|
21
|
+
const skipCloseChat = true;
|
|
22
|
+
await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
|
|
23
|
+
|
|
24
|
+
if (postChatSurveyMode === PostChatSurveyMode.Embed) {
|
|
25
|
+
const loadPostChatEvent = {
|
|
26
|
+
eventName: BroadcastEvent.LoadPostChatSurvey
|
|
27
|
+
};
|
|
28
|
+
BroadcastService.postMessage(loadPostChatEvent);
|
|
29
|
+
} else if (postChatSurveyMode === PostChatSurveyMode.Link) {
|
|
30
|
+
dispatch({
|
|
31
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
32
|
+
payload: ConversationState.InActive
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
|
|
37
|
+
}
|
|
38
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat) => {
|
|
10
42
|
if (!skipEndChatSDK) {
|
|
11
43
|
try {
|
|
12
|
-
TelemetryHelper.
|
|
44
|
+
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
13
45
|
Event: TelemetryEvent.EndChatSDKCall
|
|
14
46
|
});
|
|
15
47
|
await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
|
|
@@ -58,7 +90,7 @@ export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
|
|
|
58
90
|
payload: undefined
|
|
59
91
|
});
|
|
60
92
|
BroadcastService.postMessage({
|
|
61
|
-
eventName:
|
|
93
|
+
eventName: BroadcastEvent.EndChat
|
|
62
94
|
});
|
|
63
95
|
} catch (error) {
|
|
64
96
|
TelemetryHelper.logActionEvent(LogLevel.ERROR, {
|
|
@@ -69,4 +101,6 @@ export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
|
|
|
69
101
|
});
|
|
70
102
|
}
|
|
71
103
|
}
|
|
72
|
-
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export { prepareEndChat, endChat };
|
|
@@ -8,7 +8,7 @@ export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
|
|
|
8
8
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
9
|
const callingSDK = await chatSDK.getVoiceVideoCalling();
|
|
10
10
|
setVoiceVideoCallingSDK(callingSDK);
|
|
11
|
-
TelemetryHelper.logCallingEvent(LogLevel.
|
|
11
|
+
TelemetryHelper.logCallingEvent(LogLevel.INFO, {
|
|
12
12
|
Event: TelemetryEvent.CallingSDKLoadSuccess
|
|
13
13
|
});
|
|
14
14
|
return true;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
1
2
|
import { createStore } from "botframework-webchat";
|
|
3
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
4
|
+
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
2
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
3
6
|
import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
|
|
7
|
+
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
4
8
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
5
9
|
import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
|
|
6
10
|
import { changeLanguageCodeFormatForWebChat } from "../../../common/utils";
|
|
@@ -13,6 +17,7 @@ import createConversationEndMiddleware from "../../webchatcontainerstateful/webc
|
|
|
13
17
|
import createDataMaskingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware";
|
|
14
18
|
import { createMarkdown } from "./createMarkdown";
|
|
15
19
|
import createMaxMessageSizeValidator from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator";
|
|
20
|
+
import { createWebChatTelemetry } from "../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
16
21
|
import { defaultAttachmentProps } from "../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps";
|
|
17
22
|
import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
18
23
|
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
@@ -21,9 +26,7 @@ import gifUploadMiddleware from "../../webchatcontainerstateful/webchatcontrolle
|
|
|
21
26
|
import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware";
|
|
22
27
|
import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
|
|
23
28
|
import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
|
|
24
|
-
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
|
|
25
|
-
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
26
|
-
import { ConversationState } from "../../../contexts/common/ConversationState"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
30
|
|
|
28
31
|
export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
|
|
29
32
|
var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21;
|
|
@@ -45,6 +48,11 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
|
|
|
45
48
|
const conversationEndCallback = async () => {
|
|
46
49
|
var _props$webChatContain4, _props$webChatContain5;
|
|
47
50
|
|
|
51
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
52
|
+
Event: TelemetryEvent.ConversationEndedThreadEventReceived,
|
|
53
|
+
Description: "Conversation is ended by agent side or by timeout."
|
|
54
|
+
});
|
|
55
|
+
|
|
48
56
|
if ((props === null || props === void 0 ? void 0 : (_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : (_props$webChatContain5 = _props$webChatContain4.renderingMiddlewareProps) === null || _props$webChatContain5 === void 0 ? void 0 : _props$webChatContain5.hideSendboxOnConversationEnd) !== false) {
|
|
49
57
|
setWebChatStyles(styles => {
|
|
50
58
|
return { ...styles,
|
|
@@ -56,7 +64,7 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
|
|
|
56
64
|
if (isPostChatEnabled === "true") {
|
|
57
65
|
if (postChatSurveyMode === PostChatSurveyMode.Embed) {
|
|
58
66
|
const loadPostChatEvent = {
|
|
59
|
-
eventName:
|
|
67
|
+
eventName: BroadcastEvent.LoadPostChatSurvey
|
|
60
68
|
};
|
|
61
69
|
BroadcastService.postMessage(loadPostChatEvent);
|
|
62
70
|
} else if (postChatSurveyMode === PostChatSurveyMode.Link) {
|
|
@@ -96,6 +104,7 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
|
|
|
96
104
|
avatarMiddleware: (_props$webChatContain15 = props.webChatContainerProps) !== null && _props$webChatContain15 !== void 0 && (_props$webChatContain16 = _props$webChatContain15.renderingMiddlewareProps) !== null && _props$webChatContain16 !== void 0 && _props$webChatContain16.disableAvatarMiddleware ? undefined : createAvatarMiddleware((_state$domainStates$r5 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r5 === void 0 ? void 0 : _state$domainStates$r5.avatarStyleProps, (_state$domainStates$r6 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r6 === void 0 ? void 0 : _state$domainStates$r6.avatarTextStyleProps),
|
|
97
105
|
groupActivitiesMiddleware: (_props$webChatContain17 = props.webChatContainerProps) !== null && _props$webChatContain17 !== void 0 && (_props$webChatContain18 = _props$webChatContain17.renderingMiddlewareProps) !== null && _props$webChatContain18 !== void 0 && _props$webChatContain18.disableGroupActivitiesMiddleware ? undefined : (_defaultWebChatContai2 = defaultWebChatContainerStatefulProps.webChatProps) === null || _defaultWebChatContai2 === void 0 ? void 0 : _defaultWebChatContai2.groupActivitiesMiddleware,
|
|
98
106
|
typingIndicatorMiddleware: (_props$webChatContain19 = props.webChatContainerProps) !== null && _props$webChatContain19 !== void 0 && (_props$webChatContain20 = _props$webChatContain19.renderingMiddlewareProps) !== null && _props$webChatContain20 !== void 0 && _props$webChatContain20.disableTypingIndicatorMiddleware ? undefined : (_defaultWebChatContai3 = defaultWebChatContainerStatefulProps.webChatProps) === null || _defaultWebChatContai3 === void 0 ? void 0 : _defaultWebChatContai3.typingIndicatorMiddleware,
|
|
107
|
+
onTelemetry: createWebChatTelemetry(),
|
|
99
108
|
...((_props$webChatContain21 = props.webChatContainerProps) === null || _props$webChatContain21 === void 0 ? void 0 : _props$webChatContain21.webChatProps)
|
|
100
109
|
};
|
|
101
110
|
return webChatProps;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "regenerator-runtime/runtime";
|
|
2
|
-
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
-
import {
|
|
2
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
4
4
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
5
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
6
6
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -46,33 +46,107 @@ const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
|
|
|
46
46
|
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
const handleUnauthenticatedReconnectChat = async (dispatch, reconnectId, initStartChat) => {
|
|
50
|
-
const reconnectAvailabilityResponse = await getChatReconnectContext(reconnectId);
|
|
49
|
+
const handleUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
|
|
50
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
|
|
51
51
|
|
|
52
|
-
if (reconnectAvailabilityResponse
|
|
53
|
-
|
|
52
|
+
if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
53
|
+
await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
|
|
54
54
|
} else {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
|
|
56
|
+
}
|
|
57
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
const startUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
61
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
|
|
62
|
+
|
|
63
|
+
if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
64
|
+
await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
|
|
65
|
+
}
|
|
66
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
const setReconnectIdAndStartChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
70
|
+
const startUnauthenticatedReconnectChat = {
|
|
71
|
+
eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
72
|
+
};
|
|
73
|
+
BroadcastService.postMessage(startUnauthenticatedReconnectChat);
|
|
74
|
+
const optionalParams = {
|
|
75
|
+
reconnectId: reconnectId
|
|
76
|
+
};
|
|
77
|
+
dispatch({
|
|
78
|
+
type: LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
79
|
+
payload: reconnectId
|
|
80
|
+
});
|
|
81
|
+
dispatch({
|
|
82
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
83
|
+
payload: ConversationState.Loading
|
|
84
|
+
});
|
|
85
|
+
await initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const redirectPage = (redirectURL, redirectInSameWindow) => {
|
|
89
|
+
const redirectPageRequest = {
|
|
90
|
+
eventName: BroadcastEvent.RedirectPageRequest,
|
|
91
|
+
payload: {
|
|
92
|
+
redirectURL: redirectURL
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
BroadcastService.postMessage(redirectPageRequest);
|
|
96
|
+
|
|
97
|
+
if (redirectInSameWindow) {
|
|
98
|
+
window.location.href = redirectURL;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
|
|
103
|
+
return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
|
|
104
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
const startNewChatEmptyRedirectionUrl = async (chatSDK, dispatch, setAdapter, initStartChat) => {
|
|
108
|
+
const startUnauthenticatedReconnectChat = {
|
|
109
|
+
eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
110
|
+
};
|
|
111
|
+
BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
|
|
112
|
+
|
|
113
|
+
const parseToJson = false;
|
|
114
|
+
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
115
|
+
|
|
116
|
+
if (preChatSurveyResponse) {
|
|
58
117
|
dispatch({
|
|
59
|
-
type: LiveChatWidgetActionType.
|
|
60
|
-
payload:
|
|
118
|
+
type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
|
|
119
|
+
payload: preChatSurveyResponse
|
|
61
120
|
});
|
|
121
|
+
dispatch({
|
|
122
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
123
|
+
payload: ConversationState.Prechat
|
|
124
|
+
});
|
|
125
|
+
} else {
|
|
62
126
|
dispatch({
|
|
63
127
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
64
128
|
payload: ConversationState.Loading
|
|
65
129
|
});
|
|
66
|
-
await initStartChat(
|
|
130
|
+
await initStartChat(chatSDK, dispatch, setAdapter);
|
|
67
131
|
}
|
|
68
|
-
};
|
|
132
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
133
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
134
|
+
|
|
135
|
+
const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
|
|
136
|
+
const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
|
|
137
|
+
|
|
138
|
+
if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
|
|
139
|
+
await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
|
|
140
|
+
}
|
|
141
|
+
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
|
|
145
|
+
if (reconnectAvailabilityResponse.redirectURL) {
|
|
146
|
+
redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
|
|
147
|
+
} else {
|
|
148
|
+
await startNewChatEmptyRedirectionUrl(chatSDK, dispatch, setAdapter, initStartChat);
|
|
149
|
+
}
|
|
76
150
|
};
|
|
77
151
|
|
|
78
|
-
export { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat };
|
|
152
|
+
export { getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
2
1
|
import { RegisterLoggers, TelemetryManager } from "../../../common/telemetry/TelemetryManager";
|
|
2
|
+
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
3
3
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
4
|
+
import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
|
|
5
|
+
import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
4
6
|
import { defaultAriaConfig } from "../../../common/telemetry/defaultConfigs/defaultAriaConfig";
|
|
5
7
|
import { defaultInternalTelemetryData } from "../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData";
|
|
6
8
|
import { defaultTelemetryConfiguration } from "../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration";
|
|
7
|
-
import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
|
|
8
|
-
import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
9
9
|
export const registerTelemetryLoggers = (props, dispatch) => {
|
|
10
10
|
var _props$liveChatContex, _props$liveChatContex2;
|
|
11
11
|
|
|
@@ -44,6 +44,7 @@ export const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
44
44
|
telemetryData.orgId = (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId;
|
|
45
45
|
telemetryData.widgetId = (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId;
|
|
46
46
|
telemetryData.orgUrl = (_props$chatSDK3 = props.chatSDK) === null || _props$chatSDK3 === void 0 ? void 0 : (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) === null || _props$chatSDK3$omnic === void 0 ? void 0 : _props$chatSDK3$omnic.orgUrl;
|
|
47
|
+
TelemetryManager.InternalTelemetryData = telemetryData;
|
|
47
48
|
dispatch({
|
|
48
49
|
type: LiveChatWidgetActionType.SET_TELEMETRY_DATA,
|
|
49
50
|
payload: telemetryData
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
-
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
3
|
-
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
4
|
-
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
5
2
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
6
|
-
|
|
3
|
+
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
4
|
+
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
5
|
+
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
|
+
|
|
7
7
|
export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
|
|
8
8
|
try {
|
|
9
9
|
if (!persistedChat) {
|
|
@@ -25,7 +25,8 @@ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persist
|
|
|
25
25
|
exception: ex
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
|
-
}
|
|
28
|
+
} // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
29
|
+
|
|
29
30
|
|
|
30
31
|
BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
|
|
31
32
|
dispatch({
|
|
@@ -8,54 +8,64 @@ import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcon
|
|
|
8
8
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
9
9
|
import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
|
|
10
10
|
import { createAdapter } from "./createAdapter";
|
|
11
|
+
import { createOnNewAdapterActivityHandler } from "../../../plugins/newMessageEventHandler";
|
|
11
12
|
import { createTimer } from "../../../common/utils";
|
|
12
|
-
import { getReconnectIdForAuthenticatedChat } from "./reconnectChatHelper";
|
|
13
|
+
import { getReconnectIdForAuthenticatedChat, handleRedirectUnauthenticatedReconnectChat } from "./reconnectChatHelper";
|
|
13
14
|
import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
|
|
14
15
|
import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
16
|
|
|
16
17
|
const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
|
|
18
|
+
var _props$reconnectChatP;
|
|
19
|
+
|
|
17
20
|
if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
|
|
18
21
|
return;
|
|
19
|
-
} //
|
|
20
|
-
|
|
22
|
+
} // Redirecting if unauthenticated reconnect chat expired
|
|
21
23
|
|
|
22
|
-
const parseToJson = false;
|
|
23
|
-
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
24
|
-
const showPrechat = state.appStates.conversationState === ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
|
|
26
|
+
var _props$reconnectChatP2, _props$reconnectChatP3;
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
dispatch({
|
|
30
|
-
type: LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
31
|
-
payload: reconnectId
|
|
32
|
-
});
|
|
33
|
-
dispatch({
|
|
34
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
35
|
-
payload: ConversationState.ReconnectChat
|
|
36
|
-
});
|
|
37
|
-
} else if (showPrechat) {
|
|
38
|
-
dispatch({
|
|
39
|
-
type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
|
|
40
|
-
payload: preChatSurveyResponse
|
|
41
|
-
});
|
|
42
|
-
dispatch({
|
|
43
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
44
|
-
payload: ConversationState.Prechat
|
|
45
|
-
});
|
|
28
|
+
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);
|
|
46
29
|
} else {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
// Getting PreChat Survey Context
|
|
31
|
+
const parseToJson = false;
|
|
32
|
+
const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
|
|
33
|
+
const showPrechat = state.appStates.conversationState === ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
|
|
34
|
+
|
|
35
|
+
const reconnectId = await getReconnectIdForAuthenticatedChat(props, chatSDK);
|
|
36
|
+
|
|
37
|
+
if (reconnectId) {
|
|
38
|
+
dispatch({
|
|
39
|
+
type: LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
40
|
+
payload: reconnectId
|
|
41
|
+
});
|
|
42
|
+
dispatch({
|
|
43
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
44
|
+
payload: ConversationState.ReconnectChat
|
|
45
|
+
});
|
|
46
|
+
} else if (showPrechat) {
|
|
47
|
+
dispatch({
|
|
48
|
+
type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
|
|
49
|
+
payload: preChatSurveyResponse
|
|
50
|
+
});
|
|
51
|
+
dispatch({
|
|
52
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
53
|
+
payload: ConversationState.Prechat
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
dispatch({
|
|
57
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
58
|
+
payload: ConversationState.Loading
|
|
59
|
+
});
|
|
60
|
+
await initStartChat(chatSDK, dispatch, setAdapter);
|
|
61
|
+
}
|
|
52
62
|
}
|
|
53
63
|
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
64
|
|
|
55
65
|
|
|
56
66
|
const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
|
|
57
67
|
try {
|
|
58
|
-
var _TelemetryTimers$Widg;
|
|
68
|
+
var _newAdapter$activity$, _TelemetryTimers$Widg;
|
|
59
69
|
|
|
60
70
|
try {
|
|
61
71
|
TelemetryTimers.WidgetLoadTimer = createTimer();
|
|
@@ -74,6 +84,8 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
|
|
|
74
84
|
|
|
75
85
|
const newAdapter = await createAdapter(chatSDK);
|
|
76
86
|
setAdapter(newAdapter);
|
|
87
|
+
const chatToken = await chatSDK.getChatToken();
|
|
88
|
+
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));
|
|
77
89
|
|
|
78
90
|
if (!persistedState) {
|
|
79
91
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|