@microsoft/omnichannel-chat-widget 1.7.3-main.c8bb80a → 1.7.3-main.fee24eb

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 (48) hide show
  1. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +6 -1
  2. package/lib/cjs/components/livechatwidget/common/getMockChatSDKIfApplicable.js +26 -0
  3. package/lib/cjs/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +41 -0
  4. package/lib/cjs/components/livechatwidget/common/startChat.js +28 -27
  5. package/lib/cjs/components/livechatwidget/common/startChatErrorHandler.js +6 -6
  6. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +8 -3
  7. package/lib/cjs/components/livechatwidget/interfaces/IMockProps.js +7 -0
  8. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatAdapter.js +87 -0
  9. package/lib/cjs/components/webchatcontainerstateful/common/DemoChatSDK.js +17 -0
  10. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatAdapter.js +41 -0
  11. package/lib/cjs/components/webchatcontainerstateful/common/DesignerChatSDK.js +17 -0
  12. package/lib/cjs/components/webchatcontainerstateful/common/MockBotCardCommandType.js +14 -0
  13. package/lib/cjs/components/webchatcontainerstateful/common/MockBotCommand.js +19 -0
  14. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  15. package/lib/cjs/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.js +71 -0
  16. package/lib/cjs/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +90 -0
  17. package/lib/esm/components/livechatwidget/LiveChatWidget.js +6 -1
  18. package/lib/esm/components/livechatwidget/common/getMockChatSDKIfApplicable.js +20 -0
  19. package/lib/esm/components/livechatwidget/common/overridePropsOnMockIfApplicable.js +34 -0
  20. package/lib/esm/components/livechatwidget/common/startChat.js +28 -27
  21. package/lib/esm/components/livechatwidget/common/startChatErrorHandler.js +7 -7
  22. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +7 -2
  23. package/lib/esm/components/livechatwidget/interfaces/IMockProps.js +6 -0
  24. package/lib/esm/components/webchatcontainerstateful/common/DemoChatAdapter.js +79 -0
  25. package/lib/esm/components/webchatcontainerstateful/common/DemoChatSDK.js +10 -0
  26. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatAdapter.js +33 -0
  27. package/lib/esm/components/webchatcontainerstateful/common/DesignerChatSDK.js +10 -0
  28. package/lib/esm/components/webchatcontainerstateful/common/MockBotCardCommandType.js +7 -0
  29. package/lib/esm/components/webchatcontainerstateful/common/MockBotCommand.js +12 -0
  30. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -0
  31. package/lib/esm/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.js +61 -0
  32. package/lib/esm/components/webchatcontainerstateful/common/utils/chatAdapterUtils.js +77 -0
  33. package/lib/types/components/livechatwidget/common/getMockChatSDKIfApplicable.d.ts +1 -0
  34. package/lib/types/components/livechatwidget/common/overridePropsOnMockIfApplicable.d.ts +3 -0
  35. package/lib/types/components/livechatwidget/common/updateSessionDataForTelemetry.d.ts +1 -1
  36. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
  37. package/lib/types/components/livechatwidget/interfaces/IMockProps.d.ts +8 -0
  38. package/lib/types/components/webchatcontainerstateful/common/DemoChatAdapter.d.ts +10 -0
  39. package/lib/types/components/webchatcontainerstateful/common/DemoChatSDK.d.ts +6 -0
  40. package/lib/types/components/webchatcontainerstateful/common/DesignerChatAdapter.d.ts +8 -0
  41. package/lib/types/components/webchatcontainerstateful/common/DesignerChatSDK.d.ts +6 -0
  42. package/lib/types/components/webchatcontainerstateful/common/MockBotCardCommandType.d.ts +6 -0
  43. package/lib/types/components/webchatcontainerstateful/common/MockBotCommand.d.ts +11 -0
  44. package/lib/types/components/webchatcontainerstateful/common/mockadapter.d.ts +2 -1
  45. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +6 -0
  46. package/lib/types/components/webchatcontainerstateful/common/utils/attachmentActivityUtils.d.ts +9 -0
  47. package/lib/types/components/webchatcontainerstateful/common/utils/chatAdapterUtils.d.ts +9 -0
  48. package/package.json +1 -1
