@microsoft/omnichannel-chat-widget 1.7.3-main.112d01b → 1.7.3-main.34ea4da

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 (91) hide show
  1. package/lib/cjs/common/Constants.js +1 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +3 -0
  3. package/lib/cjs/components/footerstateful/FooterStateful.js +14 -3
  4. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +6 -1
  5. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +15 -6
  6. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +77 -0
  7. package/lib/cjs/components/livechatwidget/common/chatDisconnectHelper.js +2 -2
  8. package/lib/cjs/components/livechatwidget/common/createAdapter.js +15 -2
  9. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +6 -2
  10. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +2 -2
  11. package/lib/cjs/components/livechatwidget/common/endChat.js +20 -5
  12. package/lib/cjs/components/livechatwidget/common/getMockChatSDKIfApplicable.js +26 -0
  13. package/lib/cjs/components/livechatwidget/common/helpers/markdownHelper.js +23 -0
  14. package/lib/cjs/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +41 -0
  15. package/lib/cjs/components/livechatwidget/common/persistentChatHelper.js +2 -1
  16. package/lib/cjs/components/livechatwidget/common/startChat.js +37 -28
  17. package/lib/cjs/components/livechatwidget/common/startChatErrorHandler.js +6 -6
  18. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +8 -3
  19. package/lib/cjs/components/livechatwidget/interfaces/IBotAuthActivitySubscriberOptionalParams.js +1 -0
  20. package/lib/cjs/components/livechatwidget/interfaces/IMockProps.js +7 -0
  21. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +30 -0
  22. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatAdapter.js +87 -0
  23. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatSDK.js +17 -0
  24. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +41 -0
  25. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatSDK.js +17 -0
  26. package/lib/cjs/components/webchatcontainerstateful/common/MockBotCardCommandType.js +14 -0
  27. package/lib/cjs/components/webchatcontainerstateful/common/MockBotCommand.js +19 -0
  28. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  29. package/lib/cjs/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.js +71 -0
  30. package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +90 -0
  31. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotAuthConfig.js +1 -0
  32. package/lib/cjs/plugins/createChatTranscript.js +84 -0
  33. package/lib/cjs/plugins/newMessageEventHandler.js +4 -2
  34. package/lib/esm/common/Constants.js +1 -0
  35. package/lib/esm/common/telemetry/TelemetryConstants.js +3 -0
  36. package/lib/esm/components/footerstateful/FooterStateful.js +12 -3
  37. package/lib/esm/components/livechatwidget/LiveChatWidget.js +6 -1
  38. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +15 -6
  39. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +70 -0
  40. package/lib/esm/components/livechatwidget/common/chatDisconnectHelper.js +3 -2
  41. package/lib/esm/components/livechatwidget/common/createAdapter.js +14 -2
  42. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +6 -2
  43. package/lib/esm/components/livechatwidget/common/createMarkdown.js +2 -2
  44. package/lib/esm/components/livechatwidget/common/endChat.js +20 -5
  45. package/lib/esm/components/livechatwidget/common/getMockChatSDKIfApplicable.js +20 -0
  46. package/lib/esm/components/livechatwidget/common/helpers/markdownHelper.js +15 -0
  47. package/lib/esm/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +34 -0
  48. package/lib/esm/components/livechatwidget/common/persistentChatHelper.js +2 -1
  49. package/lib/esm/components/livechatwidget/common/startChat.js +37 -28
  50. package/lib/esm/components/livechatwidget/common/startChatErrorHandler.js +7 -7
  51. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +7 -2
  52. package/lib/esm/components/livechatwidget/interfaces/IBotAuthActivitySubscriberOptionalParams.js +1 -0
  53. package/lib/esm/components/livechatwidget/interfaces/IMockProps.js +6 -0
  54. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +31 -1
  55. package/lib/esm/components/webchatcontainerstateful/common/DemoChatAdapter.js +79 -0
  56. package/lib/esm/components/webchatcontainerstateful/common/DemoChatSDK.js +10 -0
  57. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +33 -0
  58. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatSDK.js +10 -0
  59. package/lib/esm/components/webchatcontainerstateful/common/MockBotCardCommandType.js +7 -0
  60. package/lib/esm/components/webchatcontainerstateful/common/MockBotCommand.js +12 -0
  61. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  62. package/lib/esm/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.js +61 -0
  63. package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +77 -0
  64. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotAuthConfig.js +1 -0
  65. package/lib/esm/plugins/createChatTranscript.js +84 -0
  66. package/lib/esm/plugins/newMessageEventHandler.js +4 -2
  67. package/lib/types/common/Constants.d.ts +1 -0
  68. package/lib/types/common/telemetry/TelemetryConstants.d.ts +4 -1
  69. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +4 -1
  70. package/lib/types/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.d.ts +7 -0
  71. package/lib/types/components/livechatwidget/common/createAdapter.d.ts +2 -1
  72. package/lib/types/components/livechatwidget/common/getMockChatSDKIfApplicable.d.ts +1 -0
  73. package/lib/types/components/livechatwidget/common/helpers/markdownHelper.d.ts +2 -0
  74. package/lib/types/components/livechatwidget/common/overridePropsOnMockIfApplicable.d.ts +3 -0
  75. package/lib/types/components/livechatwidget/common/updateSessionDataForTelemetry.d.ts +1 -1
  76. package/lib/types/components/livechatwidget/interfaces/IBotAuthActivitySubscriberOptionalParams.d.ts +4 -0
  77. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  78. package/lib/types/components/livechatwidget/interfaces/IMockProps.d.ts +8 -0
  79. package/lib/types/components/webchatcontainerstateful/common/DemoChatAdapter.d.ts +10 -0
  80. package/lib/types/components/webchatcontainerstateful/common/DemoChatSDK.d.ts +6 -0
  81. package/lib/types/components/webchatcontainerstateful/common/DesignerChatAdapter.d.ts +8 -0
  82. package/lib/types/components/webchatcontainerstateful/common/DesignerChatSDK.d.ts +6 -0
  83. package/lib/types/components/webchatcontainerstateful/common/MockBotCardCommandType.d.ts +6 -0
  84. package/lib/types/components/webchatcontainerstateful/common/MockBotCommand.d.ts +11 -0
  85. package/lib/types/components/webchatcontainerstateful/common/mockadapter.d.ts +2 -1
  86. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +6 -0
  87. package/lib/types/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.d.ts +9 -0
  88. package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +9 -0
  89. package/lib/types/components/webchatcontainerstateful/interfaces/IBotAuthConfig.d.ts +4 -0
  90. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  91. package/package.json +3 -3
