@microsoft/omnichannel-chat-widget 1.7.3-main.aa696dc → 1.7.3-main.b61c751

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.
@@ -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.BotAuthActivityUndefinedSignInId,
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;
@@ -11,6 +11,7 @@ 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");
14
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
16
  const createAdapter = async chatSDK => {
16
17
  const chatAdapterOptionalParams = {
@@ -41,6 +42,8 @@ const createAdapter = async chatSDK => {
41
42
  adapter = new _ChatAdapterShim.ChatAdapterShim(adapter);
42
43
  adapter.addSubscriber(new _PauseActivitySubscriber.PauseActivitySubscriber());
43
44
  adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber());
45
+ // Remove this code after ICM ID:544623085 is fixed
46
+ adapter.addSubscriber(new _HiddenAdaptiveCardActivitySubscriber.HiddenAdaptiveCardActivitySubscriber());
44
47
  return adapter.chatAdapter;
45
48
  }
46
49
  return adapter;
@@ -209,6 +209,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
209
209
  isStartChatSuccessful = false;
210
210
  throw error;
211
211
  }
212
+ await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
212
213
 
213
214
  // Set app state to Active
214
215
  if (isStartChatSuccessful) {
@@ -233,12 +234,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
233
234
  (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
234
235
  return;
235
236
  }
236
- await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
237
237
 
238
238
  // Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
239
239
  if (!persistentChatEnabled) {
240
240
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
241
241
  const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
242
243
  dispatch({
243
244
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
244
245
  payload: liveChatContext
@@ -264,9 +265,7 @@ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter) => {
264
265
  // New adapter creation
265
266
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
266
267
  setAdapter(newAdapter);
267
-
268
- //start chat is already seeding the chat token, so no need to get it again
269
- const chatToken = await chatSDK.getChatToken(true);
268
+ const chatToken = await chatSDK.getChatToken();
270
269
  dispatch({
271
270
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
272
271
  payload: chatToken
@@ -0,0 +1,70 @@
1
+ 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; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ 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); }
4
+ import { Constants } from "../../../../common/Constants";
5
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../../common/telemetry/TelemetryConstants";
6
+ import { TelemetryHelper } from "../../../../common/telemetry/TelemetryHelper";
7
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
8
+ export class HiddenAdaptiveCardActivitySubscriber {
9
+ constructor() {
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ _defineProperty(this, "observer", void 0);
12
+ }
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ async apply(activity) {
15
+ const {
16
+ attachments,
17
+ attachment
18
+ } = activity;
19
+ this.observer.next(false);
20
+ BroadcastService.postMessage({
21
+ eventName: BroadcastEvent.NewMessageReceived,
22
+ payload: {
23
+ attachments: attachments || [attachment],
24
+ text: "Custom Event"
25
+ }
26
+ });
27
+ return;
28
+ }
29
+
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
31
+ applicable(activity) {
32
+ const {
33
+ attachments,
34
+ attachment
35
+ } = activity;
36
+
37
+ // Use `attachments` or `attachment` (whichever exists)
38
+ const cards = attachments || [attachment];
39
+
40
+ // Check if contentType is "AdaptiveCard"
41
+ const adaptiveCard = cards === null || cards === void 0 ? void 0 : cards.find(
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ item => Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
44
+ if (adaptiveCard && adaptiveCard.content) {
45
+ const {
46
+ body
47
+ } = adaptiveCard.content;
48
+ if (Array.isArray(body)) {
49
+ // Check if all elements in `body` have `isVisible: false`
50
+ const allInvisible = body.every(item => item.isVisible === false);
51
+ if (allInvisible) {
52
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
53
+ Event: TelemetryEvent.BotAuthActivityUndefinedSignInId,
54
+ Description: "All elements in AdaptiveCard are invisible"
55
+ });
56
+ return true;
57
+ }
58
+ }
59
+ }
60
+ return false;
61
+ }
62
+
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ async next(activity) {
65
+ if (this.applicable(activity)) {
66
+ return await this.apply(activity);
67
+ }
68
+ return activity;
69
+ }
70
+ }
@@ -5,6 +5,7 @@ import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/
5
5
  import { ChatAdapterShim } from "./ChatAdapterShim";
6
6
  import { PauseActivitySubscriber } from "./ActivitySubscriber/PauseActivitySubscriber";
7
7
  import { BotAuthActivitySubscriber } from "./ActivitySubscriber/BotAuthActivitySubscriber";
8
+ import { HiddenAdaptiveCardActivitySubscriber } from "./ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber";
8
9
 
9
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  export const createAdapter = async chatSDK => {
@@ -36,6 +37,8 @@ export const createAdapter = async chatSDK => {
36
37
  adapter = new ChatAdapterShim(adapter);
37
38
  adapter.addSubscriber(new PauseActivitySubscriber());
38
39
  adapter.addSubscriber(new BotAuthActivitySubscriber());
40
+ // Remove this code after ICM ID:544623085 is fixed
41
+ adapter.addSubscriber(new HiddenAdaptiveCardActivitySubscriber());
39
42
  return adapter.chatAdapter;
40
43
  }
41
44
  return adapter;
@@ -202,6 +202,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
202
202
  isStartChatSuccessful = false;
203
203
  throw error;
204
204
  }
205
+ await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
205
206
 
206
207
  // Set app state to Active
207
208
  if (isStartChatSuccessful) {
@@ -226,12 +227,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
226
227
  setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
227
228
  return;
228
229
  }
229
- await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
230
230
 
231
231
  // Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
232
232
  if (!persistentChatEnabled) {
233
233
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
234
234
  const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
235
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
236
  dispatch({
236
237
  type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
237
238
  payload: liveChatContext
@@ -256,9 +257,7 @@ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter) => {
256
257
  // New adapter creation
257
258
  const newAdapter = await createAdapter(chatSDK);
258
259
  setAdapter(newAdapter);
259
-
260
- //start chat is already seeding the chat token, so no need to get it again
261
- const chatToken = await chatSDK.getChatToken(true);
260
+ const chatToken = await chatSDK.getChatToken();
262
261
  dispatch({
263
262
  type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
264
263
  payload: chatToken
@@ -0,0 +1,7 @@
1
+ import { IActivitySubscriber } from "./IActivitySubscriber";
2
+ export declare class HiddenAdaptiveCardActivitySubscriber implements IActivitySubscriber {
3
+ observer: any;
4
+ apply(activity: any): Promise<void>;
5
+ applicable(activity: any): boolean;
6
+ next(activity: any): Promise<any>;
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/omnichannel-chat-widget",
3
- "version": "1.7.3-main.aa696dc",
3
+ "version": "1.7.3-main.b61c751",
4
4
  "description": "Microsoft Omnichannel Chat Widget",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/types/index.d.ts",