@@ -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, {
@@ -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,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;
@@ -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
@@ -158,7 +158,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
158
158
  (0, _endChat.chatSDKStateCleanUp)(chatSDK);
159
159
  }
160
160
  try {
161
- var _state$appStates2, _newAdapter$activity$;
161
+ var _state$appStates2;
162
162
  // Clear disconnect state on start chat
163
163
  (state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.chatDisconnectEventReceived) && dispatch({
164
164
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_DISCONNECT_EVENT_RECEIVED,
@@ -209,16 +209,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
209
209
  isStartChatSuccessful = false;
210
210
  throw error;
211
211
  }
212
-
213
- // New adapter creation
214
- const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
215
- setAdapter(newAdapter);
216
- const chatToken = await chatSDK.getChatToken();
217
- dispatch({
218
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
219
- payload: chatToken
220
- });
221
- 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);
222
213
 
223
214
  // Set app state to Active
224
215
  if (isStartChatSuccessful) {
@@ -239,27 +230,26 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
239
230
  payload: persistedState
240
231
  });
241
232
  (0, _startChatErrorHandler.logWidgetLoadComplete)(_Constants.WidgetLoadTelemetryMessage.PersistedStateRetrievedMessage);
242
- 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);
243
235
  return;
244
236
  }
245
237
 
246
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
247
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
248
-
249
238
  // Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
250
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
251
243
  dispatch({
252
244
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
253
245
  payload: liveChatContext
254
246
  });
255
247
  }
256
248
  (0, _startChatErrorHandler.logWidgetLoadComplete)();
257
- // Set post chat context in state
258
- // Commenting this for now as post chat context is fetched during end chat
259
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
260
-
249
+ // Set post chat context in state, load in background to do not block the load
250
+ (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
261
251
  // Updating chat session detail for telemetry
262
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch);
252
+ await (0, _updateSessionDataForTelemetry.updateTelemetryData)(chatSDK, dispatch);
263
253
  } catch (ex) {
264
254
  (0, _startChatErrorHandler.handleStartChatError)(dispatch, chatSDK, props, ex, isStartChatSuccessful);
265
255
  } finally {
@@ -270,6 +260,19 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
270
260
 
271
261
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
272
262
  exports.initStartChat = initStartChat;
263
+ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter) => {
264
+ var _newAdapter$activity$;
265
+ // New adapter creation
266
+ const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
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
273
276
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
274
277
  var _state$appStates3, _persistedState$domai6, _persistedState$appSt;
275
278
  // By pass this function in case of popout chat
@@ -357,10 +360,8 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
357
360
  var _state$domainStates8, _state$domainStates8$, _state$domainStates9;
358
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;
359
362
  const liveChatContext = state === null || state === void 0 ? void 0 : (_state$domainStates9 = state.domainStates) === null || _state$domainStates9 === void 0 ? void 0 : _state$domainStates9.liveChatContext;
360
-
361
363
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
364
  let conversationDetails = undefined;
363
-
364
365
  // Preserve current requestId
365
366
  const currentRequestId = chatSDK.requestId ?? "";
366
367
  dispatch({
@@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.logWidgetLoadComplete = exports.handleStartChatError = void 0;
7
7
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
8
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
- var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
10
- var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
11
- var _ConversationState = require("../../../contexts/common/ConversationState");
12
- var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
9
+ var _Constants = require("../../../common/Constants");
13
10
  var _endChat = require("./endChat");
11
+ var _ConversationState = require("../../../contexts/common/ConversationState");
14
12
  var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
- var _utils = require("../../../common/utils");
16
- var _Constants = require("../../../common/Constants");
13
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
14
  var _StartChatFailureType = require("../../../contexts/common/StartChatFailureType");
15
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
16
+ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
17
+ var _utils = require("../../../common/utils");
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  const handleStartChatError = (dispatch, chatSDK, props, ex, isStartChatSuccessful) => {
20
20
  var _props$controlProps;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.updateSessionDataForTelemetry = void 0;
6
+ exports.updateTelemetryData = void 0;
7
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
8
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
9
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
@@ -11,6 +11,13 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
11
11
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
12
12
  var _utils = require("../../../common/utils");
13
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ const updateTelemetryData = async (chatSDK, dispatch) => {
15
+ // load it concurrently, this will reduce the load time
16
+ await Promise.all([updateSessionDataForTelemetry(chatSDK, dispatch), updateConversationDataForTelemetry(chatSDK, dispatch)]);
17
+ };
18
+
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ exports.updateTelemetryData = updateTelemetryData;
14
21
  const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
15
22
  if (chatSDK) {
16
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -26,12 +33,10 @@ const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
26
33
  chatSession
27
34
  }
28
35
  });
29
- await updateConversationDataForTelemetry(chatSDK, dispatch);
30
36
  }
31
37
  };