@@ -307,6 +307,7 @@ class WidgetLoadCustomErrorString {}
307
307
  exports.WidgetLoadCustomErrorString = WidgetLoadCustomErrorString;
308
308
  _defineProperty(WidgetLoadCustomErrorString, "AuthenticationFailedErrorString", "Authentication was not successful");
309
309
  _defineProperty(WidgetLoadCustomErrorString, "NetworkErrorString", "Network Error");
310
+ _defineProperty(WidgetLoadCustomErrorString, "CloseAdapterAfterDisconnectionErrorString", "Error trying to end/close chat adapter after the widget is back on-line, for an already disconnected session");
310
311
  class PrepareEndChatDescriptionConstants {}
311
312
  exports.PrepareEndChatDescriptionConstants = PrepareEndChatDescriptionConstants;
312
313
  _defineProperty(PrepareEndChatDescriptionConstants, "ConversationEndedByCustomerWithoutPostChat", "Conversation ended by customer. Post chat not configured or should not show.");
@@ -101,6 +101,7 @@ exports.TelemetryEvent = TelemetryEvent;
101
101
  TelemetryEvent["GetConversationDetailsCallStarted"] = "GetConversationDetailsCallStarted";
102
102
  TelemetryEvent["GetConversationDetailsCallFailed"] = "GetConversationDetailsCallFailed";
103
103
  TelemetryEvent["EndChatSDKCallFailed"] = "EndChatSDKCallFailed";
104
+ TelemetryEvent["DisconnectEndChatSDKCallFailed"] = "DisconnectEndChatSDKCallFailed";
104
105
  TelemetryEvent["GetChatReconnectContextSDKCallStarted"] = "GetChatReconnectContextSDKCallStarted";
105
106
  TelemetryEvent["GetChatReconnectContextSDKCallFailed"] = "GetChatReconnectContextSDKCallFailed";
106
107
  TelemetryEvent["ParseAdaptiveCardFailed"] = "ParseAdaptiveCardFailed";
@@ -214,6 +215,8 @@ exports.TelemetryEvent = TelemetryEvent;
214
215
  TelemetryEvent["PostChatSurveyLoadingPaneLoaded"] = "PostChatSurveyLoadingPaneLoaded";
215
216
  TelemetryEvent["PostChatSurveyLoaded"] = "PostChatSurveyLoaded";
216
217
  TelemetryEvent["ChatDisconnectThreadEventReceived"] = "ChatDisconnectThreadEventReceived";
