@wildix/xbees-connect 1.2.14 → 1.2.16-alpha.0

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.2.14",
3
+ "version": "1.2.15",
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,8 +42,5 @@
42
42
  },
43
43
  "engines": {
44
44
  "node": ">=16"
45
- },
46
- "dependencies": {
47
- "jwt-decode": "^4.0.0"
48
45
  }
49
46
  }
@@ -12,7 +12,6 @@ const MessageListener_1 = require("./helpers/MessageListener");
12
12
  const PostMessageControllerNative_1 = __importDefault(require("./helpers/PostMessageControllerNative"));
13
13
  const PostMessageControllerWeb_1 = __importDefault(require("./helpers/PostMessageControllerWeb"));
14
14
  const TechnicalSupport_1 = __importDefault(require("./helpers/TechnicalSupport"));
15
- const getPbxDomainFromJwt_1 = require("./utils/getPbxDomainFromJwt");
16
15
  const getUrlSearchParamsMap_1 = require("./utils/url/getUrlSearchParamsMap");
17
16
  /**
18
17
  * Client provides functionality of communication between xBees and integrated web applications via iFrame or ReactNative WebView
@@ -42,6 +41,8 @@ class Client {
42
41
  userToken = '';
43
42
  pbxDomain = '';
44
43
  visible = false;
44
+ user = null;
45
+ userExtension = null;
45
46
  userEmail;
46
47
  referrer;
47
48
  needAuthorize;
@@ -49,13 +50,11 @@ class Client {
49
50
  iframeId;
50
51
  variant = null;
51
52
  localStorageManager = LocalStorageManager_1.default.getInstance();
52
- userExtension;
53
53
  constructor() {
54
54
  const params = (0, getUrlSearchParamsMap_1.getUrlSearchParamsMap)();
55
55
  this.iframeId = params.get(enums_1.UrlParams.ID);
56
56
  this.variant = params.get(enums_1.UrlParams.VARIANT);
57
57
  this.userEmail = params.get(enums_1.UrlParams.USER);
58
- this.userExtension = params.get(enums_1.UrlParams.EXTENSION);
59
58
  this.referrer = params.get(enums_1.UrlParams.REFERRER);
60
59
  this.needAuthorize = params.has(enums_1.UrlParams.AUTHORIZE);
61
60
  // @ts-expect-error window.ReactNativeWebView will be provided by ReactNative WebView
@@ -63,7 +62,6 @@ class Client {
63
62
  this.worker = this.isParentReactNativeWebView ? new PostMessageControllerNative_1.default() : new PostMessageControllerWeb_1.default();
64
63
  this.addEventListener(enums_1.EventType.PBX_TOKEN, (token) => {
65
64
  this.userToken = token;
66
- this.pbxDomain = (0, getPbxDomainFromJwt_1.getPbxDomainFromJwt)(token);
67
65
  });
68
66
  this.addEventListener(enums_1.EventType.VISIBILITY, (isActive) => (this.visible = isActive));
69
67
  }
@@ -124,11 +122,31 @@ class Client {
124
122
  }
125
123
  ready(props = types_1.SupportedPlatformVariant.ALL) {
126
124
  const payload = typeof props === 'string' ? { version: this.version(), platform: props } : { version: this.version(), ...props };
125
+ this.getXBeesUser();
127
126
  return this.sendAsync({
128
127
  type: enums_1.ClientEventType.READY,
129
128
  payload,
130
129
  });
131
130
  }
131
+ async requestXbeesUser() {
132
+ const responseMessageUser = await this.sendAsync({ type: enums_1.ClientEventType.USER });
133
+ if (responseMessageUser.payload) {
134
+ const { extension, domain } = responseMessageUser.payload;
135
+ this.user = { ...responseMessageUser.payload, email: this.getUserEmail() };
136
+ if (extension) {
137
+ this.userExtension = extension;
138
+ }
139
+ if (domain) {
140
+ this.pbxDomain = domain;
141
+ }
142
+ }
143
+ }
144
+ getXBeesUser() {
145
+ if (!this.user) {
146
+ this.requestXbeesUser();
147
+ }
148
+ return this.user;
149
+ }
132
150
  version() {
133
151
  return package_json_1.default.version;
134
152
  }
@@ -39,6 +39,7 @@ var ClientEventType;
39
39
  ClientEventType["LOGOUT_IS_SUPPORTED"] = "xBeesLogoutIsSupported";
40
40
  ClientEventType["SEND_ANALYTICS"] = "xBeesSendAnalytics";
41
41
  ClientEventType["SEND_TECHNICAL_SUPPORT_INFORMATION"] = "xBeesSendTechInfo";
42
+ ClientEventType["USER"] = "xBeesUser";
42
43
  })(ClientEventType || (exports.ClientEventType = ClientEventType = {}));
43
44
  var UrlParams;
44
45
  (function (UrlParams) {
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildix/xbees-connect",
3
- "version": "1.2.14",
3
+ "version": "1.2.15",
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,8 +42,5 @@
42
42
  },
43
43
  "engines": {
44
44
  "node": ">=16"
45
- },
46
- "dependencies": {
47
- "jwt-decode": "^4.0.0"
48
45
  }
49
46
  }
@@ -6,7 +6,6 @@ import { MessageListener } from './helpers/MessageListener';
6
6
  import PostMessageControllerNative from './helpers/PostMessageControllerNative';
7
7
  import PostMessageControllerWeb from './helpers/PostMessageControllerWeb';
8
8
  import TechnicalSupport from './helpers/TechnicalSupport';
9
- import { getPbxDomainFromJwt } from './utils/getPbxDomainFromJwt';
10
9
  import { getUrlSearchParamsMap } from './utils/url/getUrlSearchParamsMap';
11
10
  /**
12
11
  * Client provides functionality of communication between xBees and integrated web applications via iFrame or ReactNative WebView
@@ -36,6 +35,8 @@ export class Client {
36
35
  userToken = '';
37
36
  pbxDomain = '';
38
37
  visible = false;
38
+ user = null;
39
+ userExtension = null;
39
40
  userEmail;
40
41
  referrer;
41
42
  needAuthorize;
@@ -43,13 +44,11 @@ export class Client {
43
44
  iframeId;
44
45
  variant = null;
45
46
  localStorageManager = LocalStorageManager.getInstance();
46
- userExtension;
47
47
  constructor() {
48
48
  const params = getUrlSearchParamsMap();
49
49
  this.iframeId = params.get(UrlParams.ID);
50
50
  this.variant = params.get(UrlParams.VARIANT);
51
51
  this.userEmail = params.get(UrlParams.USER);
52
- this.userExtension = params.get(UrlParams.EXTENSION);
53
52
  this.referrer = params.get(UrlParams.REFERRER);
54
53
  this.needAuthorize = params.has(UrlParams.AUTHORIZE);
55
54
  // @ts-expect-error window.ReactNativeWebView will be provided by ReactNative WebView
@@ -57,7 +56,6 @@ export class Client {
57
56
  this.worker = this.isParentReactNativeWebView ? new PostMessageControllerNative() : new PostMessageControllerWeb();
58
57
  this.addEventListener(EventType.PBX_TOKEN, (token) => {
59
58
  this.userToken = token;
60
- this.pbxDomain = getPbxDomainFromJwt(token);
61
59
  });
62
60
  this.addEventListener(EventType.VISIBILITY, (isActive) => (this.visible = isActive));
63
61
  }
@@ -118,11 +116,31 @@ export class Client {
118
116
  }
119
117
  ready(props = SupportedPlatformVariant.ALL) {
120
118
  const payload = typeof props === 'string' ? { version: this.version(), platform: props } : { version: this.version(), ...props };
119
+ this.getXBeesUser();
121
120
  return this.sendAsync({
122
121
  type: ClientEventType.READY,
123
122
  payload,
124
123
  });
125
124
  }
125
+ async requestXbeesUser() {
126
+ const responseMessageUser = await this.sendAsync({ type: ClientEventType.USER });
127
+ if (responseMessageUser.payload) {
128
+ const { extension, domain } = responseMessageUser.payload;
129
+ this.user = { ...responseMessageUser.payload, email: this.getUserEmail() };
130
+ if (extension) {
131
+ this.userExtension = extension;
132
+ }
133
+ if (domain) {
134
+ this.pbxDomain = domain;
135
+ }
136
+ }
137
+ }
138
+ getXBeesUser() {
139
+ if (!this.user) {
140
+ this.requestXbeesUser();
141
+ }
142
+ return this.user;
143
+ }
126
144
  version() {
127
145
  return packageJson.version;
128
146
  }
@@ -36,6 +36,7 @@ export var ClientEventType;
36
36
  ClientEventType["LOGOUT_IS_SUPPORTED"] = "xBeesLogoutIsSupported";
37
37
  ClientEventType["SEND_ANALYTICS"] = "xBeesSendAnalytics";
38
38
  ClientEventType["SEND_TECHNICAL_SUPPORT_INFORMATION"] = "xBeesSendTechInfo";
39
+ ClientEventType["USER"] = "xBeesUser";
39
40
  })(ClientEventType || (ClientEventType = {}));
40
41
  export var UrlParams;
41
42
  (function (UrlParams) {
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { Callback, ConnectClient, Contact, ContactQuery, IPayloadViewPort, LookupAndMatchContactsResolver, Message, Reject, RemoveEventListener, ResponseMessage, StorageEventCallback, SuggestContactsResolver, SupportedPlatformVariant, ToastSeverity } from '../types';
1
+ import { Callback, ConnectClient, Contact, ContactQuery, IPayloadViewPort, LookupAndMatchContactsResolver, Message, Reject, RemoveEventListener, ResponseMessage, StorageEventCallback, SuggestContactsResolver, SupportedPlatformVariant, ToastSeverity, XBeesUser } from '../types';
2
2
  import { ReadyExtendedProps } from '../types/Event';
3
3
  import { ClientEventType, EventType } from './enums';
4
4
  import TechnicalSupport from './helpers/TechnicalSupport';
@@ -16,6 +16,8 @@ export declare class Client implements ConnectClient {
16
16
  private userToken;
17
17
  private pbxDomain;
18
18
  private visible;
19
+ private user;
20
+ private userExtension;
19
21
  private readonly userEmail;
20
22
  private readonly referrer;
21
23
  private readonly needAuthorize;
@@ -23,7 +25,6 @@ export declare class Client implements ConnectClient {
23
25
  private readonly iframeId;
24
26
  private readonly variant;
25
27
  private readonly localStorageManager;
26
- private readonly userExtension;
27
28
  constructor();
28
29
  private sendAsync;
29
30
  private sendAsyncErrorSafe;
@@ -31,6 +32,8 @@ export declare class Client implements ConnectClient {
31
32
  private onMessage;
32
33
  private sendDailyIntegrationUsageAnalytics;
33
34
  ready(props?: SupportedPlatformVariant | ReadyExtendedProps | undefined): Promise<ResponseMessage>;
35
+ private requestXbeesUser;
36
+ getXBeesUser(): XBeesUser | null;
34
37
  version(): string;
35
38
  isPlatformNative(): boolean;
36
39
  isPlatformWeb(): boolean;
@@ -33,7 +33,8 @@ export declare enum ClientEventType {
33
33
  CONTACT_LOOK_UP_AND_MATCH_IS_SUPPORTED = "xBeesContactLookupAndMatchIsSupported",
34
34
  LOGOUT_IS_SUPPORTED = "xBeesLogoutIsSupported",
35
35
  SEND_ANALYTICS = "xBeesSendAnalytics",
36
- SEND_TECHNICAL_SUPPORT_INFORMATION = "xBeesSendTechInfo"
36
+ SEND_TECHNICAL_SUPPORT_INFORMATION = "xBeesSendTechInfo",
37
+ USER = "xBeesUser"
37
38
  }
38
39
  export declare enum UrlParams {
39
40
  TOKEN = "t",
@@ -10,6 +10,7 @@ import { SupportedPlatformVariant } from './Platform';
10
10
  import { LookupAndMatchContactsResolver, Reject, SuggestContactsResolver } from './Resolver';
11
11
  import { StorageEventCallback } from './Storage';
12
12
  import { ToastSeverity } from './Toast';
13
+ import { XBeesUser } from './XBeesUser';
13
14
  export interface ConnectClient {
14
15
  /**
15
16
  * Sends to x-bees signal that iFrame is ready to be shown. iFrame should send it when the application starts and ready */