32
38
 
33
39
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
- exports.updateSessionDataForTelemetry = updateSessionDataForTelemetry;
35
40
  const updateConversationDataForTelemetry = async (chatSDK, dispatch) => {
36
41
  if (chatSDK) {
37
42
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var LiveChatWidgetMockType;
4
+ (function (LiveChatWidgetMockType) {
5
+ LiveChatWidgetMockType["Test"] = "Test";
6
+ LiveChatWidgetMockType["Demo"] = "Demo";
7
+ })(LiveChatWidgetMockType || (LiveChatWidgetMockType = {}));
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DemoChatAdapter = void 0;
7
+ require("rxjs/add/operator/share");
8
+ require("rxjs/add/observable/of");
9
+ var _Observable = require("rxjs/Observable");
10
+ var _mockadapter = _interopRequireDefault(require("./mockadapter"));
11
+ var _chatAdapterUtils = require("./utils/chatAdapterUtils");
12
+ var _attachmentActivityUtils = require("./utils/attachmentActivityUtils");
13
+ var _MockBotCommand = _interopRequireDefault(require("./MockBotCommand"));
14
+ var _MockBotCardCommandType = _interopRequireDefault(require("./MockBotCardCommandType"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ class DemoChatAdapter extends _mockadapter.default {
17
+ constructor() {
18
+ super();
19
+ setTimeout(() => {
20
+ (0, _chatAdapterUtils.postSystemMessageActivity)(this.activityObserver, "You're currently using a demo.", 0);
21
+ (0, _chatAdapterUtils.postBotMessageActivity)(this.activityObserver, "Type `/help` to learn more", undefined, 0); // send init message from bot
22
+ }, 1000);
23
+ }
24
+ postBotCommandsActivity() {
25
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
26
+ (0, _chatAdapterUtils.postBotAttachmentActivity)(this.activityObserver, [{
27
+ contentType: "application/vnd.microsoft.card.thumbnail",
28
+ content: {
29
+ buttons: [{
30
+ title: "Send system message",
31
+ type: "imBack",
32
+ value: "send system message"
33
+ }, {
34
+ title: "Send typing",
35
+ type: "imBack",
36
+ value: "send typing"
37
+ }, {
38
+ title: "Send bot message",
39
+ type: "imBack",
40
+ value: "send bot message"
41
+ }],
42
+ title: "Commands"
43
+ }
44
+ }], delay);
45
+ }
46
+ postActivity(activity) {
47
+ if (activity) {
48
+ (0, _chatAdapterUtils.postEchoActivity)(this.activityObserver, activity, _chatAdapterUtils.customerUser);
49
+ if (activity.text) {
50
+ switch (true) {
51
+ case activity.text === _MockBotCommand.default.Help:
52
+ this.postBotCommandsActivity();
53
+ break;
54
+ case activity.text === _MockBotCommand.default.SendSystemMessage:
55
+ (0, _chatAdapterUtils.postSystemMessageActivity)(this.activityObserver, "Contoso has joined the chat.");
56
+ break;
57
+ case activity.text === _MockBotCommand.default.SendTyping:
58
+ (0, _chatAdapterUtils.postBotTypingActivity)(this.activityObserver);
59
+ break;
60
+ case activity.text === _MockBotCommand.default.SendAttachment:
61
+ (0, _chatAdapterUtils.postBotAttachmentActivity)(this.activityObserver, [(0, _attachmentActivityUtils.createJpgFileAttachment)()]);
62
+ break;
63
+ case activity.text === _MockBotCommand.default.SendBotMessage:
64
+ (0, _chatAdapterUtils.postBotMessageActivity)(this.activityObserver, "Hi, how can I help you?");
65
+ break;
66
+ case activity.text === `${_MockBotCommand.default.Card} ${_MockBotCardCommandType.default.Signin}`:
67
+ (0, _chatAdapterUtils.postBotAttachmentActivity)(this.activityObserver, [(0, _attachmentActivityUtils.createSigninCardAttachment)()]);
68
+ break;
69
+ case activity.text === `${_MockBotCommand.default.Card} ${_MockBotCardCommandType.default.Hero}`:
70
+ (0, _chatAdapterUtils.postBotAttachmentActivity)(this.activityObserver, [(0, _attachmentActivityUtils.createHeroCardAttachment)()]);
71
+ break;
72
+ case activity.text === `${_MockBotCommand.default.Card} ${_MockBotCardCommandType.default.Thumbnail}`:
73
+ (0, _chatAdapterUtils.postBotAttachmentActivity)(this.activityObserver, [(0, _attachmentActivityUtils.createThumbnailCardAttachment)()]);
74
+ break;
75
+ case activity.text.startsWith(`${_MockBotCommand.default.Bot} `):
76
+ (0, _chatAdapterUtils.postBotMessageActivity)(this.activityObserver, activity.text.substring(5));
77
+ break;
78
+ case activity.text.startsWith(`${_MockBotCommand.default.System} `):
79
+ (0, _chatAdapterUtils.postSystemMessageActivity)(this.activityObserver, activity.text.substring(8));
80
+ break;
81
+ }
82
+ }
83
+ }
84
+ return _Observable.Observable.of(activity.id || "");
85
+ }
86
+ }
87
+ exports.DemoChatAdapter = DemoChatAdapter;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DemoChatSDK = void 0;
7
+ var _DemoChatAdapter = require("./DemoChatAdapter");
8
+ var _mockchatsdk = require("./mockchatsdk");
9
+ class DemoChatSDK extends _mockchatsdk.MockChatSDK {
10
+ constructor() {
11
+ super();
12
+ }
13
+ createChatAdapter() {
14
+ return new _DemoChatAdapter.DemoChatAdapter();
15
+ }
16
+ }
17
+ exports.DemoChatSDK = DemoChatSDK;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DesignerChatAdapter = void 0;
7
+ var _Observable = require("rxjs/Observable");
8
+ var _mockadapter = _interopRequireDefault(require("./mockadapter"));
9
+ var _chatAdapterUtils = require("./utils/chatAdapterUtils");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ class DesignerChatAdapter extends _mockadapter.default {
12
+ constructor() {
13
+ super();
14
+ setTimeout(() => {
15
+ (0, _chatAdapterUtils.postBotMessageActivity)(this.activityObserver, "Id venenatis a condimentum vitae?", undefined, 0);
16
+ this.postUserActivity("Diam donec adipiscing tristique risus nec feugiat in fermentum", 0);
17
+ (0, _chatAdapterUtils.postSystemMessageActivity)(this.activityObserver, "We are finding the best agent for your inquiry, please hold ...", 100);
18
+ (0, _chatAdapterUtils.postSystemMessageActivity)(this.activityObserver, "John has joined the chat", 100);
19
+ (0, _chatAdapterUtils.postBotMessageActivity)(this.activityObserver, "Neque viverra justo nec ultrices dui sapien eget mi proin", undefined, 100);
20
+ }, 1000);
21
+ }
22
+ postUserActivity(text) {
23
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;
24
+ setTimeout(() => {
25
+ (0, _chatAdapterUtils.postEchoActivity)(this.activityObserver, {
26
+ text,
27
+ from: {
28
+ ..._chatAdapterUtils.customerUser
29
+ },
30
+ type: "message"
31
+ }, _chatAdapterUtils.customerUser, 0);
32
+ }, delay);
33
+ }
34
+ postActivity(activity) {
35
+ if (activity) {
36
+ (0, _chatAdapterUtils.postEchoActivity)(this.activityObserver, activity, _chatAdapterUtils.customerUser);
37
+ }
38
+ return _Observable.Observable.of(activity.id || "");
39
+ }
40
+ }
41
+ exports.DesignerChatAdapter = DesignerChatAdapter;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DesignerChatSDK = void 0;
7
+ var _DesignerChatAdapter = require("./DesignerChatAdapter");
8
+ var _mockchatsdk = require("./mockchatsdk");
9
+ class DesignerChatSDK extends _mockchatsdk.MockChatSDK {
10
+ constructor() {
11
+ super();
12
+ }
13
+ createChatAdapter() {
14
+ return new _DesignerChatAdapter.DesignerChatAdapter();
15
+ }
16
+ }
17
+ exports.DesignerChatSDK = DesignerChatSDK;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var MockBotCardCommandType;
8
+ (function (MockBotCardCommandType) {
9
+ MockBotCardCommandType["Hero"] = "hero";
10
+ MockBotCardCommandType["Signin"] = "signin";
11
+ MockBotCardCommandType["Thumbnail"] = "thumbnail";
12
+ })(MockBotCardCommandType || (MockBotCardCommandType = {}));
13
+ var _default = MockBotCardCommandType;
14
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var MockBotCommand;
8
+ (function (MockBotCommand) {
9
+ MockBotCommand["Bot"] = "/bot";
10
+ MockBotCommand["Card"] = "/card";
11
+ MockBotCommand["Help"] = "/help";
12
+ MockBotCommand["SendAttachment"] = "send attachment";
13
+ MockBotCommand["SendBotMessage"] = "send bot message";
14
+ MockBotCommand["SendSystemMessage"] = "send system message";
15
+ MockBotCommand["SendTyping"] = "send typing";
16
+ MockBotCommand["System"] = "/system";
17
+ })(MockBotCommand || (MockBotCommand = {}));
18
+ var _default = MockBotCommand;
19
+ exports.default = _default;
@@ -21,6 +21,9 @@ class MockChatSDK {
21
21
  orgUrl: "https://contoso.crm.dynamics.com"
22
22
  });
23
23
  }
24
+ async initialize() {
25
+ return this.getLiveChatConfig();
26
+ }
24
27
  async startChat() {
25
28
  await this.sleep(1000);
26
29
  }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createThumbnailCardAttachment = exports.createSigninCardAttachment = exports.createJpgFileAttachment = exports.createHeroCardAttachment = void 0;
7
+ const createJpgFileAttachment = () => {
8
+ return {
9
+ contentType: "image/jpeg",
10
+ name: "600x400.jpg",
11
+ contentUrl: "https://raw.githubusercontent.com/microsoft/omnichannel-chat-sdk/e7e75d4ede351e1cf2e52f13860d2284848c4af0/playwright/public/images/600x400.jpg"
12
+ };
13
+ };
14
+ exports.createJpgFileAttachment = createJpgFileAttachment;
15
+ const createHeroCardAttachment = () => {
16
+ return {
17
+ contentType: "application/vnd.microsoft.card.hero",
18
+ content: {
19
+ buttons: [{
20
+ title: "Bellevue",
21
+ type: "imBack",
22
+ value: "Bellevue"
23
+ }, {
24
+ title: "Redmond",
25
+ type: "imBack",
26
+ value: "Redmond"
27
+ }, {
28
+ title: "Seattle",
29
+ type: "imBack",
30
+ value: "Seattle"
31
+ }],
32
+ title: "Choose your location"
33
+ }
34
+ };
35
+ };
36
+ exports.createHeroCardAttachment = createHeroCardAttachment;
37
+ const createThumbnailCardAttachment = () => {
38
+ return {
39
+ contentType: "application/vnd.microsoft.card.thumbnail",
40
+ content: {
41
+ title: "Microsoft",
42
+ subtitle: "Our mission is to empower every person and every organization on the planet to achieve more.",
43
+ text: "Microsoft creates platforms and tools powered by AI to deliver innovative solutions that meet the evolving needs of our customers. The technology company is committed to making AI available broadly and doing so responsibly, with a mission to empower every person and every organization on the planet to achieve more.",
44
+ images: [{
45
+ alt: "Microsoft logo",
46
+ url: "https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE1Mu3b?ver=5c31" // logo from https://microsoft.com
47
+ }],
48
+
49
+ buttons: [{
50
+ title: "Learn more",
51
+ type: "openUrl",
52
+ value: "https://www.microsoft.com/"
53
+ }]
54
+ }
55
+ };
56
+ };
57
+ exports.createThumbnailCardAttachment = createThumbnailCardAttachment;
58
+ const createSigninCardAttachment = () => {
59
+ return {
60
+ contentType: "application/vnd.microsoft.card.signin",
61
+ content: {
62
+ text: "Please login",
63
+ buttons: [{
64
+ type: "signin",
65
+ title: "Signin",
66
+ value: "https://login.live.com/"
67
+ }]
68
+ }
69
+ };
70
+ };
71
+ exports.createSigninCardAttachment = createSigninCardAttachment;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.postSystemMessageActivity = exports.postEchoActivity = exports.postBotTypingActivity = exports.postBotMessageActivity = exports.postBotAttachmentActivity = exports.customerUser = exports.botUser = void 0;
7
+ var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
8
+ const customerUser = {
9
+ id: "usedId",
10
+ name: "User",
11
+ role: "user"
12
+ };
13
+ exports.customerUser = customerUser;
14
+ const botUser = {
15
+ id: "botId",
16
+ name: "Bot",
17
+ role: "bot"
18
+ };
19
+
20
+ // WebChat expects an "echo" activity to confirm the message has been sent successfully
21
+ exports.botUser = botUser;
22
+ const postEchoActivity = function (activityObserver, activity, user) {
23
+ let delay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1000;
24
+ const echoActivity = {
25
+ ...activity,
26
+ id: (0, _omnichannelChatSdk.uuidv4)(),
27
+ from: {
28
+ ...activity.from,
29
+ ...user
30
+ },
31
+ timestamp: new Date().toISOString()
32
+ };
33
+ setTimeout(() => {
34
+ activityObserver === null || activityObserver === void 0 ? void 0 : activityObserver.next(echoActivity); // mock message sent activity
35
+ }, delay);
36
+ };
37
+ exports.postEchoActivity = postEchoActivity;
38
+ const postBotMessageActivity = function (activityObserver, text) {
39
+ let tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
40
+ let delay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1000;
41
+ setTimeout(() => {
42
+ activityObserver === null || activityObserver === void 0 ? void 0 : activityObserver.next({
43
+ id: (0, _omnichannelChatSdk.uuidv4)(),
44
+ from: {
45
+ ...botUser
46
+ },
47
+ text,
48
+ type: "message",
49
+ channelData: {
50
+ tags
51
+ },
52
+ timestamp: new Date().toISOString()
53
+ });
54
+ }, delay);
55
+ };
56
+ exports.postBotMessageActivity = postBotMessageActivity;
57
+ const postSystemMessageActivity = function (activityObserver, text) {
58
+ let delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
59
+ postBotMessageActivity(activityObserver, text, "system", delay);
60
+ };
61
+ exports.postSystemMessageActivity = postSystemMessageActivity;
62
+ const postBotTypingActivity = function (activityObserver) {
63
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;
64
+ setTimeout(() => {
65
+ activityObserver === null || activityObserver === void 0 ? void 0 : activityObserver.next({
66
+ id: (0, _omnichannelChatSdk.uuidv4)(),
67
+ from: {
68
+ ...botUser
69
+ },
70
+ type: "typing"
71
+ });
72
+ }, delay);
73
+ };
74
+ exports.postBotTypingActivity = postBotTypingActivity;
75
+ const postBotAttachmentActivity = function (activityObserver) {
76
+ let attachments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
77
+ let delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;
78
+ setTimeout(() => {
79
+ activityObserver === null || activityObserver === void 0 ? void 0 : activityObserver.next({
80
+ id: (0, _omnichannelChatSdk.uuidv4)(),
81
+ from: {
82
+ ...botUser
83
+ },
84
+ attachments,
85
+ type: "message",
86
+ timestamp: new Date().toISOString()
87
+ });
88
+ }, delay);
89
+ };
90
+ exports.postBotAttachmentActivity = postBotAttachmentActivity;