218
+ TelemetryEvent["HiddenAdaptiveCardMessageReceived"] = "HiddenAdaptiveCardMessageReceived";
219
+ TelemetryEvent["EndingAdapterAfterDisconnectionError"] = "EndingAdapterAfterDisconnectionError";
217
220
  })(TelemetryEvent || (exports.TelemetryEvent = TelemetryEvent = {}));
218
221
  class TelemetryConstants {
219
222
  static map(eventTypeOrScenarioType) {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.FooterStateful = void 0;
7
7
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
  var _AudioNotificationStateful = _interopRequireDefault(require("./audionotificationstateful/AudioNotificationStateful"));
10
10
  var _Constants = require("../../common/Constants");
11
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
@@ -18,9 +18,11 @@ var _DownloadTranscriptStateful = require("./downloadtranscriptstateful/Download
18
18
  var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatContextStore"));
19
19
  var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ 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); }
22
+ 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; }
21
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
24
  const FooterStateful = props => {
23
- var _footerProps$controlP3, _footerProps$controlP4;
25
+ var _footerProps$controlP3, _footerProps$controlP6;
24
26
  const [state, dispatch] = (0, _useChatContextStore.default)();
25
27
  // hideFooterDisplay - the purpose of this is to keep the footer always "active",
26
28
  // but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
@@ -87,13 +89,22 @@ const FooterStateful = props => {
87
89
  isAudioMuted: state.appStates.isAudioMuted
88
90
  }
89
91
  };
92
+ (0, _react.useEffect)(() => {
93
+ if (state.appStates.isAudioMuted === null) {
94
+ var _footerProps$controlP4, _footerProps$controlP5;
95
+ dispatch({
96
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
97
+ payload: (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : (_footerProps$controlP5 = _footerProps$controlP4.audioNotificationButtonProps) === null || _footerProps$controlP5 === void 0 ? void 0 : _footerProps$controlP5.isAudioMuted) ?? false
98
+ });
99
+ }
100
+ }, []);
90
101
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hideFooterDisplay && /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
91
102
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
92
103
  controlProps: controlProps,
93
104
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
94
105
  }), /*#__PURE__*/_react.default.createElement(_AudioNotificationStateful.default, {
95
106
  audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? _Audios.NewMessageNotificationSoundBase64,
96
- 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
107
+ isAudioMuted: state.appStates.isAudioMuted === null ? (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP6 = footerProps.controlProps) === null || _footerProps$controlP6 === void 0 ? void 0 : _footerProps$controlP6.hideAudioNotificationButton) ?? false : state.appStates.isAudioMuted ?? false
97
108
  }));
98
109
  };
99
110
  exports.FooterStateful = FooterStateful;
@@ -11,16 +11,21 @@ var _ChatSDKStore = require("../../contexts/ChatSDKStore");
11
11
  var _LiveChatWidgetStateful = _interopRequireDefault(require("./livechatwidgetstateful/LiveChatWidgetStateful"));
12
12
  var _createReducer = require("../../contexts/createReducer");
13
13
  var _LiveChatWidgetContextInitialState = require("../../contexts/common/LiveChatWidgetContextInitialState");
14
+ var _getMockChatSDKIfApplicable = require("./common/getMockChatSDKIfApplicable");
15
+ var _overridePropsOnMockIfApplicable = _interopRequireDefault(require("./common/overridePropsOnMockIfApplicable"));
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
  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); }
16
18
  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; }
