@wildix/xbees-connect 1.3.7 → 1.3.8-alpha.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildix/xbees-connect",
3
- "version": "1.3.6",
3
+ "version": "1.3.8-alpha.2",
4
4
  "description": "This library provides easy communication between x-bees and integrated web applications",
5
5
  "author": "dimitri.chernykh <dimitri.chernykh@wildix.com>",
6
6
  "homepage": "",
@@ -48,6 +48,7 @@ class Client {
48
48
  needAuthorize;
49
49
  isParentReactNativeWebView;
50
50
  iframeId;
51
+ integrationId;
51
52
  variant = null;
52
53
  startPage = null;
53
54
  product = null;
@@ -61,6 +62,7 @@ class Client {
61
62
  this.needAuthorize = params.has(enums_1.UrlParams.AUTHORIZE);
62
63
  this.startPage = params.get(enums_1.UrlParams.START_PAGE);
63
64
  this.product = params.get(enums_1.UrlParams.PRODUCT);
65
+ this.integrationId = params.get(enums_1.UrlParams.ID)?.split('-')[0] ?? '';
64
66
  // @ts-expect-error window.ReactNativeWebView will be provided by ReactNative WebView
65
67
  this.isParentReactNativeWebView = !!window.ReactNativeWebView;
66
68
  this.worker = this.isParentReactNativeWebView ? new PostMessageControllerNative_1.default() : new PostMessageControllerWeb_1.default();
@@ -131,7 +133,11 @@ class Client {
131
133
  ready(props = types_1.SupportedPlatformVariant.ALL) {
132
134
  const payload = typeof props === 'string'
133
135
  ? { version: this.version(), platform: props }
134
- : { version: this.version(), ...props, platform: props.platform ?? types_1.SupportedPlatformVariant.ALL };
136
+ : {
137
+ version: this.version(),
138
+ ...props,
139
+ platform: props.platform ?? types_1.SupportedPlatformVariant.ALL,
140
+ };
135
141
  this.getXBeesUser();
136
142
  return this.sendAsync({
137
143
  type: enums_1.ClientEventType.READY,
@@ -139,10 +145,15 @@ class Client {
139
145
  });
140
146
  }
141
147
  async requestXbeesUser() {
142
- const responseMessageUser = await this.sendAsync({ type: enums_1.ClientEventType.USER });
148
+ const responseMessageUser = await this.sendAsync({
149
+ type: enums_1.ClientEventType.USER,
150
+ });
143
151
  if (responseMessageUser.payload) {
144
152
  const { extension, domain } = responseMessageUser.payload;
145
- this.user = { ...responseMessageUser.payload, email: this.getUserEmail() };
153
+ this.user = {
154
+ ...responseMessageUser.payload,
155
+ email: this.getUserEmail(),
156
+ };
146
157
  if (extension) {
147
158
  this.userExtension = extension;
148
159
  }
@@ -241,10 +252,16 @@ class Client {
241
252
  return this.sendAsync({ type: enums_1.ClientEventType.AVAILABLE_CONTACT_DATA });
242
253
  }
243
254
  contactUpdated(query, contact) {
244
- return this.sendAsync({ type: enums_1.ClientEventType.CONTACT_CREATE_OR_UPDATE, payload: { query, contact } });
255
+ return this.sendAsync({
256
+ type: enums_1.ClientEventType.CONTACT_CREATE_OR_UPDATE,
257
+ payload: { query, contact },
258
+ });
245
259
  }
246
260
  contactMatchUpdated(query, contact) {
247
- return this.sendAsync({ type: enums_1.ClientEventType.CONTACT_MATCH_UPDATE, payload: { query, contact } });
261
+ return this.sendAsync({
262
+ type: enums_1.ClientEventType.CONTACT_MATCH_UPDATE,
263
+ payload: { query, contact },
264
+ });
248
265
  }
249
266
  getThemeMode() {
250
267
  return this.sendAsync({ type: enums_1.ClientEventType.THEME_MODE });
@@ -252,6 +269,9 @@ class Client {
252
269
  getTheme() {
253
270
  return this.sendAsync({ type: enums_1.ClientEventType.THEME });
254
271
  }
272
+ getIntegrationId() {
273
+ return this.integrationId;
274
+ }
255
275
  startCall(phoneNumber) {
256
276
  return this.sendAsync({
257
277
  type: enums_1.ClientEventType.START_CALL,
@@ -268,7 +288,10 @@ class Client {
268
288
  return this.sendAsync({ type: enums_1.ClientEventType.TO_CLIPBOARD, payload });
269
289
  }
270
290
  showToast(message, severity = 'INFO') {
271
- return this.sendAsync({ type: enums_1.ClientEventType.TOAST, payload: { message, severity } });
291
+ return this.sendAsync({
292
+ type: enums_1.ClientEventType.TOAST,
293
+ payload: { message, severity },
294
+ });
272
295
  }
273
296
  isNotAuthorized() {
274
297
  return this.sendAsync({ type: enums_1.ClientEventType.NOT_AUTHORIZED });
@@ -493,5 +516,43 @@ class Client {
493
516
  onCancelRedirectToEntityPage(callback) {
494
517
  return this.addEventListener(enums_1.EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE, callback);
495
518
  }
519
+ onGetSupportedIntegrationContextKeys(callback) {
520
+ // send event to x-bees
521
+ void this.sendAsyncErrorSafe({
522
+ type: enums_1.ClientEventType.SUPPORTED_INTEGRATION_CONTEXT_KEYS_IS_SUPPORTED,
523
+ });
524
+ return this.addEventListener(enums_1.EventType.GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS, () => {
525
+ const resolve = (keys) => this.sendAsync({
526
+ type: enums_1.ClientEventType.SUPPORTED_INTEGRATION_CONTEXT_KEYS,
527
+ payload: { keys },
528
+ });
529
+ const reject = (reason) => {
530
+ console.debug(reason);
531
+ };
532
+ try {
533
+ callback(resolve, reject);
534
+ }
535
+ catch (error) {
536
+ reject(`${error}`);
537
+ }
538
+ });
539
+ }
540
+ onRequestIntegrationContext(callback) {
541
+ return this.addEventListener(enums_1.EventType.REQUEST_INTEGRATION_CONTEXT, (payload) => {
542
+ const resolve = (response) => this.sendAsync({
543
+ type: enums_1.ClientEventType.INTEGRATION_CONTEXT_RESPONSE,
544
+ payload: response,
545
+ });
546
+ const reject = (reason) => {
547
+ console.debug(reason);
548
+ };
549
+ try {
550
+ callback(payload, resolve, reject);
551
+ }
552
+ catch (error) {
553
+ reject(`${error}`);
554
+ }
555
+ });
556
+ }
496
557
  }
497
558
  exports.Client = Client;
@@ -17,6 +17,8 @@ var EventType;
17
17
  EventType["CONTACT_REFRESH"] = "xBeesContactRefresh";
18
18
  EventType["START_REDIRECT_TO_ENTITY_PAGE"] = "xBeesStartRedirectToEntityPage";
19
19
  EventType["CANCEL_REDIRECT_TO_ENTITY_PAGE"] = "xBeesCancelRedirectToEntityPage";
20
+ EventType["GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS"] = "xBeesGetSupportedIntegrationContextKeys";
21
+ EventType["REQUEST_INTEGRATION_CONTEXT"] = "xBeesRequestIntegrationContext";
20
22
  })(EventType || (exports.EventType = EventType = {}));
21
23
  var ClientEventType;
22
24
  (function (ClientEventType) {
@@ -56,6 +58,9 @@ var ClientEventType;
56
58
  ClientEventType["CUSTOM_EVENT"] = "xBeesCustomEvent";
57
59
  ClientEventType["CREATE_CONTACT_IS_SUPPORTED"] = "xBeesCreateContactIsSupported";
58
60
  ClientEventType["CREATE_CONTACT_HAS_NO_PERMISSION"] = "xBeesCreateContactHasNoPermission";
61
+ ClientEventType["SUPPORTED_INTEGRATION_CONTEXT_KEYS_IS_SUPPORTED"] = "xBeesSupportedIntegrationContextKeysIsSupported";
62
+ ClientEventType["SUPPORTED_INTEGRATION_CONTEXT_KEYS"] = "xBeesSupportedIntegrationContextKeys";
63
+ ClientEventType["INTEGRATION_CONTEXT_RESPONSE"] = "xBeesIntegrationContextResponse";
59
64
  })(ClientEventType || (exports.ClientEventType = ClientEventType = {}));
60
65
  var UrlParams;
61
66
  (function (UrlParams) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildix/xbees-connect",
3
- "version": "1.3.6",
3
+ "version": "1.3.8-alpha.2",
4
4
  "description": "This library provides easy communication between x-bees and integrated web applications",
5
5
  "author": "dimitri.chernykh <dimitri.chernykh@wildix.com>",
6
6
  "homepage": "",
@@ -42,6 +42,7 @@ export class Client {
42
42
  needAuthorize;
43
43
  isParentReactNativeWebView;
44
44
  iframeId;
45
+ integrationId;
45
46
  variant = null;
46
47
  startPage = null;
47
48
  product = null;
@@ -55,6 +56,7 @@ export class Client {
55
56
  this.needAuthorize = params.has(UrlParams.AUTHORIZE);
56
57
  this.startPage = params.get(UrlParams.START_PAGE);
57
58
  this.product = params.get(UrlParams.PRODUCT);
59
+ this.integrationId = params.get(UrlParams.ID)?.split('-')[0] ?? '';
58
60
  // @ts-expect-error window.ReactNativeWebView will be provided by ReactNative WebView
59
61
  this.isParentReactNativeWebView = !!window.ReactNativeWebView;
60
62
  this.worker = this.isParentReactNativeWebView ? new PostMessageControllerNative() : new PostMessageControllerWeb();
@@ -125,7 +127,11 @@ export class Client {
125
127
  ready(props = SupportedPlatformVariant.ALL) {
126
128
  const payload = typeof props === 'string'
127
129
  ? { version: this.version(), platform: props }
128
- : { version: this.version(), ...props, platform: props.platform ?? SupportedPlatformVariant.ALL };
130
+ : {
131
+ version: this.version(),
132
+ ...props,
133
+ platform: props.platform ?? SupportedPlatformVariant.ALL,
134
+ };
129
135
  this.getXBeesUser();
130
136
  return this.sendAsync({
131
137
  type: ClientEventType.READY,
@@ -133,10 +139,15 @@ export class Client {
133
139
  });
134
140
  }
135
141
  async requestXbeesUser() {
136
- const responseMessageUser = await this.sendAsync({ type: ClientEventType.USER });
142
+ const responseMessageUser = await this.sendAsync({
143
+ type: ClientEventType.USER,
144
+ });
137
145
  if (responseMessageUser.payload) {
138
146
  const { extension, domain } = responseMessageUser.payload;
139
- this.user = { ...responseMessageUser.payload, email: this.getUserEmail() };
147
+ this.user = {
148
+ ...responseMessageUser.payload,
149
+ email: this.getUserEmail(),
150
+ };
140
151
  if (extension) {
141
152
  this.userExtension = extension;
142
153
  }
@@ -235,10 +246,16 @@ export class Client {
235
246
  return this.sendAsync({ type: ClientEventType.AVAILABLE_CONTACT_DATA });
236
247
  }
237
248
  contactUpdated(query, contact) {
238
- return this.sendAsync({ type: ClientEventType.CONTACT_CREATE_OR_UPDATE, payload: { query, contact } });
249
+ return this.sendAsync({
250
+ type: ClientEventType.CONTACT_CREATE_OR_UPDATE,
251
+ payload: { query, contact },
252
+ });
239
253
  }
240
254
  contactMatchUpdated(query, contact) {
241
- return this.sendAsync({ type: ClientEventType.CONTACT_MATCH_UPDATE, payload: { query, contact } });
255
+ return this.sendAsync({
256
+ type: ClientEventType.CONTACT_MATCH_UPDATE,
257
+ payload: { query, contact },
258
+ });
242
259
  }
243
260
  getThemeMode() {
244
261
  return this.sendAsync({ type: ClientEventType.THEME_MODE });
@@ -246,6 +263,9 @@ export class Client {
246
263
  getTheme() {
247
264
  return this.sendAsync({ type: ClientEventType.THEME });
248
265
  }
266
+ getIntegrationId() {
267
+ return this.integrationId;
268
+ }
249
269
  startCall(phoneNumber) {
250
270
  return this.sendAsync({
251
271
  type: ClientEventType.START_CALL,
@@ -262,7 +282,10 @@ export class Client {
262
282
  return this.sendAsync({ type: ClientEventType.TO_CLIPBOARD, payload });
263
283
  }
264
284
  showToast(message, severity = 'INFO') {
265
- return this.sendAsync({ type: ClientEventType.TOAST, payload: { message, severity } });
285
+ return this.sendAsync({
286
+ type: ClientEventType.TOAST,
287
+ payload: { message, severity },
288
+ });
266
289
  }
267
290
  isNotAuthorized() {
268
291
  return this.sendAsync({ type: ClientEventType.NOT_AUTHORIZED });
@@ -487,4 +510,42 @@ export class Client {
487
510
  onCancelRedirectToEntityPage(callback) {
488
511
  return this.addEventListener(EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE, callback);
489
512
  }
513
+ onGetSupportedIntegrationContextKeys(callback) {
514
+ // send event to x-bees
515
+ void this.sendAsyncErrorSafe({
516
+ type: ClientEventType.SUPPORTED_INTEGRATION_CONTEXT_KEYS_IS_SUPPORTED,
517
+ });
518
+ return this.addEventListener(EventType.GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS, () => {
519
+ const resolve = (keys) => this.sendAsync({
520
+ type: ClientEventType.SUPPORTED_INTEGRATION_CONTEXT_KEYS,
521
+ payload: { keys },
522
+ });
523
+ const reject = (reason) => {
524
+ console.debug(reason);
525
+ };
526
+ try {
527
+ callback(resolve, reject);
528
+ }
529
+ catch (error) {
530
+ reject(`${error}`);
531
+ }
532
+ });
533
+ }
534
+ onRequestIntegrationContext(callback) {
535
+ return this.addEventListener(EventType.REQUEST_INTEGRATION_CONTEXT, (payload) => {
536
+ const resolve = (response) => this.sendAsync({
537
+ type: ClientEventType.INTEGRATION_CONTEXT_RESPONSE,
538
+ payload: response,
539
+ });
540
+ const reject = (reason) => {
541
+ console.debug(reason);
542
+ };
543
+ try {
544
+ callback(payload, resolve, reject);
545
+ }
546
+ catch (error) {
547
+ reject(`${error}`);
548
+ }
549
+ });
550
+ }
490
551
  }
@@ -14,6 +14,8 @@ export var EventType;
14
14
  EventType["CONTACT_REFRESH"] = "xBeesContactRefresh";
15
15
  EventType["START_REDIRECT_TO_ENTITY_PAGE"] = "xBeesStartRedirectToEntityPage";
16
16
  EventType["CANCEL_REDIRECT_TO_ENTITY_PAGE"] = "xBeesCancelRedirectToEntityPage";
17
+ EventType["GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS"] = "xBeesGetSupportedIntegrationContextKeys";
18
+ EventType["REQUEST_INTEGRATION_CONTEXT"] = "xBeesRequestIntegrationContext";
17
19
  })(EventType || (EventType = {}));
18
20
  export var ClientEventType;
19
21
  (function (ClientEventType) {
@@ -53,6 +55,9 @@ export var ClientEventType;
53
55
  ClientEventType["CUSTOM_EVENT"] = "xBeesCustomEvent";
54
56
  ClientEventType["CREATE_CONTACT_IS_SUPPORTED"] = "xBeesCreateContactIsSupported";
55
57
  ClientEventType["CREATE_CONTACT_HAS_NO_PERMISSION"] = "xBeesCreateContactHasNoPermission";
58
+ ClientEventType["SUPPORTED_INTEGRATION_CONTEXT_KEYS_IS_SUPPORTED"] = "xBeesSupportedIntegrationContextKeysIsSupported";
59
+ ClientEventType["SUPPORTED_INTEGRATION_CONTEXT_KEYS"] = "xBeesSupportedIntegrationContextKeys";
60
+ ClientEventType["INTEGRATION_CONTEXT_RESPONSE"] = "xBeesIntegrationContextResponse";
56
61
  })(ClientEventType || (ClientEventType = {}));
57
62
  export var UrlParams;
58
63
  (function (UrlParams) {
@@ -1,7 +1,7 @@
1
- import { Callback, ConnectClient, Contact, ContactQuery, IPayloadViewPort, LookupAndMatchContactsResolver, Message, Reject, RemoveEventListener, ResponseMessage, StorageEventCallback, SuggestContactsResolver, SupportedPlatformVariant, ToastSeverity, XBeesUser } from '../types';
1
+ import { Callback, ConnectClient, Contact, ContactQuery, IPayloadRequestIntegrationContext, IPayloadViewPort, LookupAndMatchContactsResolver, Message, Reject, RemoveEventListener, ResponseMessage, StorageEventCallback, SuggestContactsResolver, SupportedPlatformVariant, ToastSeverity, XBeesUser } from '../types';
2
2
  import { ReadyExtendedProps } from '../types/Event';
3
3
  import { JSONValue } from '../types/Json';
4
- import { LookupAndMatchBatchContactsResolver } from '../types/Resolver';
4
+ import { GetSupportedIntegrationContextKeysResolver, LookupAndMatchBatchContactsResolver, RequestIntegrationContextResolver } from '../types/Resolver';
5
5
  import { ClientEventType, EventType, Product, StartPage } from './enums';
6
6
  import TechnicalSupport from './helpers/TechnicalSupport';
7
7
  /**
@@ -25,6 +25,7 @@ export declare class Client implements ConnectClient {
25
25
  private readonly needAuthorize;
26
26
  private readonly isParentReactNativeWebView;
27
27
  private readonly iframeId;
28
+ private readonly integrationId;
28
29
  private readonly variant;
29
30
  private readonly startPage;
30
31
  private readonly product;
@@ -73,6 +74,7 @@ export declare class Client implements ConnectClient {
73
74
  contactMatchUpdated(query: ContactQuery, contact: Contact): Promise<ResponseMessage<ClientEventType.CONTACT_MATCH_UPDATE>>;
74
75
  getThemeMode(): Promise<Message<ClientEventType.THEME_MODE>>;
75
76
  getTheme(): Promise<Message<ClientEventType.THEME>>;
77
+ getIntegrationId(): string;
76
78
  startCall(phoneNumber: string): Promise<Message<ClientEventType.START_CALL>>;
77
79
  reboot(): Promise<ResponseMessage>;
78
80
  setViewport(payload: IPayloadViewPort): Promise<ResponseMessage>;
@@ -116,4 +118,6 @@ export declare class Client implements ConnectClient {
116
118
  onContactRefresh(callback: Callback<EventType.CONTACT_REFRESH>): RemoveEventListener;
117
119
  onStartRedirectToEntityPage(callback: Callback<EventType.START_REDIRECT_TO_ENTITY_PAGE>): RemoveEventListener;
118
120
  onCancelRedirectToEntityPage(callback: Callback<EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE>): RemoveEventListener;
121
+ onGetSupportedIntegrationContextKeys(callback: (resolve: GetSupportedIntegrationContextKeysResolver, reject: Reject) => void): RemoveEventListener;
122
+ onRequestIntegrationContext(callback: (payload: IPayloadRequestIntegrationContext, resolve: RequestIntegrationContextResolver, reject: Reject) => void): RemoveEventListener;
119
123
  }
@@ -12,7 +12,9 @@ export declare enum EventType {
12
12
  CONTACT_WEIGHT_UPDATE = "xBeesContactWeightUpdate",
13
13
  CONTACT_REFRESH = "xBeesContactRefresh",
14
14
  START_REDIRECT_TO_ENTITY_PAGE = "xBeesStartRedirectToEntityPage",
15
- CANCEL_REDIRECT_TO_ENTITY_PAGE = "xBeesCancelRedirectToEntityPage"
15
+ CANCEL_REDIRECT_TO_ENTITY_PAGE = "xBeesCancelRedirectToEntityPage",
16
+ GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS = "xBeesGetSupportedIntegrationContextKeys",
17
+ REQUEST_INTEGRATION_CONTEXT = "xBeesRequestIntegrationContext"
16
18
  }
17
19
  export declare enum ClientEventType {
18
20
  READY = "xBeesReady",
@@ -50,7 +52,10 @@ export declare enum ClientEventType {
50
52
  DROPDOWN_VISIBILITY = "xBeesDropdownVisibility",
51
53
  CUSTOM_EVENT = "xBeesCustomEvent",
52
54
  CREATE_CONTACT_IS_SUPPORTED = "xBeesCreateContactIsSupported",
53
- CREATE_CONTACT_HAS_NO_PERMISSION = "xBeesCreateContactHasNoPermission"
55
+ CREATE_CONTACT_HAS_NO_PERMISSION = "xBeesCreateContactHasNoPermission",
56
+ SUPPORTED_INTEGRATION_CONTEXT_KEYS_IS_SUPPORTED = "xBeesSupportedIntegrationContextKeysIsSupported",
57
+ SUPPORTED_INTEGRATION_CONTEXT_KEYS = "xBeesSupportedIntegrationContextKeys",
58
+ INTEGRATION_CONTEXT_RESPONSE = "xBeesIntegrationContextResponse"
54
59
  }
55
60
  export declare enum UrlParams {
56
61
  TOKEN = "t",
@@ -6,9 +6,9 @@ import { ReadyExtendedProps } from './Event';
6
6
  import { JSONValue } from './Json';
7
7
  import { RemoveEventListener } from './Listener';
8
8
  import { ResponseMessage } from './Message';
9
- import { IPayloadViewPort } from './Payload';
9
+ import { IPayloadRequestIntegrationContext, IPayloadViewPort } from './Payload';
10
10
  import { SupportedPlatformVariant } from './Platform';
11
- import { LookupAndMatchBatchContactsResolver, LookupAndMatchContactsResolver, Reject, SuggestContactsResolver } from './Resolver';
11
+ import { GetSupportedIntegrationContextKeysResolver, LookupAndMatchBatchContactsResolver, LookupAndMatchContactsResolver, Reject, RequestIntegrationContextResolver, SuggestContactsResolver } from './Resolver';
12
12
  import { StorageEventCallback } from './Storage';
13
13
  import { ToastSeverity } from './Toast';
14
14
  import { XBeesUser } from './XBeesUser';
@@ -43,6 +43,9 @@ export interface ConnectClient {
43
43
  /**
44
44
  * Retrieves the product type from which the integration is opened */
45
45
  getProduct: () => Product | null;
46
+ /**
47
+ * Retrieves the integration id from url */
48
+ getIntegrationId: () => string;
46
49
  /**
47
50
  * Retrieves the version of xBeesConnect */
48
51
  version: () => string;
@@ -226,4 +229,18 @@ export interface ConnectClient {
226
229
  * Removes data about redirect to entity page from integration storage
227
230
  */
228
231
  onCancelRedirectToEntityPage: (callback: Callback<EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE>) => RemoveEventListener;
232
+ /**
233
+ * Registers a handler that returns the list of integration context keys this integration supports.
234
+ * Announces integration context capability to xBees on registration.
235
+ * Suitable for headless/daemon integrations.
236
+ * Use resolve(keys) to respond. Use reject(reason) only for fatal/initialization errors.
237
+ */
238
+ onGetSupportedIntegrationContextKeys: (callback: (resolve: GetSupportedIntegrationContextKeysResolver, reject: Reject) => void) => RemoveEventListener;
239
+ /**
240
+ * Registers a handler for integration context requests from xBees.
241
+ * xBees provides a query and a set of requested keys; the integration should return aggregated data.
242
+ * For partial success, use resolve({ data, errors }) instead of reject.
243
+ * Use reject(reason) only for invalid payload or fatal errors.
244
+ */
245
+ onRequestIntegrationContext: (callback: (payload: IPayloadRequestIntegrationContext, resolve: RequestIntegrationContextResolver, reject: Reject) => void) => RemoveEventListener;
229
246
  }
@@ -2,10 +2,10 @@ import { ClientEventType, EventType } from '../src/enums';
2
2
  import { AvailableContactData } from './AvailableContactData';
3
3
  import { ContactQuery } from './Contact';
4
4
  import { Message, MessageType } from './Message';
5
- import { IPayloadAutoSuggestResult, IPayloadBatchContactsMatchResult, IPayloadBatchContactsMatchResultError, IPayloadCallStart, IPayloadCallStartedInfo, IPayloadCancelRedirectToEntityPage, IPayloadContactMatchResult, IPayloadContactMatchResultNotFound, IPayloadContactResult, IPayloadContactWeightUpdate, IPayloadContextResult, IPayloadConversationResult, IPayloadCustomEvent, IPayloadDropdownVisibility, IPayloadGetFromStorage, IPayloadSaveToStorage, IPayloadSendAnalytics, IPayloadStartRedirectToEntityPage, IPayloadTechSupport, IPayloadThemeChange, IPayloadToast, IPayloadVersion, IPayloadViewPort } from './Payload';
5
+ import { IPayloadAutoSuggestResult, IPayloadBatchContactsMatchResult, IPayloadBatchContactsMatchResultError, IPayloadCallStart, IPayloadCallStartedInfo, IPayloadCancelRedirectToEntityPage, IPayloadContactMatchResult, IPayloadContactMatchResultNotFound, IPayloadContactResult, IPayloadContactWeightUpdate, IPayloadContextResult, IPayloadConversationResult, IPayloadCustomEvent, IPayloadDropdownVisibility, IPayloadGetFromStorage, IPayloadIntegrationContextResponse, IPayloadRequestIntegrationContext, IPayloadSaveToStorage, IPayloadSendAnalytics, IPayloadStartRedirectToEntityPage, IPayloadSupportedIntegrationContextKeys, IPayloadTechSupport, IPayloadThemeChange, IPayloadToast, IPayloadVersion, IPayloadViewPort } from './Payload';
6
6
  import { SupportedPlatformVariant } from './Platform';
7
7
  import { XBeesUser } from './XBeesUser';
8
- export type EventPayload<T extends MessageType> = T extends EventType.GET_CONTACTS_AUTO_SUGGEST ? string : T extends ClientEventType.CONTACTS_AUTO_SUGGEST ? IPayloadAutoSuggestResult : T extends ClientEventType.CONTACT_LOOKUP_AND_MATCH | ClientEventType.CONTACT_CREATE_OR_UPDATE | ClientEventType.CONTACT_MATCH_UPDATE ? IPayloadContactMatchResult : T extends ClientEventType.CONTACT_LOOKUP_AND_MATCH_NOT_FOUND ? IPayloadContactMatchResultNotFound : T extends ClientEventType.LOOKUP_AND_MATCH_BATCH_ERROR ? IPayloadBatchContactsMatchResultError : T extends ClientEventType.CONTEXT ? IPayloadContextResult : T extends ClientEventType.CURRENT_CONTACT ? IPayloadContactResult : T extends ClientEventType.CURRENT_CONVERSATION ? IPayloadConversationResult : T extends EventType.ADD_CALL ? IPayloadCallStartedInfo : T extends ClientEventType.START_CALL ? IPayloadCallStart : T extends ClientEventType.READY ? IPayloadVersion : T extends ClientEventType.VIEW_PORT ? IPayloadViewPort : T extends ClientEventType.THEME ? IPayloadThemeChange : T extends EventType.USE_THEME ? IPayloadThemeChange : T extends ClientEventType.TOAST ? IPayloadToast : T extends ClientEventType.SEND_ANALYTICS ? IPayloadSendAnalytics : T extends ClientEventType.SEND_TECHNICAL_SUPPORT_INFORMATION ? IPayloadTechSupport : T extends EventType.PBX_TOKEN ? string : T extends ClientEventType.TOKEN ? string : T extends ClientEventType.TO_CLIPBOARD ? string : T extends EventType.GET_LOOK_UP_AND_MATCH ? ContactQuery : T extends EventType.GET_LOOK_UP_AND_MATCH_BATCH ? ContactQuery[] : T extends EventType.VISIBILITY ? boolean : T extends ClientEventType.USER ? XBeesUser : T extends ClientEventType.SAVE_TO_STORAGE ? IPayloadSaveToStorage : T extends ClientEventType.GET_FROM_STORAGE ? IPayloadGetFromStorage : T extends ClientEventType.REMOVE_FROM_STORAGE ? IPayloadGetFromStorage : T extends ClientEventType.AVAILABLE_CONTACT_DATA ? AvailableContactData | null : T extends ClientEventType.LOOK_UP_AND_MATCH_BATCH_CONTACTS ? IPayloadBatchContactsMatchResult : T extends ClientEventType.DROPDOWN_VISIBILITY ? IPayloadDropdownVisibility : T extends ClientEventType.CUSTOM_EVENT ? IPayloadCustomEvent : T extends EventType.START_REDIRECT_TO_ENTITY_PAGE ? IPayloadStartRedirectToEntityPage : T extends EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE ? IPayloadCancelRedirectToEntityPage : never;
8
+ export type EventPayload<T extends MessageType> = T extends EventType.GET_CONTACTS_AUTO_SUGGEST ? string : T extends ClientEventType.CONTACTS_AUTO_SUGGEST ? IPayloadAutoSuggestResult : T extends ClientEventType.CONTACT_LOOKUP_AND_MATCH | ClientEventType.CONTACT_CREATE_OR_UPDATE | ClientEventType.CONTACT_MATCH_UPDATE ? IPayloadContactMatchResult : T extends ClientEventType.CONTACT_LOOKUP_AND_MATCH_NOT_FOUND ? IPayloadContactMatchResultNotFound : T extends ClientEventType.LOOKUP_AND_MATCH_BATCH_ERROR ? IPayloadBatchContactsMatchResultError : T extends ClientEventType.CONTEXT ? IPayloadContextResult : T extends ClientEventType.CURRENT_CONTACT ? IPayloadContactResult : T extends ClientEventType.CURRENT_CONVERSATION ? IPayloadConversationResult : T extends EventType.ADD_CALL ? IPayloadCallStartedInfo : T extends ClientEventType.START_CALL ? IPayloadCallStart : T extends ClientEventType.READY ? IPayloadVersion : T extends ClientEventType.VIEW_PORT ? IPayloadViewPort : T extends ClientEventType.THEME ? IPayloadThemeChange : T extends EventType.USE_THEME ? IPayloadThemeChange : T extends ClientEventType.TOAST ? IPayloadToast : T extends ClientEventType.SEND_ANALYTICS ? IPayloadSendAnalytics : T extends ClientEventType.SEND_TECHNICAL_SUPPORT_INFORMATION ? IPayloadTechSupport : T extends EventType.PBX_TOKEN ? string : T extends ClientEventType.TOKEN ? string : T extends ClientEventType.TO_CLIPBOARD ? string : T extends EventType.GET_LOOK_UP_AND_MATCH ? ContactQuery : T extends EventType.GET_LOOK_UP_AND_MATCH_BATCH ? ContactQuery[] : T extends EventType.VISIBILITY ? boolean : T extends ClientEventType.USER ? XBeesUser : T extends ClientEventType.SAVE_TO_STORAGE ? IPayloadSaveToStorage : T extends ClientEventType.GET_FROM_STORAGE ? IPayloadGetFromStorage : T extends ClientEventType.REMOVE_FROM_STORAGE ? IPayloadGetFromStorage : T extends ClientEventType.AVAILABLE_CONTACT_DATA ? AvailableContactData | null : T extends ClientEventType.LOOK_UP_AND_MATCH_BATCH_CONTACTS ? IPayloadBatchContactsMatchResult : T extends ClientEventType.DROPDOWN_VISIBILITY ? IPayloadDropdownVisibility : T extends ClientEventType.CUSTOM_EVENT ? IPayloadCustomEvent : T extends EventType.START_REDIRECT_TO_ENTITY_PAGE ? IPayloadStartRedirectToEntityPage : T extends EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE ? IPayloadCancelRedirectToEntityPage : T extends EventType.GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS ? undefined : T extends EventType.REQUEST_INTEGRATION_CONTEXT ? IPayloadRequestIntegrationContext : T extends ClientEventType.SUPPORTED_INTEGRATION_CONTEXT_KEYS ? IPayloadSupportedIntegrationContextKeys : T extends ClientEventType.INTEGRATION_CONTEXT_RESPONSE ? IPayloadIntegrationContextResponse : never;
9
9
  export type EventPayloadMap = {
10
10
  [EventType.GET_CONTACTS_AUTO_SUGGEST]: string;
11
11
  [EventType.GET_LOOK_UP_AND_MATCH]: ContactQuery;
@@ -19,6 +19,8 @@ export type EventPayloadMap = {
19
19
  [EventType.CONTACT_REFRESH]: string;
20
20
  [EventType.START_REDIRECT_TO_ENTITY_PAGE]: IPayloadStartRedirectToEntityPage;
21
21
  [EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE]: IPayloadCancelRedirectToEntityPage;
22
+ [EventType.GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS]: undefined;
23
+ [EventType.REQUEST_INTEGRATION_CONTEXT]: IPayloadRequestIntegrationContext;
22
24
  };
23
25
  export type EventCallbackMap = {
24
26
  [EventType.GET_CONTACTS_AUTO_SUGGEST]: (query: EventPayloadMap[EventType.GET_CONTACTS_AUTO_SUGGEST]) => void;
@@ -33,6 +35,8 @@ export type EventCallbackMap = {
33
35
  [EventType.CONTACT_REFRESH]: (id: EventPayloadMap[EventType.CONTACT_REFRESH]) => void;
34
36
  [EventType.START_REDIRECT_TO_ENTITY_PAGE]: (params: EventPayloadMap[EventType.START_REDIRECT_TO_ENTITY_PAGE]) => void;
35
37
  [EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE]: (params: EventPayloadMap[EventType.CANCEL_REDIRECT_TO_ENTITY_PAGE]) => void;
38
+ [EventType.GET_SUPPORTED_INTEGRATION_CONTEXT_KEYS]: (_?: undefined) => void;
39
+ [EventType.REQUEST_INTEGRATION_CONTEXT]: (payload: EventPayloadMap[EventType.REQUEST_INTEGRATION_CONTEXT]) => void;
36
40
  };
37
41
  export type RawMessageEvent = MessageEvent<string | Message>;
38
42
  export type ReadyExtendedProps = {
@@ -95,4 +95,28 @@ export interface IPayloadStartRedirectToEntityPage {
95
95
  export interface IPayloadCancelRedirectToEntityPage {
96
96
  conversationId: string;
97
97
  }
98
+ export interface IntegrationContextKey {
99
+ key: string;
100
+ description: string;
101
+ }
102
+ export interface IPayloadSupportedIntegrationContextKeys {
103
+ keys: IntegrationContextKey[];
104
+ }
105
+ export interface IPayloadRequestIntegrationContext {
106
+ query: ContactQuery;
107
+ keys: IntegrationContextKey[];
108
+ }
109
+ export interface IResolvedIntegrationEntity {
110
+ id: string;
111
+ type: string;
112
+ name?: string;
113
+ }
114
+ export interface IPayloadIntegrationContextResponse {
115
+ query: ContactQuery;
116
+ requestedKeys: IntegrationContextKey[];
117
+ supportedKeys: IntegrationContextKey[];
118
+ resolvedEntity?: IResolvedIntegrationEntity;
119
+ data: Partial<Record<string, unknown>>;
120
+ errors?: Partial<Record<string, string>>;
121
+ }
98
122
  export {};
@@ -1,5 +1,8 @@
1
1
  import { Contact, ContactQuery } from './Contact';
2
+ import { IntegrationContextKey, IPayloadIntegrationContextResponse } from './Payload';
2
3
  export type SuggestContactsResolver = (contacts: Contact[]) => void;
3
4
  export type LookupAndMatchContactsResolver = (contact: Contact) => void;
4
5
  export type LookupAndMatchBatchContactsResolver = (contactResultsMap: Map<ContactQuery, Contact | null | undefined>) => void;
5
6
  export type Reject = (reason: string) => void;
7
+ export type GetSupportedIntegrationContextKeysResolver = (keys: IntegrationContextKey[]) => void;
8
+ export type RequestIntegrationContextResolver = (response: IPayloadIntegrationContextResponse) => void;
@@ -7,9 +7,9 @@ export type { JSONArray, JSONObject } from './Json';
7
7
  export type { Listener, RemoveEventListener } from './Listener';
8
8
  export type { Message, MessageIFrameResponse, MessageType, ResponseMessage } from './Message';
9
9
  export type { MessageSender } from './MessageSender';
10
- export type { IPayloadAutoSuggestResult, IPayloadCallStart, IPayloadCallStartedInfo, IPayloadContactMatchResult, IPayloadContactMatchResultNotFound, IPayloadContactResult, IPayloadContextResult, IPayloadConversationResult, IPayloadSendAnalytics, IPayloadTechSupport, IPayloadThemeChange, IPayloadToast, IPayloadVersion, IPayloadViewPort, IPayloadStartRedirectToEntityPage, IPayloadCancelRedirectToEntityPage, } from './Payload';
10
+ export type { IntegrationContextKey, IPayloadAutoSuggestResult, IPayloadCallStart, IPayloadCallStartedInfo, IPayloadCancelRedirectToEntityPage, IPayloadContactMatchResult, IPayloadContactMatchResultNotFound, IPayloadContactResult, IPayloadContextResult, IPayloadConversationResult, IPayloadIntegrationContextResponse, IPayloadRequestIntegrationContext, IPayloadSendAnalytics, IPayloadStartRedirectToEntityPage, IPayloadSupportedIntegrationContextKeys, IPayloadTechSupport, IPayloadThemeChange, IPayloadToast, IPayloadVersion, IPayloadViewPort, IResolvedIntegrationEntity, } from './Payload';
11
11
  export { SupportedPlatformVariant } from './Platform';
12
- export type { LookupAndMatchBatchContactsResolver, LookupAndMatchContactsResolver, Reject, SuggestContactsResolver, } from './Resolver';
12
+ export type { GetSupportedIntegrationContextKeysResolver, LookupAndMatchBatchContactsResolver, LookupAndMatchContactsResolver, Reject, RequestIntegrationContextResolver, SuggestContactsResolver, } from './Resolver';
13
13
  export type { StorageEventCallback } from './Storage';
14
14
  export type { ToastSeverity } from './Toast';
15
15
  export type { WorkVariants } from './WorkVariant';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildix/xbees-connect",
3
- "version": "1.3.7",
3
+ "version": "1.3.8-alpha.2",
4
4
  "description": "This library provides easy communication between x-bees and integrated web applications",
5
5
  "author": "dimitri.chernykh <dimitri.chernykh@wildix.com>",
6
6
  "homepage": "",