@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.
Files changed (35) hide show
  1. package/lib/cjs/common/Constants.js +4 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +2 -1
  3. package/lib/cjs/common/telemetry/TelemetryManager.js +5 -2
  4. package/lib/cjs/common/utils.js +22 -2
  5. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +1 -10
  6. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
  7. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +7 -1
  8. package/lib/cjs/components/livechatwidget/common/endChat.js +32 -43
  9. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -8
  10. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +2 -1
  11. package/lib/cjs/components/livechatwidget/common/startChat.js +61 -20
  12. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
  13. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +20 -20
  14. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +4 -4
  15. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -2
  16. package/lib/esm/common/Constants.js +4 -0
  17. package/lib/esm/common/telemetry/TelemetryConstants.js +2 -1
  18. package/lib/esm/common/telemetry/TelemetryManager.js +5 -2
  19. package/lib/esm/common/utils.js +20 -1
  20. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +4 -13
  21. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
  22. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +7 -1
  23. package/lib/esm/components/livechatwidget/common/endChat.js +31 -41
  24. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +7 -8
  25. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +2 -1
  26. package/lib/esm/components/livechatwidget/common/startChat.js +62 -21
  27. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
  28. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +21 -21
  29. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +4 -4
  30. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -2
  31. package/lib/types/common/Constants.d.ts +3 -1
  32. package/lib/types/common/telemetry/TelemetryConstants.d.ts +3 -2
  33. package/lib/types/common/utils.d.ts +1 -0
  34. package/lib/types/components/livechatwidget/common/endChat.d.ts +2 -3
  35. 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$appStates10, _state$appStates15, _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;
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
- (0, _endChat.prepareEndChat)(props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid.current);
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$appStates11 = state.appStates) === null || _state$appStates11 === void 0 ? void 0 : _state$appStates11.conversationEndedBy) === _Constants.ConversationEndEntity.NotSet) {
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$appStates12 = state.appStates) !== null && _state$appStates12 !== void 0 && _state$appStates12.startChatFailed) {
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$appStates13 = state.appStates) === null || _state$appStates13 === void 0 ? void 0 : _state$appStates13.conversationState) === _ConversationState.ConversationState.Postchat || (state === null || state === void 0 ? void 0 : (_state$appStates14 = state.appStates) === null || _state$appStates14 === void 0 ? void 0 : _state$appStates14.conversationState) === _ConversationState.ConversationState.InActive) {
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$appStates15 = state.appStates) === null || _state$appStates15 === void 0 ? void 0 : _state$appStates15.conversationEndedBy]);
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
- logger.log(logLevel, telemetryInput);
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();
@@ -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 { BroadcastEvent, LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
- import React, { useEffect, useRef, useState } from "react";
3
- import { BroadcastService, ChatButton } from "@microsoft/omnichannel-chat-components";
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 (proactiveChatInNewWindow.current) {
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,
@@ -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 existingRequestId = chatSDK.requestId;
158
- chatSDK.chatToken = state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken;
159
- chatSDK.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
- let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
161
- // This is used for allowing to start next chat
162
- chatSDK.requestId = existingRequestId;
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 getConversationDetails(chatSDK);
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
- if (!(state !== null && state !== void 0 && (_state$appStates3 = state.appStates) !== null && _state$appStates3 !== void 0 && _state$appStates3.hideStartChatButton)) {
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$controlProps2;
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$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? "");
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, getConversationDetails };
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 { createStore } from "botframework-webchat";
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 getConversationDetails(chatSDK);
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: {