@@ -20,6 +21,9 @@ export interface ConnectClient {
20
21
  /**
21
22
  * Retrieves current user's email */
22
23
  getUserEmail: () => string;
24
+ /**
25
+ * Retrieves current user's data */
26
+ getXBeesUser: () => XBeesUser | null;
23
27
  /**
24
28
  * Retrieves current pbx domain */
25
29
  getPbxDomain: () => string;
@@ -3,7 +3,8 @@ import { ContactQuery } from './Contact';
3
3
  import { Message, MessageType } from './Message';
4
4
  import { IPayloadAutoSuggestResult, IPayloadCallStart, IPayloadCallStartedInfo, IPayloadContactMatchResult, IPayloadContactMatchResultNotFound, IPayloadContactResult, IPayloadContextResult, IPayloadConversationResult, IPayloadSendAnalytics, IPayloadTechSupport, IPayloadThemeChange, IPayloadToast, IPayloadVersion, IPayloadViewPort } from './Payload';
5
5
  import { SupportedPlatformVariant } from './Platform';
6
- 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.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.VISIBILITY ? boolean : never;
6
+ import { XBeesUser } from './XBeesUser';
7
+ 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.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.VISIBILITY ? boolean : T extends ClientEventType.USER ? XBeesUser : never;
7
8
  export type EventPayloadMap = {
8
9
  [EventType.GET_CONTACTS_AUTO_SUGGEST]: string;
9
10
  [EventType.GET_LOOK_UP_AND_MATCH]: ContactQuery;
@@ -0,0 +1,6 @@
1
+ export interface XBeesUser {
2
+ email: string;
3
+ extension: string;
4
+ domain: string;
5
+ name: string;
6
+ }
@@ -12,3 +12,4 @@ export type { LookupAndMatchContactsResolver, Reject, SuggestContactsResolver }
12
12
  export type { StorageEventCallback } from './Storage';
13
13
  export type { ToastSeverity } from './Toast';
14
14
  export type { WorkVariants } from './WorkVariant';
15
+ export type { XBeesUser } from './XBeesUser';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wildix/xbees-connect",
3
- "version": "1.2.14",
3
+ "version": "1.2.16-alpha.0",
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": "",
@@ -43,8 +43,5 @@
43
43
  "engines": {
44
44
  "node": ">=16"
45
45
  },
46
- "dependencies": {
47
- "jwt-decode": "^4.0.0"
48
- },
49
- "gitHead": "206439b991196810aa57e016b74508fe287cda02"
46
+ "gitHead": "d43b2661bab8e682e81b68cef0b3d222a42fc07d"
50
47
  }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPbxDomainFromJwt = void 0;
4
- const jwt_decode_1 = require("jwt-decode");
5
- function getPbxDomainFromJwt(jwt) {
6
- try {
7
- if (!jwt) {
8
- return '';
9
- }
10
- const tokenDecode = (0, jwt_decode_1.jwtDecode)(jwt);
11
- return tokenDecode['custom:pbx_domain'] || '';
12
- }
13
- catch (error) {
14
- console.error('Failed to decode JWT:', error);
15
- return '';
16
- }
17
- }
18
- exports.getPbxDomainFromJwt = getPbxDomainFromJwt;
@@ -1,14 +0,0 @@
1
- import { jwtDecode } from 'jwt-decode';
2
- export function getPbxDomainFromJwt(jwt) {
3
- try {
4
- if (!jwt) {
5
- return '';
6
- }
7
- const tokenDecode = jwtDecode(jwt);
8
- return tokenDecode['custom:pbx_domain'] || '';
9
- }
10
- catch (error) {
11
- console.error('Failed to decode JWT:', error);
12
- return '';
13
- }
14
- }
@@ -1 +0,0 @@
1
- export declare function getPbxDomainFromJwt(jwt: string): string;