@microsoft/omnichannel-chat-widget 1.0.3-main.c925679 → 1.0.4-main.337860d
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 +2 -1
- package/lib/cjs/common/telemetry/TelemetryManager.js +5 -2
- package/lib/cjs/common/utils.js +22 -2
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +1 -10
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +7 -1
- package/lib/cjs/components/livechatwidget/common/endChat.js +32 -43
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -8
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +2 -1
- package/lib/cjs/components/livechatwidget/common/startChat.js +61 -20
- package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +20 -20
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +4 -4
- package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -2
- package/lib/esm/common/Constants.js +4 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +2 -1
- package/lib/esm/common/telemetry/TelemetryManager.js +5 -2
- package/lib/esm/common/utils.js +20 -1
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +4 -13
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +7 -1
- package/lib/esm/components/livechatwidget/common/endChat.js +31 -41
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +7 -8
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +2 -1
- package/lib/esm/components/livechatwidget/common/startChat.js +62 -21
- package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +21 -21
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +4 -4
- package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -2
- package/lib/types/common/Constants.d.ts +3 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +3 -2
- package/lib/types/common/utils.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/endChat.d.ts +2 -3
- package/package.json +3 -4
|
@@ -6,20 +6,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = exports.LiveChatWidgetStateful = void 0;
|
|
7
7
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
8
8
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
|
+
var _botframeworkWebchat = require("botframework-webchat");
|
|
10
|
+
var _Constants = require("../../../common/Constants");
|
|
9
11
|
var _react = require("@fluentui/react");
|
|
10
12
|
var _react2 = _interopRequireWildcard(require("react"));
|
|
11
13
|
var _startChat = require("../common/startChat");
|
|
12
14
|
var _utils = require("../../../common/utils");
|
|
13
15
|
var _endChat = require("../common/endChat");
|
|
16
|
+
var _reconnectChatHelper = require("../common/reconnectChatHelper");
|
|
14
17
|
var _componentController = require("../../../controller/componentController");
|
|
15
18
|
var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
|
|
16
19
|
var _CallingContainerStateful = _interopRequireDefault(require("../../callingcontainerstateful/CallingContainerStateful"));
|
|
17
20
|
var _ChatButtonStateful = _interopRequireDefault(require("../../chatbuttonstateful/ChatButtonStateful"));
|
|
18
|
-
var _botframeworkWebchat = require("botframework-webchat");
|
|
19
21
|
var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmationpanestateful/ConfirmationPaneStateful"));
|
|
20
22
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
21
23
|
var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
|
|
22
|
-
var _Constants = require("../../../common/Constants");
|
|
23
24
|
var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
|
|
24
25
|
var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
|
|
25
26
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
@@ -51,13 +52,12 @@ var _startProactiveChat = require("../common/startProactiveChat");
|
|
|
51
52
|
var _useChatAdapterStore = _interopRequireDefault(require("../../../hooks/useChatAdapterStore"));
|
|
52
53
|
var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useChatContextStore"));
|
|
53
54
|
var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDKStore"));
|
|
54
|
-
var _reconnectChatHelper = require("../common/reconnectChatHelper");
|
|
55
55
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
56
56
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
57
57
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
58
58
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
59
59
|
const LiveChatWidgetStateful = props => {
|
|
60
|
-
var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _state$appStates7, _props$webChatContain5, _state$
|
|
60
|
+
var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _state$appStates7, _props$webChatContain5, _state$appStates14, _props$webChatContain6, _props$styleProps2, _props$controlProps11, _props$controlProps12, _props$componentOverr, _props$controlProps13, _props$componentOverr2, _props$controlProps14, _props$componentOverr3, _props$controlProps15, _props$componentOverr4, _props$controlProps16, _props$componentOverr5, _props$controlProps17, _props$componentOverr6, _props$controlProps18, _props$componentOverr7, _props$controlProps19, _props$controlProps20, _props$componentOverr8, _props$controlProps21, _props$componentOverr9, _props$controlProps22, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
|
|
61
61
|
const [state, dispatch] = (0, _useChatContextStore.default)();
|
|
62
62
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
63
|
const [adapter, setAdapter] = (0, _useChatAdapterStore.default)();
|
|
@@ -368,7 +368,10 @@ const LiveChatWidgetStateful = props => {
|
|
|
368
368
|
// This is to ensure to get latest state from cache in multitab
|
|
369
369
|
const persistedState = (0, _utils.getStateFromCache)((0, _utils.getWidgetCacheIdfromProps)(props));
|
|
370
370
|
if (persistedState && persistedState.appStates.conversationState === _ConversationState.ConversationState.Active) {
|
|
371
|
-
(
|
|
371
|
+
dispatch({
|
|
372
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
|
|
373
|
+
payload: _Constants.ConversationEndEntity.Customer
|
|
374
|
+
});
|
|
372
375
|
} else {
|
|
373
376
|
const skipEndChatSDK = true;
|
|
374
377
|
const skipCloseChat = false;
|
|
@@ -506,36 +509,33 @@ const LiveChatWidgetStateful = props => {
|
|
|
506
509
|
}
|
|
507
510
|
}, [state.domainStates.confirmationState]);
|
|
508
511
|
(0, _react2.useEffect)(() => {
|
|
509
|
-
var _state$appStates8, _state$appStates9;
|
|
510
|
-
if ((state === null || state === void 0 ? void 0 : (_state$appStates8 = state.appStates) === null || _state$appStates8 === void 0 ? void 0 : _state$appStates8.conversationEndedBy) === _Constants.ConversationEndEntity.Agent || (state === null || state === void 0 ? void 0 : (_state$appStates9 = state.appStates) === null || _state$appStates9 === void 0 ? void 0 : _state$appStates9.conversationEndedBy) === _Constants.ConversationEndEntity.Bot) {
|
|
511
|
-
dispatch({
|
|
512
|
-
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
513
|
-
payload: _ConversationState.ConversationState.InActive
|
|
514
|
-
});
|
|
515
|
-
}
|
|
516
|
-
}, [state === null || state === void 0 ? void 0 : (_state$appStates10 = state.appStates) === null || _state$appStates10 === void 0 ? void 0 : _state$appStates10.conversationEndedBy]);
|
|
517
|
-
(0, _react2.useEffect)(() => {
|
|
518
|
-
var _state$appStates11, _state$appStates12, _state$appStates13, _state$appStates14;
|
|
512
|
+
var _state$appStates8, _state$appStates9, _state$appStates10, _state$appStates11, _state$appStates12, _state$appStates13;
|
|
519
513
|
// Do not process anything during initialization
|
|
520
|
-
if ((state === null || state === void 0 ? void 0 : (_state$
|
|
514
|
+
if ((state === null || state === void 0 ? void 0 : (_state$appStates8 = state.appStates) === null || _state$appStates8 === void 0 ? void 0 : _state$appStates8.conversationEndedBy) === _Constants.ConversationEndEntity.NotSet) {
|
|
521
515
|
return;
|
|
522
516
|
}
|
|
523
517
|
|
|
524
518
|
// If start chat failed, and C2 is trying to close chat widget
|
|
525
|
-
if (state !== null && state !== void 0 && (_state$
|
|
519
|
+
if (state !== null && state !== void 0 && (_state$appStates9 = state.appStates) !== null && _state$appStates9 !== void 0 && _state$appStates9.startChatFailed) {
|
|
526
520
|
(0, _endChat.endChat)(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, true, false, true, uwid.current);
|
|
527
521
|
return;
|
|
528
522
|
}
|
|
529
523
|
|
|
530
524
|
// Scenario -> Chat was InActive and closing the chat (Refresh scenario on post chat)
|
|
531
|
-
if ((state === null || state === void 0 ? void 0 : (_state$
|
|
525
|
+
if ((state === null || state === void 0 ? void 0 : (_state$appStates10 = state.appStates) === null || _state$appStates10 === void 0 ? void 0 : _state$appStates10.conversationState) === _ConversationState.ConversationState.Postchat || (state === null || state === void 0 ? void 0 : (_state$appStates11 = state.appStates) === null || _state$appStates11 === void 0 ? void 0 : _state$appStates11.conversationState) === _ConversationState.ConversationState.InActive) {
|
|
532
526
|
(0, _endChat.endChat)(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, true, false, true, uwid.current);
|
|
533
527
|
return;
|
|
534
528
|
}
|
|
529
|
+
if ((state === null || state === void 0 ? void 0 : (_state$appStates12 = state.appStates) === null || _state$appStates12 === void 0 ? void 0 : _state$appStates12.conversationEndedBy) === _Constants.ConversationEndEntity.Agent || (state === null || state === void 0 ? void 0 : (_state$appStates13 = state.appStates) === null || _state$appStates13 === void 0 ? void 0 : _state$appStates13.conversationEndedBy) === _Constants.ConversationEndEntity.Bot) {
|
|
530
|
+
dispatch({
|
|
531
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
532
|
+
payload: _ConversationState.ConversationState.InActive
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
535
|
|
|
536
|
-
//All other cases
|
|
536
|
+
// All other cases
|
|
537
537
|
(0, _endChat.prepareEndChat)(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid.current);
|
|
538
|
-
}, [state === null || state === void 0 ? void 0 : (_state$
|
|
538
|
+
}, [state === null || state === void 0 ? void 0 : (_state$appStates14 = state.appStates) === null || _state$appStates14 === void 0 ? void 0 : _state$appStates14.conversationEndedBy]);
|
|
539
539
|
|
|
540
540
|
// Publish chat widget state
|
|
541
541
|
(0, _react2.useEffect)(() => {
|
|
@@ -6,14 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = exports.PostChatSurveyPaneStateful = void 0;
|
|
7
7
|
var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _Constants = require("../../common/Constants");
|
|
10
|
+
var _CustomerVoiceEvents = require("./enums/CustomerVoiceEvents");
|
|
11
|
+
var _PostChatSurveyMode = require("./enums/PostChatSurveyMode");
|
|
9
12
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
10
13
|
var _TelemetryHelper = require("../../common/telemetry/TelemetryHelper");
|
|
11
14
|
var _defaultgeneralPostChatSurveyPaneStyleProps = require("./common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps");
|
|
12
15
|
var _utils = require("../../common/utils");
|
|
13
16
|
var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
|
|
14
|
-
var _PostChatSurveyMode = require("./enums/PostChatSurveyMode");
|
|
15
|
-
var _CustomerVoiceEvents = require("./enums/CustomerVoiceEvents");
|
|
16
|
-
var _Constants = require("../../common/Constants");
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -30,7 +30,7 @@ const PostChatSurveyPaneStateful = props => {
|
|
|
30
30
|
var _props$styleProps, _state$appStates, _state$appStates2, _props$controlProps;
|
|
31
31
|
const [state] = (0, _useChatContextStore.default)();
|
|
32
32
|
const generalStyleProps = Object.assign({}, _defaultgeneralPostChatSurveyPaneStyleProps.defaultGeneralPostChatSurveyPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps, {
|
|
33
|
-
display: state.appStates.isMinimized ? "none" : ""
|
|
33
|
+
display: state.appStates.isMinimized ? "none" : "contents"
|
|
34
34
|
});
|
|
35
35
|
let surveyInviteLink = "";
|
|
36
36
|
const surveyMode = (state === null || state === void 0 ? void 0 : (_state$appStates = state.appStates) === null || _state$appStates === void 0 ? void 0 : _state$appStates.selectedSurveyMode) === _PostChatSurveyMode.PostChatSurveyMode.Embed;
|
|
@@ -11,7 +11,6 @@ const defaultGeneralPostChatSurveyPaneStyleProps = {
|
|
|
11
11
|
left: "0%",
|
|
12
12
|
top: "0%",
|
|
13
13
|
borderRadius: "0 0 4px 4px",
|
|
14
|
-
borderWidth: "0px"
|
|
15
|
-
maxHeight: "calc(100% - 80px)"
|
|
14
|
+
borderWidth: "0px"
|
|
16
15
|
};
|
|
17
16
|
exports.defaultGeneralPostChatSurveyPaneStyleProps = defaultGeneralPostChatSurveyPaneStyleProps;
|
|
@@ -105,6 +105,9 @@ _defineProperty(Constants, "SessionCacheSuffix", "session");
|
|
|
105
105
|
_defineProperty(Constants, "PopoutCacheSuffix", "popout");
|
|
106
106
|
// Visibility timeout for conversation details
|
|
107
107
|
_defineProperty(Constants, "LWICheckOnVisibilityTimeout", 3 * 60 * 1000);
|
|
108
|
+
// 3 minute
|
|
109
|
+
// Popup mode custom context response event message name
|
|
110
|
+
_defineProperty(Constants, "InitContextParamsResponse", "initContextParamsResponse");
|
|
108
111
|
export const Regex = (_class = class Regex {}, _defineProperty(_class, "EmailRegex", "(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"), _class);
|
|
109
112
|
export class HtmlIdNames {}
|
|
110
113
|
_defineProperty(HtmlIdNames, "MSLiveChatWidget", "MSLiveChatWidget");
|
|
@@ -168,6 +171,7 @@ export let ElementType;
|
|
|
168
171
|
export let ChatSDKError;
|
|
169
172
|
(function (ChatSDKError) {
|
|
170
173
|
ChatSDKError["WidgetUseOutsideOperatingHour"] = "WidgetUseOutsideOperatingHour";
|
|
174
|
+
ChatSDKError["AuthContactIdNotFoundFailure"] = "AuthContactIdNotFoundFailure";
|
|
171
175
|
})(ChatSDKError || (ChatSDKError = {}));
|
|
172
176
|
export let EnvironmentVersion;
|
|
173
177
|
(function (EnvironmentVersion) {
|
|
@@ -31,7 +31,6 @@ export let BroadcastEvent;
|
|
|
31
31
|
BroadcastEvent["StartProactiveChat"] = "StartProactiveChat";
|
|
32
32
|
BroadcastEvent["ProactiveChatStartChat"] = "ProactiveChatStartChat";
|
|
33
33
|
BroadcastEvent["ProactiveChatStartPopoutChat"] = "ProactiveChatStartPopoutChat";
|
|
34
|
-
BroadcastEvent["ProactiveChatIsInPopoutMode"] = "ProactiveChatIsInPopoutMode";
|
|
35
34
|
BroadcastEvent["ResetProactiveChatParams"] = "ResetProactiveChatParams";
|
|
36
35
|
BroadcastEvent["InvalidAdaptiveCardFormat"] = "InvalidAdaptiveCardFormat";
|
|
37
36
|
BroadcastEvent["NewMessageSent"] = "NewMessageSent";
|
|
@@ -59,6 +58,7 @@ export let BroadcastEvent;
|
|
|
59
58
|
BroadcastEvent["HideChatVisibilityChangeEvent"] = "hideChatVisibilityChangeEvent";
|
|
60
59
|
BroadcastEvent["UpdateSessionDataForTelemetry"] = "UpdateSessionDataForTelemetry";
|
|
61
60
|
BroadcastEvent["UpdateConversationDataForTelemetry"] = "UpdateConversationDataForTelemetry";
|
|
61
|
+
BroadcastEvent["ContactIdNotFound"] = "ContactIdNotFound";
|
|
62
62
|
})(BroadcastEvent || (BroadcastEvent = {}));
|
|
63
63
|
export let TelemetryEvent;
|
|
64
64
|
(function (TelemetryEvent) {
|
|
@@ -102,6 +102,7 @@ export let TelemetryEvent;
|
|
|
102
102
|
TelemetryEvent["ChatVisibilityChanged"] = "ChatVisibilityChanged";
|
|
103
103
|
TelemetryEvent["EndChatSucceeded"] = "EndChatSucceeded";
|
|
104
104
|
TelemetryEvent["EndChatFailed"] = "EndChatFailed";
|
|
105
|
+
TelemetryEvent["SettingCustomContext"] = "SettingCustomContext";
|
|
105
106
|
TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
|
|
106
107
|
TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
|
|
107
108
|
TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
|
|
@@ -55,14 +55,17 @@ export const RegisterLoggers = () => {
|
|
|
55
55
|
};
|
|
56
56
|
const logTelemetry = telemetryEvent => {
|
|
57
57
|
loggers.map(logger => {
|
|
58
|
-
var _payload;
|
|
58
|
+
var _payload, _telemetryInput$paylo;
|
|
59
59
|
const logLevel = telemetryEvent.logLevel ?? LogLevel.INFO;
|
|
60
60
|
const scenarioType = ((_payload = telemetryEvent.payload) === null || _payload === void 0 ? void 0 : _payload.scenarioType) ?? ScenarioType.UNDEFINED;
|
|
61
61
|
const telemetryInput = parseInput(telemetryEvent === null || telemetryEvent === void 0 ? void 0 : telemetryEvent.payload, scenarioType);
|
|
62
62
|
telemetryInput.telemetryInfo = {
|
|
63
63
|
telemetryInfo: TelemetryHelper.buildTelemetryEvent(logLevel, telemetryInput)
|
|
64
64
|
};
|
|
65
|
-
|
|
65
|
+
//Do not log events without an Event Name
|
|
66
|
+
if (telemetryInput !== null && telemetryInput !== void 0 && (_telemetryInput$paylo = telemetryInput.payload) !== null && _telemetryInput$paylo !== void 0 && _telemetryInput$paylo.Event) {
|
|
67
|
+
logger.log(logLevel, telemetryInput);
|
|
68
|
+
}
|
|
66
69
|
});
|
|
67
70
|
};
|
|
68
71
|
return registerLoggers();
|
package/lib/esm/common/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var _this = this;
|
|
2
|
-
import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
|
|
2
|
+
import { AriaTelemetryConstants, ChatSDKError, Constants, LocaleConstants } from "./Constants";
|
|
3
3
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "./telemetry/TelemetryConstants";
|
|
4
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
4
5
|
import { DataStoreManager } from "./contextDataStore/DataStoreManager";
|
|
5
6
|
import { KeyCodes } from "./KeyCodes";
|
|
6
7
|
import { Md5 } from "md5-typescript";
|
|
@@ -353,8 +354,13 @@ export const getConversationDetailsCall = async chatSDK => {
|
|
|
353
354
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
354
355
|
let conversationDetails = undefined;
|
|
355
356
|
try {
|
|
357
|
+
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
358
|
+
Event: TelemetryEvent.GetConversationDetailsCallStarted,
|
|
359
|
+
Description: "Conversation details call started"
|
|
360
|
+
});
|
|
356
361
|
conversationDetails = await chatSDK.getConversationDetails();
|
|
357
362
|
} catch (error) {
|
|
363
|
+
checkContactIdError(error);
|
|
358
364
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
359
365
|
Event: TelemetryEvent.GetConversationDetailsCallFailed,
|
|
360
366
|
ExceptionDetails: {
|
|
@@ -363,4 +369,17 @@ export const getConversationDetailsCall = async chatSDK => {
|
|
|
363
369
|
});
|
|
364
370
|
}
|
|
365
371
|
return conversationDetails;
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
375
|
+
export const checkContactIdError = e => {
|
|
376
|
+
if ((e === null || e === void 0 ? void 0 : e.message) === ChatSDKError.AuthContactIdNotFoundFailure) {
|
|
377
|
+
const contactIdNotFoundErrorEvent = {
|
|
378
|
+
eventName: BroadcastEvent.ContactIdNotFound,
|
|
379
|
+
payload: {
|
|
380
|
+
error: e
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
BroadcastService.postMessage(contactIdNotFoundErrorEvent);
|
|
384
|
+
}
|
|
366
385
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React, { useEffect,
|
|
3
|
-
import {
|
|
1
|
+
import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { ChatButton } from "@microsoft/omnichannel-chat-components";
|
|
4
4
|
import { Constants } from "../../common/Constants";
|
|
5
5
|
import { setFocusOnElement } from "../../common/utils";
|
|
6
6
|
import { ConversationState } from "../../contexts/common/ConversationState";
|
|
@@ -19,7 +19,6 @@ export const ChatButtonStateful = props => {
|
|
|
19
19
|
} = props;
|
|
20
20
|
//Setting OutOfOperatingHours Flag
|
|
21
21
|
const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_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.OutOfOperatingHours) === "True");
|
|
22
|
-
const proactiveChatInNewWindow = useRef(state.appStates.proactiveChatStates.proactiveChatInNewWindow);
|
|
23
22
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeChatButtonStyleProps, outOfOfficeButtonProps === null || outOfOfficeButtonProps === void 0 ? void 0 : outOfOfficeButtonProps.styleProps);
|
|
24
23
|
const controlProps = {
|
|
25
24
|
id: "oc-lcw-chat-button",
|
|
@@ -32,12 +31,7 @@ export const ChatButtonStateful = props => {
|
|
|
32
31
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
33
32
|
Event: TelemetryEvent.LCWChatButtonClicked
|
|
34
33
|
});
|
|
35
|
-
if (
|
|
36
|
-
const proactiveChatIsInPopoutModeEvent = {
|
|
37
|
-
eventName: BroadcastEvent.ProactiveChatIsInPopoutMode
|
|
38
|
-
};
|
|
39
|
-
BroadcastService.postMessage(proactiveChatIsInPopoutModeEvent);
|
|
40
|
-
} else if (state.appStates.isMinimized) {
|
|
34
|
+
if (state.appStates.isMinimized) {
|
|
41
35
|
dispatch({
|
|
42
36
|
type: LiveChatWidgetActionType.SET_MINIMIZED,
|
|
43
37
|
payload: false
|
|
@@ -90,9 +84,6 @@ export const ChatButtonStateful = props => {
|
|
|
90
84
|
});
|
|
91
85
|
}
|
|
92
86
|
}, []);
|
|
93
|
-
useEffect(() => {
|
|
94
|
-
proactiveChatInNewWindow.current = state.appStates.proactiveChatStates.proactiveChatInNewWindow;
|
|
95
|
-
}, [state.appStates.proactiveChatStates.proactiveChatInNewWindow]);
|
|
96
87
|
return /*#__PURE__*/React.createElement(ChatButton, {
|
|
97
88
|
componentOverrides: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.componentOverrides,
|
|
98
89
|
controlProps: outOfOperatingHours ? outOfOfficeControlProps : controlProps,
|
package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -154,12 +154,13 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
154
154
|
export const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage, state) => {
|
|
155
155
|
var _state$domainStates, _state$domainStates2, _state$domainStates2$;
|
|
156
156
|
// Need to keep existing request id for scenarios when trnascript is downloaded after endchat
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
157
|
+
const liveChatContext = {
|
|
158
|
+
chatToken: state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken,
|
|
159
|
+
requestId: state === null || state === void 0 ? void 0 : (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : (_state$domainStates2$ = _state$domainStates2.chatToken) === null || _state$domainStates2$ === void 0 ? void 0 : _state$domainStates2$.requestId
|
|
160
|
+
};
|
|
161
|
+
let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript({
|
|
162
|
+
liveChatContext
|
|
163
|
+
}));
|
|
163
164
|
if (typeof data === Constants.String) {
|
|
164
165
|
data = JSON.parse(data);
|
|
165
166
|
}
|
|
@@ -1190,7 +1190,13 @@ export const dummyDefaultProps = {
|
|
|
1190
1190
|
borderRadius: "0 0 4px 4px",
|
|
1191
1191
|
borderWidth: "3px",
|
|
1192
1192
|
backgroundColor: "#FFFFFF",
|
|
1193
|
-
borderColor: "#F1F1F1"
|
|
1193
|
+
borderColor: "#F1F1F1",
|
|
1194
|
+
position: "initial",
|
|
1195
|
+
height: "100%",
|
|
1196
|
+
width: "100%",
|
|
1197
|
+
left: "0%",
|
|
1198
|
+
top: "0%",
|
|
1199
|
+
display: "contents"
|
|
1194
1200
|
}
|
|
1195
1201
|
},
|
|
1196
1202
|
isCustomerVoiceSurveyCompact: undefined
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { ConfirmationState, Constants, ConversationEndEntity } from "../../../common/Constants";
|
|
1
2
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
4
|
+
import { getConversationDetailsCall, getWidgetEndChatEventName, isNullOrEmptyString } from "../../../common/utils";
|
|
5
|
+
import { getPostChatContext, initiatePostChat } from "./renderSurveyHelpers";
|
|
2
6
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
7
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
4
8
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
5
9
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
6
10
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
7
11
|
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
8
|
-
import { getWidgetEndChatEventName, isNullOrEmptyString } from "../../../common/utils";
|
|
9
|
-
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
10
|
-
import { initiatePostChat, getPostChatContext } from "./renderSurveyHelpers";
|
|
11
|
-
import { Constants, ConversationEndEntity, ConfirmationState } from "../../../common/Constants";
|
|
12
12
|
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
14
|
const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid) => {
|
|
15
15
|
try {
|
|
16
16
|
var _conversationDetails$, _state$domainStates, _state$domainStates2;
|
|
17
|
-
const conversationDetails = await
|
|
17
|
+
const conversationDetails = await getConversationDetailsCall(chatSDK);
|
|
18
18
|
|
|
19
19
|
// Use Case : When post chat is not configured
|
|
20
20
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : (_conversationDetails$ = conversationDetails.canRenderPostChat) === null || _conversationDetails$ === void 0 ? void 0 : _conversationDetails$.toLowerCase()) === Constants.false) {
|
|
@@ -119,18 +119,12 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
} finally {
|
|
122
|
-
var _state$appStates3;
|
|
123
122
|
dispatch({
|
|
124
123
|
type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
|
|
125
124
|
payload: 0
|
|
126
125
|
});
|
|
127
|
-
//Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
128
|
-
|
|
129
|
-
dispatch({
|
|
130
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
131
|
-
payload: ConversationState.Closed
|
|
132
|
-
});
|
|
133
|
-
}
|
|
126
|
+
// Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
127
|
+
closeChatWidget(dispatch, props, state);
|
|
134
128
|
}
|
|
135
129
|
}
|
|
136
130
|
if (postMessageToOtherTab && !isNullOrEmptyString(uwid)) {
|
|
@@ -143,10 +137,6 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
143
137
|
};
|
|
144
138
|
const endChatStateCleanUp = async dispatch => {
|
|
145
139
|
// Need to clear these states immediately when chat ended from OC.
|
|
146
|
-
dispatch({
|
|
147
|
-
type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
|
|
148
|
-
payload: undefined
|
|
149
|
-
});
|
|
150
140
|
dispatch({
|
|
151
141
|
type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
152
142
|
payload: undefined
|
|
@@ -195,6 +185,27 @@ const closeChatStateCleanUp = async dispatch => {
|
|
|
195
185
|
}
|
|
196
186
|
});
|
|
197
187
|
};
|
|
188
|
+
const closeChatWidget = (dispatch, props, state) => {
|
|
189
|
+
var _state$appStates3;
|
|
190
|
+
if (state !== null && state !== void 0 && (_state$appStates3 = state.appStates) !== null && _state$appStates3 !== void 0 && _state$appStates3.hideStartChatButton) {
|
|
191
|
+
var _props$controlProps2, _props$controlProps3;
|
|
192
|
+
// Only close chat if header is enabled for popout
|
|
193
|
+
// TODO : This condition needs to be removed eventually when the filler UX is ready for popout, removing this condition would show a blank screen for OOB Widget
|
|
194
|
+
if ((props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.hideHeader) === undefined || (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.hideHeader) === false) {
|
|
195
|
+
dispatch({
|
|
196
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
197
|
+
payload: ConversationState.Closed
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Embedded chat
|
|
204
|
+
dispatch({
|
|
205
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
206
|
+
payload: ConversationState.Closed
|
|
207
|
+
});
|
|
208
|
+
};
|
|
198
209
|
|
|
199
210
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
200
211
|
const handleAuthenticationIfEnabled = async (props, chatSDK) => {
|
|
@@ -232,28 +243,7 @@ const chatTokenCleanUp = async dispatch => {
|
|
|
232
243
|
|
|
233
244
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
245
|
const getEndChatEventName = async (chatSDK, props) => {
|
|
235
|
-
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$
|
|
236
|
-
return getWidgetEndChatEventName(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$
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
240
|
-
const getConversationDetails = async chatSDK => {
|
|
241
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
242
|
-
let conversationDetails = undefined;
|
|
243
|
-
try {
|
|
244
|
-
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
245
|
-
Event: TelemetryEvent.GetConversationDetailsCallStarted,
|
|
246
|
-
Description: "Conversation details call started"
|
|
247
|
-
});
|
|
248
|
-
conversationDetails = await chatSDK.getConversationDetails();
|
|
249
|
-
} catch (error) {
|
|
250
|
-
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
251
|
-
Event: TelemetryEvent.GetConversationDetailsCallFailed,
|
|
252
|
-
ExceptionDetails: {
|
|
253
|
-
exception: `Get Conversation Details Call Failed : ${error}`
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
return conversationDetails;
|
|
246
|
+
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps4;
|
|
247
|
+
return getWidgetEndChatEventName(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$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.widgetInstanceId) ?? "");
|
|
258
248
|
};
|
|
259
|
-
export { prepareEndChat, endChat
|
|
249
|
+
export { prepareEndChat, endChat };
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import { ConversationEndEntity, ParticipantType } from "../../../common/Constants";
|
|
1
2
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
-
import {
|
|
3
|
+
import { changeLanguageCodeFormatForWebChat, getConversationDetailsCall } from "../../../common/utils";
|
|
4
|
+
import HyperlinkTextOverrideRenderer from "../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer";
|
|
3
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
4
6
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
5
7
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
6
8
|
import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
|
|
7
|
-
import { changeLanguageCodeFormatForWebChat } from "../../../common/utils";
|
|
8
9
|
import channelDataMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware";
|
|
9
10
|
import { createActivityMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
|
|
10
11
|
import createAttachmentMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
|
|
11
12
|
import createAttachmentUploadValidatorMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware";
|
|
12
13
|
import { createAvatarMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
|
|
14
|
+
import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
|
|
13
15
|
import createConversationEndMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware";
|
|
14
16
|
import createDataMaskingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware";
|
|
15
17
|
import { createMarkdown } from "./createMarkdown";
|
|
16
18
|
import createMaxMessageSizeValidator from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator";
|
|
19
|
+
import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
|
|
20
|
+
import { createStore } from "botframework-webchat";
|
|
17
21
|
import { createWebChatTelemetry } from "../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
18
22
|
import { defaultAttachmentProps } from "../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps";
|
|
19
23
|
import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
@@ -24,11 +28,6 @@ import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroll
|
|
|
24
28
|
import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
|
|
25
29
|
import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
|
|
26
30
|
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
|
|
27
|
-
import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
|
|
28
|
-
import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
|
|
29
|
-
import { ConversationEndEntity, ParticipantType } from "../../../common/Constants";
|
|
30
|
-
import { getConversationDetails } from "./endChat";
|
|
31
|
-
import HyperlinkTextOverrideRenderer from "../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer";
|
|
32
31
|
|
|
33
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
33
|
export const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
@@ -47,7 +46,7 @@ export const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
|
47
46
|
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _props$webChatContain5;
|
|
48
47
|
const conversationEndCallback = async () => {
|
|
49
48
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
-
const conversationDetails = await
|
|
49
|
+
const conversationDetails = await getConversationDetailsCall(chatSDK);
|
|
51
50
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.participantType) === ParticipantType.Bot) {
|
|
52
51
|
dispatch({
|
|
53
52
|
type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "regenerator-runtime/runtime";
|
|
2
2
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { checkContactIdError, isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
3
4
|
import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
|
|
4
|
-
import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
5
5
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
6
6
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
7
7
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
@@ -69,6 +69,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
|
|
|
69
69
|
}
|
|
70
70
|
return reconnectChatContext;
|
|
71
71
|
} catch (error) {
|
|
72
|
+
checkContactIdError(error);
|
|
72
73
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
73
74
|
Event: TelemetryEvent.GetChatReconnectContextSDKCallFailed,
|
|
74
75
|
ExceptionDetails: {
|