17
19
  const LiveChatWidget = props => {
20
+ var _props$mock;
18
21
  const reducer = (0, _createReducer.createReducer)();
19
22
  const [state, dispatch] = (0, _react.useReducer)(reducer, (0, _LiveChatWidgetContextInitialState.getLiveChatWidgetContextInitialState)(props));
20
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
24
  const [adapter, setAdapter] = (0, _react.useState)(undefined);
25
+ const chatSDK = (0, _getMockChatSDKIfApplicable.getMockChatSDKIfApplicable)(props.chatSDK, props === null || props === void 0 ? void 0 : (_props$mock = props.mock) === null || _props$mock === void 0 ? void 0 : _props$mock.type);
26
+ (0, _overridePropsOnMockIfApplicable.default)(props);
22
27
  return /*#__PURE__*/_react.default.createElement(_ChatSDKStore.ChatSDKStore.Provider, {
23
- value: props.chatSDK
28
+ value: chatSDK
24
29
  }, /*#__PURE__*/_react.default.createElement(_ChatAdapterStore.ChatAdapterStore.Provider, {
25
30
  value: [adapter, setAdapter]
26
31
  }, /*#__PURE__*/_react.default.createElement(_ChatContextStore.ChatContextStore.Provider, {
@@ -13,8 +13,6 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
13
13
  const supportedSignInCardContentTypes = ["application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"];
14
14
  const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
15
15
  const delay = t => new Promise(resolve => setTimeout(resolve, t));
16
- const fetchBotAuthConfigRetries = 3;
17
- const fetchBotAuthConfigRetryInterval = 1000;
18
16
  let response;
19
17
  const extractSignInId = signInUrl => {
20
18
  const result = botOauthUrlRegex.exec(signInUrl);
@@ -43,7 +41,7 @@ const extractSasUrl = async attachment => {
43
41
  }
44
42
  return sasUrl;
45
43
  };
46
- const fetchBotAuthConfig = async retries => {
44
+ const fetchBotAuthConfig = async (retries, interval) => {
47
45
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
48
46
  Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig
49
47
  });
@@ -64,14 +62,25 @@ const fetchBotAuthConfig = async retries => {
64
62
  // Base Case
65
63
  throw new Error();
66
64
  }
67
- await delay(fetchBotAuthConfigRetryInterval);
68
- return await fetchBotAuthConfig(--retries);
65
+ await delay(interval);
66
+ return await fetchBotAuthConfig(--retries, interval);
69
67
  };
70
68
  class BotAuthActivitySubscriber {
71
69
  constructor() {
70
+ let optionalParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
72
71
  _defineProperty(this, "observer", void 0);
73
72
  _defineProperty(this, "signInCardSeen", void 0);
73
+ _defineProperty(this, "fetchBotAuthConfigRetries", void 0);
74
+ _defineProperty(this, "fetchBotAuthConfigRetryInterval", void 0);
74
75
  this.signInCardSeen = new Set();
76
+ this.fetchBotAuthConfigRetries = 3;
77
+ this.fetchBotAuthConfigRetryInterval = 1000;
78
+ if (optionalParams.fetchBotAuthConfigRetries) {
79
+ this.fetchBotAuthConfigRetries = optionalParams.fetchBotAuthConfigRetries;
80
+ }
81
+ if (optionalParams.fetchBotAuthConfigRetryInterval) {
82
+ this.fetchBotAuthConfigRetryInterval = optionalParams.fetchBotAuthConfigRetryInterval;
83
+ }
75
84
  }
76
85
  applicable(activity) {
77
86
  var _activity$attachments;
@@ -110,7 +119,7 @@ class BotAuthActivitySubscriber {
110
119
  _omnichannelChatComponents.BroadcastService.postMessage(event);
111
120
  }
112
121
  try {
113
- const response = await fetchBotAuthConfig(fetchBotAuthConfigRetries);
122
+ const response = await fetchBotAuthConfig(this.fetchBotAuthConfigRetries, this.fetchBotAuthConfigRetryInterval);
114
123
  if (response === false) {
115
124
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
116
125
  Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderHideCard
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HiddenAdaptiveCardActivitySubscriber = void 0;
7
+ var _Constants = require("../../../../common/Constants");
8
+ var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
9
+ var _TelemetryHelper = require("../../../../common/telemetry/TelemetryHelper");
10
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
+ class HiddenAdaptiveCardActivitySubscriber {
15
+ constructor() {
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ _defineProperty(this, "observer", void 0);
18
+ }
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ async apply(activity) {
21
+ const {
22
+ attachments,
23
+ attachment
24
+ } = activity;
25
+ this.observer.next(false);
26
+ _omnichannelChatComponents.BroadcastService.postMessage({
27
+ eventName: _TelemetryConstants.BroadcastEvent.NewMessageReceived,
28
+ payload: {
29
+ attachments: attachments || [attachment],
30
+ text: "Custom Event"
31
+ }
32
+ });
33
+ return;
34
+ }
35
+
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
37
+ applicable(activity) {
38
+ const {
39
+ attachments,
40
+ attachment
41
+ } = activity;
42
+
43
+ // Use `attachments` or `attachment` (whichever exists)
44
+ const cards = attachments || [attachment];
45
+
46
+ // Check if contentType is "AdaptiveCard"
47
+ const adaptiveCard = cards === null || cards === void 0 ? void 0 : cards.find(
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ item => _Constants.Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
50
+ if (adaptiveCard && adaptiveCard.content) {
51
+ const {
52
+ body
53
+ } = adaptiveCard.content;
54
+ if (Array.isArray(body)) {
55
+ // Check if all elements in `body` have `isVisible: false`
56
+ const allInvisible = body.every(item => item.isVisible === false);
57
+ if (allInvisible) {
58
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
59
+ Event: _TelemetryConstants.TelemetryEvent.HiddenAdaptiveCardMessageReceived,
60
+ Description: "All elements in AdaptiveCard are invisible"
61
+ });
62
+ return true;
63
+ }
64
+ }
65
+ }
66
+ return false;
67
+ }
68
+
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ async next(activity) {
71
+ if (this.applicable(activity)) {
72
+ return await this.apply(activity);
73
+ }
74
+ return activity;
75
+ }
76
+ }
77
+ exports.HiddenAdaptiveCardActivitySubscriber = HiddenAdaptiveCardActivitySubscriber;
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.handleChatDisconnect = void 0;
7
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
7
8
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
8
9
  var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
9
- var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
10
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
10
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
11
+ var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
12
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
13
  const handleChatDisconnect = (props, state, setWebChatStyles) => {
14
14
  var _state$appStates, _state$domainStates, _state$domainStates$m, _props$webChatContain, _props$webChatContain2;
@@ -11,8 +11,14 @@ var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/c
11
11
  var _ChatAdapterShim = require("./ChatAdapterShim");
12
12
  var _PauseActivitySubscriber = require("./ActivitySubscriber/PauseActivitySubscriber");
13
13
  var _BotAuthActivitySubscriber = require("./ActivitySubscriber/BotAuthActivitySubscriber");
14
+ var _HiddenAdaptiveCardActivitySubscriber = require("./ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber");
15
+ const defaultBotAuthConfig = {
16
+ fetchBotAuthConfigRetries: 3,
17
+ fetchBotAuthConfigRetryInterval: 1000
18
+ };
19
+
14
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- const createAdapter = async chatSDK => {
21
+ const createAdapter = async (chatSDK, props) => {
16
22
  const chatAdapterOptionalParams = {
17
23
  IC3Adapter: {
18
24
  options: {
@@ -38,9 +44,16 @@ const createAdapter = async chatSDK => {
38
44
  let adapter = await chatSDK.createChatAdapter(chatAdapterOptionalParams);
39
45
  //so far, there is no need to convert to the shim adapter when using visual tests
40
46
  if (chatSDK.isMockModeOn !== true) {
47
+ var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _props$webChatContain4;
48
+ const botAuthActivitySubscriberOptionalParams = {
49
+ fetchBotAuthConfigRetries: (props === null || props === void 0 ? void 0 : (_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : (_props$webChatContain2 = _props$webChatContain.botAuthConfig) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.fetchBotAuthConfigRetries) || defaultBotAuthConfig.fetchBotAuthConfigRetries,
50
+ fetchBotAuthConfigRetryInterval: (props === null || props === void 0 ? void 0 : (_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : (_props$webChatContain4 = _props$webChatContain3.botAuthConfig) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.fetchBotAuthConfigRetryInterval) || defaultBotAuthConfig.fetchBotAuthConfigRetryInterval
51
+ };
41
52
  adapter = new _ChatAdapterShim.ChatAdapterShim(adapter);
42
53
  adapter.addSubscriber(new _PauseActivitySubscriber.PauseActivitySubscriber());
43
- adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber());
54
+ adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber(botAuthActivitySubscriberOptionalParams));
55
+ // Remove this code after ICM ID:544623085 is fixed
56
+ adapter.addSubscriber(new _HiddenAdaptiveCardActivitySubscriber.HiddenAdaptiveCardActivitySubscriber());
44
57
  return adapter.chatAdapter;
45
58
  }
46
59
  return adapter;
@@ -4,12 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createInternetConnectionChangeHandler = void 0;
7
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
7
9
  var _Constants = require("../../../common/Constants");
8
10
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
9
11
  var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
10
- var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
11
12
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
12
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
13
+ var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
13
14
  const isInternetConnected = async () => {
14
15
  try {
15
16
  const response = await fetch(_Constants.Constants.internetConnectionTestUrl);
@@ -32,6 +33,9 @@ const createInternetConnectionChangeHandler = async () => {
32
33
  Event: _TelemetryConstants.TelemetryEvent.NetworkReconnected
33
34
  });
34
35
  _NotificationHandler.NotificationHandler.notifySuccess(_NotificationScenarios.NotificationScenarios.InternetConnection, _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_INTERNET_BACK_ONLINE);
36
+ _omnichannelChatComponents.BroadcastService.postMessage({
37
+ eventName: _TelemetryConstants.BroadcastEvent.NetworkReconnected
38
+ });
35
39
  }
36
40
  };
37
41
 
@@ -7,8 +7,8 @@ exports.createMarkdown = void 0;
7
7
  var _Constants = require("../../../common/Constants");
8
8
  var _markdownIt = _interopRequireDefault(require("markdown-it"));
9
9
  var _markdownItForInline = _interopRequireDefault(require("markdown-it-for-inline"));
10
- var _slackMarkdownIt = _interopRequireDefault(require("slack-markdown-it"));
11
10
  var _defaultMarkdownLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts");
11
+ var _markdownHelper = require("./helpers/markdownHelper");
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
14
  const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdownSupport) => {
@@ -19,7 +19,7 @@ const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdown
19
19
  linkify: true,
20
20
  breaks: !disableNewLineMarkdownSupport
21
21
  });
22
- markdown.use(_slackMarkdownIt.default);
22
+ markdown = (0, _markdownHelper.addSlackMarkdownIt)(markdown);
23
23
  } else {
24
24
  markdown = new _markdownIt.default(_Constants.Constants.Zero, {
25
25
  html: true,
@@ -141,12 +141,27 @@ const endChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatSt
141
141
  await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
142
142
  await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
143
143
  } catch (ex) {
144
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
145
- Event: _TelemetryConstants.TelemetryEvent.EndChatSDKCallFailed,
146
- ExceptionDetails: {
147
- exception: ex
148
- }
144
+ var _inMemoryState$appSta;
145
+ const inMemoryState = (0, _createReducer.executeReducer)(state, {
146
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
147
+ payload: null
149
148
  });
149
+ // if the chat was disconnected or ended by the agent, we don't want to log the error
150
+ if (!(inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta = inMemoryState.appStates) !== null && _inMemoryState$appSta !== void 0 && _inMemoryState$appSta.chatDisconnectEventReceived)) {
151
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
152
+ Event: _TelemetryConstants.TelemetryEvent.EndChatSDKCallFailed,
153
+ ExceptionDetails: {
154
+ exception: ex
155
+ }
156
+ });
157
+ } else {
158
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.WARN, {
159
+ Event: _TelemetryConstants.TelemetryEvent.DisconnectEndChatSDKCallFailed,
160
+ ExceptionDetails: {
161
+ exception: ex
162
+ }
163
+ });
164
+ }
150
165
  postMessageToOtherTab = false;
151
166
  } finally {
152
167
  await endChatStateCleanUp(dispatch);
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getMockChatSDKIfApplicable = void 0;
7
+ var _DemoChatSDK = require("../../webchatcontainerstateful/common/DemoChatSDK");
8
+ var _DesignerChatSDK = require("../../webchatcontainerstateful/common/DesignerChatSDK");
9
+ var _mockchatsdk = require("../../webchatcontainerstateful/common/mockchatsdk");
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const getMockChatSDKIfApplicable = (chatSDK, type) => {
12
+ if (type) {
13
+ switch (type.toLowerCase()) {
14
+ case "demo":
15
+ chatSDK = new _DemoChatSDK.DemoChatSDK();
16
+ break;
17
+ case "designer":
18
+ chatSDK = new _DesignerChatSDK.DesignerChatSDK();
19
+ break;
20
+ default:
21
+ chatSDK = new _mockchatsdk.MockChatSDK();
22
+ }
23
+ }
24
+ return chatSDK;
25
+ };
26
+ exports.getMockChatSDKIfApplicable = getMockChatSDKIfApplicable;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addSlackMarkdownIt = void 0;
7
+ var _slackMarkdownIt = _interopRequireDefault(require("slack-markdown-it"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const addSlackMarkdownIt = markdown => {
10
+ try {
11
+ markdown.use(_slackMarkdownIt.default);
12
+ } catch (e) {
13
+ // this is to support the case when slack-markdown-it
14
+ // transpiled code doesn't export default (webpack5)
15
+ if (_slackMarkdownIt.default.default.apply) {
16
+ markdown.use(_slackMarkdownIt.default.default);
17
+ } else {
18
+ console.error("Error while adding slackMarkdown plugin", e);
19
+ }
20
+ }
21
+ return markdown;
22
+ };
23
+ exports.addSlackMarkdownIt = addSlackMarkdownIt;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const overridePropsOnMockIfApplicable = props => {
8
+ var _props$mock, _props$mock2;
9
+ if (props !== null && props !== void 0 && (_props$mock = props.mock) !== null && _props$mock !== void 0 && _props$mock.type && (props === null || props === void 0 ? void 0 : (_props$mock2 = props.mock) === null || _props$mock2 === void 0 ? void 0 : _props$mock2.type.toLowerCase()) === "designer") {
10
+ if (!props.webChatContainerProps) {
11
+ props.webChatContainerProps = {};
12
+ }
13
+ if (!props.webChatContainerProps.webChatProps) {
14
+ props.webChatContainerProps.webChatProps = {};
15
+ }
16
+ if (!props.webChatContainerProps.webChatStyles) {
17
+ props.webChatContainerProps.webChatStyles = {};
18
+ }
19
+ if (!props.webChatContainerProps.webChatProps.overrideLocalizedStrings) {
20
+ props.webChatContainerProps.webChatProps.overrideLocalizedStrings = {};
21
+ }
22
+ props.webChatContainerProps = {
23
+ ...props.webChatContainerProps,
24
+ webChatProps: {
25
+ disabled: true,
26
+ ...props.webChatContainerProps.webChatProps,
27
+ overrideLocalizedStrings: {
28
+ TEXT_INPUT_PLACEHOLDER: "Send a message . . .",
29
+ ...props.webChatContainerProps.webChatProps.overrideLocalizedStrings
30
+ }
31
+ },
32
+ webChatStyles: {
33
+ hideUploadButton: false,
34
+ sendBoxBackground: "rgb(243, 242, 241)",
35
+ ...props.webChatContainerProps.webChatStyles
36
+ }
37
+ };
38
+ }
39
+ };
40
+ var _default = overridePropsOnMockIfApplicable;
41
+ exports.default = _default;
@@ -11,7 +11,8 @@ const shouldSetPreChatIfPersistentChat = async (chatSDK, conversationMode, showP
11
11
  let skipPreChat = false;
12
12
  if (persistentEnabled) {
13
13
  const reconnectableChatsParams = {
14
- authenticatedUserToken: chatSDK.authenticatedUserToken
14
+ authenticatedUserToken: chatSDK.authenticatedUserToken,
15
+ requestId: chatSDK.requestId
15
16
  };
16
17
  try {
17
18
  const reconnectableChatsResponse = await chatSDK.OCClient.getReconnectableChats(reconnectableChatsParams);
@@ -8,21 +8,21 @@ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants"
8
8
  var _Constants = require("../../../common/Constants");
9
9
  var _utils = require("../../../common/utils");
10
10
  var _authHelper = require("./authHelper");
11
+ var _reconnectChatHelper = require("./reconnectChatHelper");
12
+ var _startChatErrorHandler = require("./startChatErrorHandler");
11
13
  var _ActivityStreamHandler = require("./ActivityStreamHandler");
12
14
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
15
  var _ConversationState = require("../../../contexts/common/ConversationState");
14
16
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
15
17
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
16
18
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
19
+ var _endChat = require("./endChat");
17
20
  var _createAdapter = require("./createAdapter");
18
21
  var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
19
- var _reconnectChatHelper = require("./reconnectChatHelper");
20
- var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
21
- var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
22
- var _startChatErrorHandler = require("./startChatErrorHandler");
23
- var _endChat = require("./endChat");
24
22
  var _liveChatConfigUtils = require("./liveChatConfigUtils");
23
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
25
24
  var _persistentChatHelper = require("./persistentChatHelper");
25
+ var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
26
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
27
  let optionalParams = {};
28
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -48,6 +48,7 @@ const setAuthenticationIfApplicable = async (props, chatSDK) => {
48
48
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
49
49
  optionalParams = {}; //Resetting to ensure no stale values
50
50
  widgetInstanceId = (0, _utils.getWidgetCacheIdfromProps)(props);
51
+
51
52
  // reconnect > chat from cache
52
53
  if ((0, _reconnectChatHelper.isReconnectEnabled)(props.chatConfig) === true && !(0, _reconnectChatHelper.isPersistentEnabled)(props.chatConfig)) {
53
54
  const shouldStartChatNormally = await (0, _reconnectChatHelper.handleChatReconnect)(chatSDK, props, dispatch, setAdapter, initStartChat, state);
@@ -69,7 +70,11 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
69
70
  // Setting Proactive chat settings
70
71
  const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
71
72
  const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat;
72
- await setAuthenticationIfApplicable(props, chatSDK);
73
+
74
+ // Setting auth settings to OC API to retrieve existing persistent chat session before start chat if any
75
+ if ((0, _reconnectChatHelper.isPersistentEnabled)(props.chatConfig)) {
76
+ await setAuthenticationIfApplicable(props, chatSDK);
77
+ }
73
78
 
74
79
  //Setting PreChat and intiate chat
75
80
  await setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat, state, props);
@@ -153,7 +158,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
153
158
  (0, _endChat.chatSDKStateCleanUp)(chatSDK);
154
159
  }
155
160
  try {
156
- var _state$appStates2, _newAdapter$activity$;
161
+ var _state$appStates2;
157
162
  // Clear disconnect state on start chat
158
163
  (state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.chatDisconnectEventReceived) && dispatch({
159
164
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_DISCONNECT_EVENT_RECEIVED,
@@ -167,6 +172,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
167
172
  Description: "Widget loading started"
168
173
  });
169
174
 
175
+ // Auth token retrieval needs to happen during start chat to support pop-out chat
176
+ await setAuthenticationIfApplicable(props, chatSDK);
177
+
170
178
  //Check if chat retrieved from cache
171
179
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
172
180
  var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
@@ -201,16 +209,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
201
209
  isStartChatSuccessful = false;
202
210
  throw error;
203
211
  }
204
-
205
- // New adapter creation
206
- const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
207
- setAdapter(newAdapter);
208
- const chatToken = await chatSDK.getChatToken();
209
- dispatch({
210
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
211
- payload: chatToken
212
- });
213
- newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe((0, _newMessageEventHandler.createOnNewAdapterActivityHandler)(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
212
+ await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter, props);
214
213
 
215
214
  // Set app state to Active
216
215
  if (isStartChatSuccessful) {
@@ -231,27 +230,26 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
231
230
  payload: persistedState
232
231
  });
233
232
  (0, _startChatErrorHandler.logWidgetLoadComplete)(_Constants.WidgetLoadTelemetryMessage.PersistedStateRetrievedMessage);
234
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
233
+ // Set post chat context in state, load in background to do not block the load
234
+ (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
235
235
  return;
236
236
  }
237
237
 
238
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
239
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
240
-
241
238
  // Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
242
239
  if (!persistentChatEnabled) {
240
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
241
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
243
243
  dispatch({
244
244
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
245
245
  payload: liveChatContext
246
246
  });
247
247
  }
248
248
  (0, _startChatErrorHandler.logWidgetLoadComplete)();
249
- // Set post chat context in state
250
- // Commenting this for now as post chat context is fetched during end chat
251
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
252
-
249
+ // Set post chat context in state, load in background to do not block the load
250
+ (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
253
251
  // Updating chat session detail for telemetry
254
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch);
252
+ await (0, _updateSessionDataForTelemetry.updateTelemetryData)(chatSDK, dispatch);
255
253
  } catch (ex) {
256
254
  (0, _startChatErrorHandler.handleStartChatError)(dispatch, chatSDK, props, ex, isStartChatSuccessful);
257
255
  } finally {
@@ -262,6 +260,19 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
262
260
 
263
261
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
264
262
  exports.initStartChat = initStartChat;
263
+ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter, props) => {
264
+ var _newAdapter$activity$;
265
+ // New adapter creation
266
+ const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK, props);
267
+ setAdapter(newAdapter);
268
+ const chatToken = await chatSDK.getChatToken();
269
+ dispatch({
270
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
271
+ payload: chatToken
272
+ });
273
+ newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe((0, _newMessageEventHandler.createOnNewAdapterActivityHandler)(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
274
+ };
275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
276
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
266
277
  var _state$appStates3, _persistedState$domai6, _persistedState$appSt;
267
278
  // By pass this function in case of popout chat
@@ -349,10 +360,8 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
349
360
  var _state$domainStates8, _state$domainStates8$, _state$domainStates9;
350
361
  const requestIdFromCache = (_state$domainStates8 = state.domainStates) === null || _state$domainStates8 === void 0 ? void 0 : (_state$domainStates8$ = _state$domainStates8.liveChatContext) === null || _state$domainStates8$ === void 0 ? void 0 : _state$domainStates8$.requestId;
351
362
  const liveChatContext = state === null || state === void 0 ? void 0 : (_state$domainStates9 = state.domainStates) === null || _state$domainStates9 === void 0 ? void 0 : _state$domainStates9.liveChatContext;
352
-
353
363
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
354
364
  let conversationDetails = undefined;
355
-
356
365
  // Preserve current requestId
357
366
  const currentRequestId = chatSDK.requestId ?? "";
358
367
  dispatch({