@expressms/smartapp-sdk 1.6.0 → 1.7.0-alpha.1
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.
- package/build/main/index.d.ts +2 -2
- package/build/main/index.js +3 -2
- package/build/main/lib/client/events.d.ts +13 -7
- package/build/main/lib/client/events.js +45 -26
- package/build/main/lib/client/index.d.ts +7 -2
- package/build/main/lib/client/index.js +16 -2
- package/build/main/types/bridge.d.ts +2 -1
- package/build/main/types/bridge.js +2 -1
- package/build/main/types/client.d.ts +21 -8
- package/build/main/types/client.js +2 -1
- package/build/module/index.d.ts +2 -2
- package/build/module/index.js +3 -3
- package/build/module/lib/client/events.d.ts +13 -7
- package/build/module/lib/client/events.js +45 -20
- package/build/module/lib/client/index.d.ts +7 -2
- package/build/module/lib/client/index.js +15 -2
- package/build/module/types/bridge.d.ts +2 -1
- package/build/module/types/bridge.js +2 -1
- package/build/module/types/client.d.ts +21 -8
- package/build/module/types/client.js +2 -1
- package/build/umd/index.js +60 -19
- package/package.json +1 -1
package/build/main/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Bridge from '@expressms/smartapp-bridge';
|
|
2
|
-
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents } from './lib/client';
|
|
2
|
+
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, getUnreadCounter, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents } from './lib/client';
|
|
3
3
|
import { addContact, createPersonalChat, getContact, openContactCard, openPersonalChat, requestSelfProfile, sendMessage } from './lib/contacts';
|
|
4
4
|
import { useQuery } from './lib/helpers/helpers';
|
|
5
5
|
import { ready } from './lib/logging';
|
|
6
6
|
import { onNotification } from './lib/notification';
|
|
7
7
|
import { closeSmartApp, exitSmartAppToCatalog, onBackPressed, onMoveToRoot, openSmartApp, routingChanged } from './lib/routing';
|
|
8
|
-
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, };
|
|
8
|
+
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
package/build/main/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.searchLocalPhonebook = exports.handleDeeplink = exports.openPersonalChat = exports.clientStorageClear = exports.clientStorageRemove = exports.clientStorageSet = exports.clientStorageGet = exports.openChatMessage = exports.createDeeplink = exports.unsubscribeClientEvents = exports.subscribeClientEvents = exports.getConnectionStatus = exports.closeSmartApp = exports.requestSelfProfile = exports.openContactCard = exports.requestLocation = exports.onMoveToRoot = exports.openGroupChat = exports.sendBotCommand = exports.searchCorporatePhonebook = exports.getChats = exports.openClientSettings = exports.useQuery = exports.exitSmartAppToCatalog = exports.openFile = exports.openSmartApp = exports.sendMessage = exports.onNotification = exports.createPersonalChat = exports.getContact = exports.addContact = exports.onBackPressed = exports.routingChanged = exports.ready = exports.Bridge = void 0;
|
|
6
|
+
exports.getUnreadCounter = exports.searchLocalPhonebook = exports.handleDeeplink = exports.openPersonalChat = exports.clientStorageClear = exports.clientStorageRemove = exports.clientStorageSet = exports.clientStorageGet = exports.openChatMessage = exports.createDeeplink = exports.unsubscribeClientEvents = exports.subscribeClientEvents = exports.getConnectionStatus = exports.closeSmartApp = exports.requestSelfProfile = exports.openContactCard = exports.requestLocation = exports.onMoveToRoot = exports.openGroupChat = exports.sendBotCommand = exports.searchCorporatePhonebook = exports.getChats = exports.openClientSettings = exports.useQuery = exports.exitSmartAppToCatalog = exports.openFile = exports.openSmartApp = exports.sendMessage = exports.onNotification = exports.createPersonalChat = exports.getContact = exports.addContact = exports.onBackPressed = exports.routingChanged = exports.ready = exports.Bridge = void 0;
|
|
7
7
|
const smartapp_bridge_1 = __importDefault(require("@expressms/smartapp-bridge"));
|
|
8
8
|
exports.Bridge = smartapp_bridge_1.default;
|
|
9
9
|
const client_1 = require("./lib/client");
|
|
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "clientStorageSet", { enumerable: true, get: func
|
|
|
14
14
|
Object.defineProperty(exports, "createDeeplink", { enumerable: true, get: function () { return client_1.createDeeplink; } });
|
|
15
15
|
Object.defineProperty(exports, "getChats", { enumerable: true, get: function () { return client_1.getChats; } });
|
|
16
16
|
Object.defineProperty(exports, "getConnectionStatus", { enumerable: true, get: function () { return client_1.getConnectionStatus; } });
|
|
17
|
+
Object.defineProperty(exports, "getUnreadCounter", { enumerable: true, get: function () { return client_1.getUnreadCounter; } });
|
|
17
18
|
Object.defineProperty(exports, "handleDeeplink", { enumerable: true, get: function () { return client_1.handleDeeplink; } });
|
|
18
19
|
Object.defineProperty(exports, "openChatMessage", { enumerable: true, get: function () { return client_1.openChatMessage; } });
|
|
19
20
|
Object.defineProperty(exports, "openClientSettings", { enumerable: true, get: function () { return client_1.openClientSettings; } });
|
|
@@ -46,4 +47,4 @@ Object.defineProperty(exports, "onBackPressed", { enumerable: true, get: functio
|
|
|
46
47
|
Object.defineProperty(exports, "onMoveToRoot", { enumerable: true, get: function () { return routing_1.onMoveToRoot; } });
|
|
47
48
|
Object.defineProperty(exports, "openSmartApp", { enumerable: true, get: function () { return routing_1.openSmartApp; } });
|
|
48
49
|
Object.defineProperty(exports, "routingChanged", { enumerable: true, get: function () { return routing_1.routingChanged; } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaUZBQStDO0FBNEM3QyxpQkE1Q0sseUJBQU0sQ0E0Q0w7QUEzQ1IseUNBb0JxQjtBQXNEbkIsbUdBekVBLDJCQUFrQixPQXlFQTtBQUhsQixpR0FyRUEseUJBQWdCLE9BcUVBO0FBRWhCLG9HQXRFQSw0QkFBbUIsT0FzRUE7QUFEbkIsaUdBcEVBLHlCQUFnQixPQW9FQTtBQUhoQiwrRkFoRUEsdUJBQWMsT0FnRUE7QUFaZCx5RkFuREEsaUJBQVEsT0FtREE7QUFTUixvR0EzREEsNEJBQW1CLE9BMkRBO0FBWW5CLGlHQXRFQSx5QkFBZ0IsT0FzRUE7QUFGaEIsK0ZBbkVBLHVCQUFjLE9BbUVBO0FBTmQsZ0dBNURBLHdCQUFlLE9BNERBO0FBZGYsbUdBN0NBLDJCQUFrQixPQTZDQTtBQUhsQix5RkF6Q0EsaUJBQVEsT0F5Q0E7QUFPUiw4RkEvQ0Esc0JBQWEsT0ErQ0E7QUFFYixnR0FoREEsd0JBQWUsT0FnREE7QUFKZix5R0EzQ0EsaUNBQXdCLE9BMkNBO0FBbUJ4QixxR0E3REEsNkJBQW9CLE9BNkRBO0FBbEJwQiwrRkExQ0EsdUJBQWMsT0EwQ0E7QUFRZCxzR0FqREEsOEJBQXFCLE9BaURBO0FBQ3JCLHdHQWpEQSxnQ0FBdUIsT0FpREE7QUEvQ3pCLDZDQVF1QjtBQWtCckIsMkZBekJBLHFCQUFVLE9BeUJBO0FBRVYsbUdBMUJBLDZCQUFrQixPQTBCQTtBQURsQiwyRkF4QkEscUJBQVUsT0F3QkE7QUFlVixnR0F0Q0EsMEJBQWUsT0FzQ0E7QUFZZixpR0FqREEsMkJBQWdCLE9BaURBO0FBWGhCLG1HQXJDQSw2QkFBa0IsT0FxQ0E7QUFibEIsNEZBdkJBLHNCQUFXLE9BdUJBO0FBckJiLG1EQUE4QztBQXlCNUMseUZBekJNLGtCQUFRLE9BeUJOO0FBeEJWLDJDQUFtQztBQWFqQyxzRkFiTSxlQUFLLE9BYU47QUFaUCxxREFBaUQ7QUFrQi9DLCtGQWxCTSw2QkFBYyxPQWtCTjtBQWpCaEIsMkNBT3NCO0FBeUJwQiw4RkEvQkEsdUJBQWEsT0ErQkE7QUFYYixzR0FuQkEsK0JBQXFCLE9BbUJBO0FBUnJCLDhGQVZBLHVCQUFhLE9BVUE7QUFlYiw2RkF4QkEsc0JBQVksT0F3QkE7QUFUWiw2RkFkQSxzQkFBWSxPQWNBO0FBUFosK0ZBTkEsd0JBQWMsT0FNQSJ9
|
|
@@ -1,20 +1,26 @@
|
|
|
1
|
-
import { SubscriptionEventType } from '../../types';
|
|
1
|
+
import { StatusResponse, SubscriptionEventType, SubscriptionPayload } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Subscribe to special client events
|
|
4
4
|
* @param eventType Event from SubscriptionEventType enum to be subscribed
|
|
5
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
5
6
|
* @param callback Optional function to be handled when event is coming
|
|
6
7
|
* @returns Promise that'll be fullfilled on successful subscription, otherwise rejected with reason
|
|
7
8
|
*/
|
|
8
|
-
declare const subscribeClientEvents: (eventType
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
declare const subscribeClientEvents: ({ eventType, payload, callback, }: {
|
|
10
|
+
eventType: SubscriptionEventType;
|
|
11
|
+
payload?: SubscriptionPayload | undefined;
|
|
12
|
+
callback?: Function | undefined;
|
|
13
|
+
}) => Promise<StatusResponse>;
|
|
11
14
|
/**
|
|
12
15
|
* Unsubscribe from previously subscribed client events
|
|
13
16
|
* @param eventType Event from SubscriptionEventType enum to be unsubscribed
|
|
17
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
14
18
|
* @param callback Function to be unsibscribed
|
|
15
19
|
* @returns Promise that'll be fullfilled on successful unsubscription, otherwise rejected with reason
|
|
16
20
|
*/
|
|
17
|
-
declare const unsubscribeClientEvents: (eventType
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
declare const unsubscribeClientEvents: ({ eventType, payload, callback, }: {
|
|
22
|
+
eventType: SubscriptionEventType;
|
|
23
|
+
payload?: SubscriptionPayload | undefined;
|
|
24
|
+
callback?: Function | undefined;
|
|
25
|
+
}) => Promise<StatusResponse>;
|
|
20
26
|
export { subscribeClientEvents, unsubscribeClientEvents };
|
|
@@ -8,71 +8,90 @@ const smartapp_bridge_1 = __importDefault(require("@expressms/smartapp-bridge"))
|
|
|
8
8
|
const types_1 = require("../../types");
|
|
9
9
|
const subscriptions = [];
|
|
10
10
|
let bridgeEventListenerInstalled = false;
|
|
11
|
-
const
|
|
12
|
-
return
|
|
11
|
+
const composeResponse = (status, errorCode) => {
|
|
12
|
+
return {
|
|
13
|
+
payload: {
|
|
14
|
+
status,
|
|
15
|
+
errorCode
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
const getSubscriptionId = (eventType, payload) => {
|
|
21
|
+
const sourceId = (payload === null || payload === void 0 ? void 0 : payload.id) ? '-' + (payload === null || payload === void 0 ? void 0 : payload.id) : '';
|
|
22
|
+
const sourceType = (payload === null || payload === void 0 ? void 0 : payload.type) ? '-' + (payload === null || payload === void 0 ? void 0 : payload.type) : '';
|
|
23
|
+
return `${eventType}${sourceType}${sourceId}`;
|
|
24
|
+
};
|
|
25
|
+
const isAnySubscriptions = (eventType, payload) => {
|
|
26
|
+
const id = getSubscriptionId(eventType, payload);
|
|
27
|
+
return subscriptions.some(sub => sub.id == id);
|
|
13
28
|
};
|
|
14
29
|
const installBridgeEventListener = () => {
|
|
15
30
|
if (bridgeEventListenerInstalled || !smartapp_bridge_1.default)
|
|
16
31
|
return;
|
|
17
32
|
bridgeEventListenerInstalled = true;
|
|
18
33
|
smartapp_bridge_1.default.onReceive(event => {
|
|
19
|
-
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
const id = getSubscriptionId(event.type, event.payload.source);
|
|
36
|
+
subscriptions.filter(sub => sub.id === id).map(sub => { var _a; return (_a = sub.callback) === null || _a === void 0 ? void 0 : _a.call(sub, event); });
|
|
20
37
|
});
|
|
21
38
|
};
|
|
22
39
|
/**
|
|
23
40
|
* Subscribe to special client events
|
|
24
41
|
* @param eventType Event from SubscriptionEventType enum to be subscribed
|
|
42
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
25
43
|
* @param callback Optional function to be handled when event is coming
|
|
26
44
|
* @returns Promise that'll be fullfilled on successful subscription, otherwise rejected with reason
|
|
27
45
|
*/
|
|
28
|
-
const subscribeClientEvents = (eventType, callback) => {
|
|
29
|
-
const successResponse = { status: types_1.STATUS.SUCCESS };
|
|
46
|
+
const subscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
30
47
|
// No need to subscribe event twice on client
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
48
|
+
if (isAnySubscriptions(eventType, payload)) {
|
|
49
|
+
const id = getSubscriptionId(eventType, payload);
|
|
50
|
+
subscriptions.push({ id, callback });
|
|
51
|
+
return Promise.resolve(composeResponse(types_1.STATUS.SUCCESS));
|
|
34
52
|
}
|
|
35
53
|
if (!smartapp_bridge_1.default)
|
|
36
|
-
return Promise.reject(types_1.ERROR_CODES.NO_BRIDGE);
|
|
54
|
+
return Promise.reject(composeResponse(types_1.STATUS.ERROR, types_1.ERROR_CODES.NO_BRIDGE));
|
|
37
55
|
return smartapp_bridge_1.default
|
|
38
56
|
.sendClientEvent({
|
|
39
57
|
method: types_1.METHODS.SUBSCRIBE_CLIENT_EVENTS,
|
|
40
|
-
params: {
|
|
41
|
-
event: eventType,
|
|
42
|
-
},
|
|
58
|
+
params: Object.assign({ event: eventType }, payload),
|
|
43
59
|
})
|
|
44
|
-
.then(() => {
|
|
60
|
+
.then((event) => {
|
|
61
|
+
const response = event;
|
|
62
|
+
const id = getSubscriptionId(eventType, payload);
|
|
63
|
+
if (response.payload.status !== types_1.STATUS.SUCCESS)
|
|
64
|
+
return response;
|
|
45
65
|
installBridgeEventListener();
|
|
46
|
-
subscriptions.push({
|
|
47
|
-
return
|
|
66
|
+
subscriptions.push({ id, callback });
|
|
67
|
+
return response;
|
|
48
68
|
});
|
|
49
69
|
};
|
|
50
70
|
exports.subscribeClientEvents = subscribeClientEvents;
|
|
51
71
|
/**
|
|
52
72
|
* Unsubscribe from previously subscribed client events
|
|
53
73
|
* @param eventType Event from SubscriptionEventType enum to be unsubscribed
|
|
74
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
54
75
|
* @param callback Function to be unsibscribed
|
|
55
76
|
* @returns Promise that'll be fullfilled on successful unsubscription, otherwise rejected with reason
|
|
56
77
|
*/
|
|
57
|
-
const unsubscribeClientEvents = (eventType, callback) => {
|
|
58
|
-
const
|
|
59
|
-
const index = subscriptions.findIndex(sub => sub.
|
|
78
|
+
const unsubscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
79
|
+
const id = getSubscriptionId(eventType, payload);
|
|
80
|
+
const index = subscriptions.findIndex(sub => sub.id == id && sub.callback == callback);
|
|
60
81
|
if (!smartapp_bridge_1.default)
|
|
61
82
|
return Promise.reject(types_1.ERROR_CODES.NO_BRIDGE);
|
|
62
83
|
if (index == -1)
|
|
63
|
-
return Promise.
|
|
84
|
+
return Promise.resolve(composeResponse(types_1.STATUS.ERROR, types_1.ERROR_CODES.SUBSCRIPTION_NOT_FOUND));
|
|
64
85
|
subscriptions.splice(index, 1);
|
|
65
86
|
// Send unsubscribe to client only at last subscription
|
|
66
|
-
if (
|
|
67
|
-
return Promise.resolve(
|
|
87
|
+
if (isAnySubscriptions(eventType, payload))
|
|
88
|
+
return Promise.resolve(composeResponse(types_1.STATUS.SUCCESS));
|
|
68
89
|
return smartapp_bridge_1.default
|
|
69
90
|
.sendClientEvent({
|
|
70
91
|
method: types_1.METHODS.UNSUBSCRIBE_CLIENT_EVENTS,
|
|
71
|
-
params: {
|
|
72
|
-
event: eventType,
|
|
73
|
-
},
|
|
92
|
+
params: Object.assign({ event: eventType }, payload),
|
|
74
93
|
})
|
|
75
|
-
.then(() =>
|
|
94
|
+
.then((event) => event);
|
|
76
95
|
};
|
|
77
96
|
exports.unsubscribeClientEvents = unsubscribeClientEvents;
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jbGllbnQvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlGQUErQztBQUMvQyx1Q0FBc0g7QUFFdEgsTUFBTSxhQUFhLEdBQStDLEVBQUUsQ0FBQTtBQUNwRSxJQUFJLDRCQUE0QixHQUFHLEtBQUssQ0FBQTtBQUV4QyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxTQUFrQixFQUFrQixFQUFFO0lBQzdFLE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxNQUFNO1lBQ04sU0FBUztTQUNWO0tBQ2dCLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBRUQsOERBQThEO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFnQyxFQUFFLE9BQWEsRUFBRSxFQUFFO0lBQzVFLE1BQU0sUUFBUSxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEVBQUUsRUFBQyxDQUFDLENBQUMsR0FBRyxJQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsR0FBRyxJQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTNELE9BQU8sR0FBRyxTQUFTLEdBQUcsVUFBVSxHQUFHLFFBQVEsRUFBRSxDQUFBO0FBQy9DLENBQUMsQ0FBQTtBQUVELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxTQUFnQyxFQUFFLE9BQTZCLEVBQUUsRUFBRTtJQUM3RixNQUFNLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EmitterEventPayload } from '@expressms/smartapp-bridge/build/main/types/eventEmitter';
|
|
2
|
-
import { CreateDeeplinkResponse, File, GetConnectionStatusResponse,
|
|
2
|
+
import { CreateDeeplinkResponse, File, GetConnectionStatusResponse, GetUnreadCounterResponse, SearchLocalPhonebookResponse, StatusResponse, SubscriptionPayload } from '../../types';
|
|
3
3
|
export * from './events';
|
|
4
4
|
export * from './storage';
|
|
5
5
|
declare const openClientSettings: () => Promise<EmitterEventPayload> | undefined;
|
|
@@ -62,4 +62,9 @@ declare const handleDeeplink: ({ link }: {
|
|
|
62
62
|
declare const searchLocalPhonebook: ({ filter }: {
|
|
63
63
|
filter: string | null;
|
|
64
64
|
}) => Promise<SearchLocalPhonebookResponse>;
|
|
65
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Get unread counter for chat/user/bot/smartapp.
|
|
67
|
+
* @returns Promise that'll be fullfilled with status data on success, otherwise rejected with reason
|
|
68
|
+
*/
|
|
69
|
+
declare const getUnreadCounter: ({ type, id }: SubscriptionPayload) => Promise<GetUnreadCounterResponse>;
|
|
70
|
+
export { openFile, openClientSettings, getChats, searchCorporatePhonebook, openGroupChat, sendBotCommand, requestLocation, getConnectionStatus, createDeeplink, openChatMessage, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.searchLocalPhonebook = exports.handleDeeplink = exports.openChatMessage = exports.createDeeplink = exports.getConnectionStatus = exports.requestLocation = exports.sendBotCommand = exports.openGroupChat = exports.searchCorporatePhonebook = exports.getChats = exports.openClientSettings = exports.openFile = void 0;
|
|
20
|
+
exports.getUnreadCounter = exports.searchLocalPhonebook = exports.handleDeeplink = exports.openChatMessage = exports.createDeeplink = exports.getConnectionStatus = exports.requestLocation = exports.sendBotCommand = exports.openGroupChat = exports.searchCorporatePhonebook = exports.getChats = exports.openClientSettings = exports.openFile = void 0;
|
|
21
21
|
const smartapp_bridge_1 = __importDefault(require("@expressms/smartapp-bridge"));
|
|
22
22
|
const types_1 = require("../../types");
|
|
23
23
|
__exportStar(require("./events"), exports);
|
|
@@ -156,4 +156,18 @@ const searchLocalPhonebook = ({ filter = null }) => {
|
|
|
156
156
|
.then(event => event);
|
|
157
157
|
};
|
|
158
158
|
exports.searchLocalPhonebook = searchLocalPhonebook;
|
|
159
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Get unread counter for chat/user/bot/smartapp.
|
|
161
|
+
* @returns Promise that'll be fullfilled with status data on success, otherwise rejected with reason
|
|
162
|
+
*/
|
|
163
|
+
const getUnreadCounter = async ({ type, id }) => {
|
|
164
|
+
if (!smartapp_bridge_1.default)
|
|
165
|
+
return Promise.reject(types_1.ERROR_CODES.NO_BRIDGE);
|
|
166
|
+
const response = await smartapp_bridge_1.default.sendClientEvent({
|
|
167
|
+
method: types_1.METHODS.GET_UNREAD_COUNTER,
|
|
168
|
+
params: { type, id },
|
|
169
|
+
});
|
|
170
|
+
return response;
|
|
171
|
+
};
|
|
172
|
+
exports.getUnreadCounter = getUnreadCounter;
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NsaWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlGQUErQztBQUUvQyx1Q0FVb0I7QUFDcEIsMkNBQXdCO0FBQ3hCLDRDQUF5QjtBQUV6QixNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUM5QixPQUFPLHlCQUFNLGFBQU4seUJBQU0sdUJBQU4seUJBQU0sQ0FBRSxlQUFlLENBQUM7UUFDN0IsTUFBTSxFQUFFLGVBQU8sQ0FBQyxvQkFBb0I7UUFDcEMsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFxS0MsZ0RBQWtCO0FBbktwQixNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBNkIsRUFBRSxFQUFFO0lBQ2hFLE9BQU8seUJBQU0sYUFBTix5QkFBTSx1QkFBTix5QkFBTSxDQUFFLGVBQWUsQ0FBQztRQUM3QixNQUFNLEVBQUUsZUFBTyxDQUFDLFNBQVM7UUFDekIsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQStKQyw0QkFBUTtBQTdKVixNQUFNLHdCQUF3QixHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxFQUE2QixFQUFFLEVBQUU7SUFDaEYsT0FBTyx5QkFBTSxhQUFOLHlCQUFNLHVCQUFOLHlCQUFNLENBQUUsZUFBZSxDQUFDO1FBQzdCLE1BQU0sRUFBRSxlQUFPLENBQUMsMEJBQTBCO1FBQzFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRTtLQUNuQixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUF5SkMsNERBQXdCO0FBdkoxQixNQUFNLGFBQWEsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUEyQixFQUFFLEVBQUU7SUFDakUsT0FBTyx5QkFBTSxhQUFO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
|
|
@@ -30,7 +30,8 @@ export declare enum METHODS {
|
|
|
30
30
|
CLIENT_STORAGE_REMOVE = "client_storage_remove",
|
|
31
31
|
CLIENT_STORAGE_CLEAR = "client_storage_clear",
|
|
32
32
|
HANDLE_DEEPLINK = "handle_deeplink",
|
|
33
|
-
SEARCH_LOCAL_PHONEBOOK = "search_local_phonebook"
|
|
33
|
+
SEARCH_LOCAL_PHONEBOOK = "search_local_phonebook",
|
|
34
|
+
GET_UNREAD_COUNTER = "get_unread_counter"
|
|
34
35
|
}
|
|
35
36
|
export declare enum STATUS {
|
|
36
37
|
SUCCESS = "success",
|
|
@@ -34,6 +34,7 @@ var METHODS;
|
|
|
34
34
|
METHODS["CLIENT_STORAGE_CLEAR"] = "client_storage_clear";
|
|
35
35
|
METHODS["HANDLE_DEEPLINK"] = "handle_deeplink";
|
|
36
36
|
METHODS["SEARCH_LOCAL_PHONEBOOK"] = "search_local_phonebook";
|
|
37
|
+
METHODS["GET_UNREAD_COUNTER"] = "get_unread_counter";
|
|
37
38
|
})(METHODS = exports.METHODS || (exports.METHODS = {}));
|
|
38
39
|
var STATUS;
|
|
39
40
|
(function (STATUS) {
|
|
@@ -45,4 +46,4 @@ var ERROR_CODES;
|
|
|
45
46
|
ERROR_CODES["NO_BRIDGE"] = "no_bridge";
|
|
46
47
|
ERROR_CODES["SUBSCRIPTION_NOT_FOUND"] = "subscription_not_found";
|
|
47
48
|
})(ERROR_CODES = exports.ERROR_CODES || (exports.ERROR_CODES = {}));
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2JyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxJQUFZLE9BaUNYO0FBakNELFdBQVksT0FBTztJQUNqQiwwQkFBZSxDQUFBO0lBQ2YsOENBQW1DLENBQUE7SUFDbkMsd0NBQTZCLENBQUE7SUFDN0Isd0NBQTZCLENBQUE7SUFDN0Isc0NBQTJCLENBQUE7SUFDM0Isc0NBQTJCLENBQUE7SUFDM0Isd0RBQTZDLENBQUE7SUFDN0Msd0NBQTZCLENBQUE7SUFDN0Isd0NBQTZCLENBQUE7SUFDN0IsNENBQWlDLENBQUE7SUFDakMsd0RBQTZDLENBQUE7SUFDN0Msa0NBQXVCLENBQUE7SUFDdkIsb0VBQXlELENBQUE7SUFDekQsZ0RBQXFDLENBQUE7SUFDckMsOENBQW1DLENBQUE7SUFDbkMsa0RBQXVDLENBQUE7SUFDdkMsZ0RBQXFDLENBQUE7SUFDckMsd0RBQTZDLENBQUE7SUFDN0MsOENBQW1DLENBQUE7SUFDbkMsa0NBQXVCLENBQUE7SUFDdkIsOERBQW1ELENBQUE7SUFDbkQsa0VBQXVELENBQUE7SUFDdkQsMERBQStDLENBQUE7SUFDL0MsOENBQW1DLENBQUE7SUFDbkMsa0RBQXVDLENBQUE7SUFDdkMsb0RBQXlDLENBQUE7SUFDekMsb0RBQXlDLENBQUE7SUFDekMsMERBQStDLENBQUE7SUFDL0Msd0RBQTZDLENBQUE7SUFDN0MsOENBQW1DLENBQUE7SUFDbkMsNERBQWlELENBQUE7SUFDakQsb0RBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQWpDVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFpQ2xCO0FBRUQsSUFBWSxNQUdYO0FBSEQsV0FBWSxNQUFNO0lBQ2hCLDZCQUFtQixDQUFBO0lBQ25CLHlCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLE1BQU0sR0FBTixjQUFNLEtBQU4sY0FBTSxRQUdqQjtBQUVELElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixzQ0FBdUIsQ0FBQTtJQUN2QixnRUFBaUQsQ0FBQTtBQUNuRCxDQUFDLEVBSFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEIifQ==
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { EmitterEventPayload } from '@expressms/smartapp-bridge/build/main/types/eventEmitter';
|
|
2
2
|
import { STATUS } from './bridge';
|
|
3
3
|
export declare enum SubscriptionEventType {
|
|
4
|
-
CONNECTION_STATUS = "connection_status"
|
|
4
|
+
CONNECTION_STATUS = "connection_status",
|
|
5
|
+
UNREAD_COUNTER_CHANGE = "unread_counter_change"
|
|
5
6
|
}
|
|
6
|
-
export type
|
|
7
|
+
export type SubscriptionPayload = {
|
|
8
|
+
type: 'huid' | 'chat' | 'smartapp';
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
export type GetConnectionStatusResponse = {
|
|
7
12
|
ref: string;
|
|
8
13
|
payload: {
|
|
9
|
-
connectionStatus:
|
|
14
|
+
connectionStatus: 'connected' | 'disconnected';
|
|
10
15
|
};
|
|
11
|
-
}
|
|
12
|
-
export type CreateDeeplinkResponse =
|
|
16
|
+
};
|
|
17
|
+
export type CreateDeeplinkResponse = {
|
|
13
18
|
ref: string;
|
|
14
19
|
payload: {
|
|
15
20
|
status: 'error' | 'success';
|
|
@@ -18,15 +23,15 @@ export type CreateDeeplinkResponse = ({
|
|
|
18
23
|
deeplink: string;
|
|
19
24
|
};
|
|
20
25
|
};
|
|
21
|
-
}
|
|
22
|
-
type LocalPhonebookEntry =
|
|
26
|
+
};
|
|
27
|
+
type LocalPhonebookEntry = {
|
|
23
28
|
avatar: string | null;
|
|
24
29
|
name: string | null;
|
|
25
30
|
contacts: {
|
|
26
31
|
contactType: string;
|
|
27
32
|
contact: string;
|
|
28
33
|
}[];
|
|
29
|
-
}
|
|
34
|
+
};
|
|
30
35
|
export interface SearchLocalPhonebookResponse extends EmitterEventPayload {
|
|
31
36
|
payload: {
|
|
32
37
|
status: STATUS;
|
|
@@ -34,4 +39,12 @@ export interface SearchLocalPhonebookResponse extends EmitterEventPayload {
|
|
|
34
39
|
localPhonebookEntries: Array<LocalPhonebookEntry>;
|
|
35
40
|
};
|
|
36
41
|
}
|
|
42
|
+
export type GetUnreadCounterResponse = {
|
|
43
|
+
ref: string;
|
|
44
|
+
payload: {
|
|
45
|
+
status: STATUS;
|
|
46
|
+
errorCode?: string | null;
|
|
47
|
+
unreadCounter: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
37
50
|
export {};
|
|
@@ -4,5 +4,6 @@ exports.SubscriptionEventType = void 0;
|
|
|
4
4
|
var SubscriptionEventType;
|
|
5
5
|
(function (SubscriptionEventType) {
|
|
6
6
|
SubscriptionEventType["CONNECTION_STATUS"] = "connection_status";
|
|
7
|
+
SubscriptionEventType["UNREAD_COUNTER_CHANGE"] = "unread_counter_change";
|
|
7
8
|
})(SubscriptionEventType = exports.SubscriptionEventType || (exports.SubscriptionEventType = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxJQUFZLHFCQUdYO0FBSEQsV0FBWSxxQkFBcUI7SUFDL0IsZ0VBQXVDLENBQUE7SUFDdkMsd0VBQStDLENBQUE7QUFDakQsQ0FBQyxFQUhXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBR2hDIn0=
|
package/build/module/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Bridge from '@expressms/smartapp-bridge';
|
|
2
|
-
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents } from './lib/client';
|
|
2
|
+
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, getUnreadCounter, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents } from './lib/client';
|
|
3
3
|
import { addContact, createPersonalChat, getContact, openContactCard, openPersonalChat, requestSelfProfile, sendMessage } from './lib/contacts';
|
|
4
4
|
import { useQuery } from './lib/helpers/helpers';
|
|
5
5
|
import { ready } from './lib/logging';
|
|
6
6
|
import { onNotification } from './lib/notification';
|
|
7
7
|
import { closeSmartApp, exitSmartAppToCatalog, onBackPressed, onMoveToRoot, openSmartApp, routingChanged } from './lib/routing';
|
|
8
|
-
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, };
|
|
8
|
+
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
package/build/module/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import Bridge from '@expressms/smartapp-bridge';
|
|
2
|
-
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents, } from './lib/client';
|
|
2
|
+
import { clientStorageClear, clientStorageGet, clientStorageRemove, clientStorageSet, createDeeplink, getChats, getConnectionStatus, getUnreadCounter, handleDeeplink, openChatMessage, openClientSettings, openFile, openGroupChat, requestLocation, searchCorporatePhonebook, searchLocalPhonebook, sendBotCommand, subscribeClientEvents, unsubscribeClientEvents, } from './lib/client';
|
|
3
3
|
import { addContact, createPersonalChat, getContact, openContactCard, openPersonalChat, requestSelfProfile, sendMessage, } from './lib/contacts';
|
|
4
4
|
import { useQuery } from './lib/helpers/helpers';
|
|
5
5
|
import { ready } from './lib/logging';
|
|
6
6
|
import { onNotification } from './lib/notification';
|
|
7
7
|
import { closeSmartApp, exitSmartAppToCatalog, onBackPressed, onMoveToRoot, openSmartApp, routingChanged, } from './lib/routing';
|
|
8
|
-
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, };
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
export { Bridge, ready, routingChanged, onBackPressed, addContact, getContact, createPersonalChat, onNotification, sendMessage, openSmartApp, openFile, exitSmartAppToCatalog, useQuery, openClientSettings, getChats, searchCorporatePhonebook, sendBotCommand, openGroupChat, onMoveToRoot, requestLocation, openContactCard, requestSelfProfile, closeSmartApp, getConnectionStatus, subscribeClientEvents, unsubscribeClientEvents, createDeeplink, openChatMessage, clientStorageGet, clientStorageSet, clientStorageRemove, clientStorageClear, openPersonalChat, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUE7QUFDL0MsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLGFBQWEsRUFDYixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsV0FBVyxHQUNaLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFBO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDbkMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBQ1osWUFBWSxFQUNaLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEtBQUssRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixxQkFBcUIsRUFDckIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsQ0FBQSJ9
|
|
@@ -1,20 +1,26 @@
|
|
|
1
|
-
import { SubscriptionEventType } from '../../types';
|
|
1
|
+
import { StatusResponse, SubscriptionEventType, SubscriptionPayload } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Subscribe to special client events
|
|
4
4
|
* @param eventType Event from SubscriptionEventType enum to be subscribed
|
|
5
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
5
6
|
* @param callback Optional function to be handled when event is coming
|
|
6
7
|
* @returns Promise that'll be fullfilled on successful subscription, otherwise rejected with reason
|
|
7
8
|
*/
|
|
8
|
-
declare const subscribeClientEvents: (eventType
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
declare const subscribeClientEvents: ({ eventType, payload, callback, }: {
|
|
10
|
+
eventType: SubscriptionEventType;
|
|
11
|
+
payload?: SubscriptionPayload | undefined;
|
|
12
|
+
callback?: Function | undefined;
|
|
13
|
+
}) => Promise<StatusResponse>;
|
|
11
14
|
/**
|
|
12
15
|
* Unsubscribe from previously subscribed client events
|
|
13
16
|
* @param eventType Event from SubscriptionEventType enum to be unsubscribed
|
|
17
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
14
18
|
* @param callback Function to be unsibscribed
|
|
15
19
|
* @returns Promise that'll be fullfilled on successful unsubscription, otherwise rejected with reason
|
|
16
20
|
*/
|
|
17
|
-
declare const unsubscribeClientEvents: (eventType
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
declare const unsubscribeClientEvents: ({ eventType, payload, callback, }: {
|
|
22
|
+
eventType: SubscriptionEventType;
|
|
23
|
+
payload?: SubscriptionPayload | undefined;
|
|
24
|
+
callback?: Function | undefined;
|
|
25
|
+
}) => Promise<StatusResponse>;
|
|
20
26
|
export { subscribeClientEvents, unsubscribeClientEvents };
|
|
@@ -2,70 +2,95 @@ import bridge from '@expressms/smartapp-bridge';
|
|
|
2
2
|
import { ERROR_CODES, METHODS, STATUS } from '../../types';
|
|
3
3
|
const subscriptions = [];
|
|
4
4
|
let bridgeEventListenerInstalled = false;
|
|
5
|
-
const
|
|
6
|
-
return
|
|
5
|
+
const composeResponse = (status, errorCode) => {
|
|
6
|
+
return {
|
|
7
|
+
payload: {
|
|
8
|
+
status,
|
|
9
|
+
errorCode
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
const getSubscriptionId = (eventType, payload) => {
|
|
15
|
+
const sourceId = payload?.id ? '-' + payload?.id : '';
|
|
16
|
+
const sourceType = payload?.type ? '-' + payload?.type : '';
|
|
17
|
+
return `${eventType}${sourceType}${sourceId}`;
|
|
18
|
+
};
|
|
19
|
+
const isAnySubscriptions = (eventType, payload) => {
|
|
20
|
+
const id = getSubscriptionId(eventType, payload);
|
|
21
|
+
return subscriptions.some(sub => sub.id == id);
|
|
7
22
|
};
|
|
8
23
|
const installBridgeEventListener = () => {
|
|
9
24
|
if (bridgeEventListenerInstalled || !bridge)
|
|
10
25
|
return;
|
|
11
26
|
bridgeEventListenerInstalled = true;
|
|
12
27
|
bridge.onReceive(event => {
|
|
13
|
-
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
const id = getSubscriptionId(event.type, event.payload.source);
|
|
30
|
+
subscriptions.filter(sub => sub.id === id).map(sub => sub.callback?.(event));
|
|
14
31
|
});
|
|
15
32
|
};
|
|
16
33
|
/**
|
|
17
34
|
* Subscribe to special client events
|
|
18
35
|
* @param eventType Event from SubscriptionEventType enum to be subscribed
|
|
36
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
19
37
|
* @param callback Optional function to be handled when event is coming
|
|
20
38
|
* @returns Promise that'll be fullfilled on successful subscription, otherwise rejected with reason
|
|
21
39
|
*/
|
|
22
|
-
const subscribeClientEvents = (eventType, callback) => {
|
|
23
|
-
const successResponse = { status: STATUS.SUCCESS };
|
|
40
|
+
const subscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
24
41
|
// No need to subscribe event twice on client
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
42
|
+
if (isAnySubscriptions(eventType, payload)) {
|
|
43
|
+
const id = getSubscriptionId(eventType, payload);
|
|
44
|
+
subscriptions.push({ id, callback });
|
|
45
|
+
return Promise.resolve(composeResponse(STATUS.SUCCESS));
|
|
28
46
|
}
|
|
29
47
|
if (!bridge)
|
|
30
|
-
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
48
|
+
return Promise.reject(composeResponse(STATUS.ERROR, ERROR_CODES.NO_BRIDGE));
|
|
31
49
|
return bridge
|
|
32
50
|
.sendClientEvent({
|
|
33
51
|
method: METHODS.SUBSCRIBE_CLIENT_EVENTS,
|
|
34
52
|
params: {
|
|
35
53
|
event: eventType,
|
|
54
|
+
...payload,
|
|
36
55
|
},
|
|
37
56
|
})
|
|
38
|
-
.then(() => {
|
|
57
|
+
.then((event) => {
|
|
58
|
+
const response = event;
|
|
59
|
+
const id = getSubscriptionId(eventType, payload);
|
|
60
|
+
if (response.payload.status !== STATUS.SUCCESS)
|
|
61
|
+
return response;
|
|
39
62
|
installBridgeEventListener();
|
|
40
|
-
subscriptions.push({
|
|
41
|
-
return
|
|
63
|
+
subscriptions.push({ id, callback });
|
|
64
|
+
return response;
|
|
42
65
|
});
|
|
43
66
|
};
|
|
44
67
|
/**
|
|
45
68
|
* Unsubscribe from previously subscribed client events
|
|
46
69
|
* @param eventType Event from SubscriptionEventType enum to be unsubscribed
|
|
70
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
47
71
|
* @param callback Function to be unsibscribed
|
|
48
72
|
* @returns Promise that'll be fullfilled on successful unsubscription, otherwise rejected with reason
|
|
49
73
|
*/
|
|
50
|
-
const unsubscribeClientEvents = (eventType, callback) => {
|
|
51
|
-
const
|
|
52
|
-
const index = subscriptions.findIndex(sub => sub.
|
|
74
|
+
const unsubscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
75
|
+
const id = getSubscriptionId(eventType, payload);
|
|
76
|
+
const index = subscriptions.findIndex(sub => sub.id == id && sub.callback == callback);
|
|
53
77
|
if (!bridge)
|
|
54
78
|
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
55
79
|
if (index == -1)
|
|
56
|
-
return Promise.
|
|
80
|
+
return Promise.resolve(composeResponse(STATUS.ERROR, ERROR_CODES.SUBSCRIPTION_NOT_FOUND));
|
|
57
81
|
subscriptions.splice(index, 1);
|
|
58
82
|
// Send unsubscribe to client only at last subscription
|
|
59
|
-
if (
|
|
60
|
-
return Promise.resolve(
|
|
83
|
+
if (isAnySubscriptions(eventType, payload))
|
|
84
|
+
return Promise.resolve(composeResponse(STATUS.SUCCESS));
|
|
61
85
|
return bridge
|
|
62
86
|
.sendClientEvent({
|
|
63
87
|
method: METHODS.UNSUBSCRIBE_CLIENT_EVENTS,
|
|
64
88
|
params: {
|
|
65
89
|
event: eventType,
|
|
90
|
+
...payload,
|
|
66
91
|
},
|
|
67
92
|
})
|
|
68
|
-
.then(() =>
|
|
93
|
+
.then((event) => event);
|
|
69
94
|
};
|
|
70
95
|
export { subscribeClientEvents, unsubscribeClientEvents };
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jbGllbnQvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLDRCQUE0QixDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBOEQsTUFBTSxhQUFhLENBQUE7QUFFdEgsTUFBTSxhQUFhLEdBQStDLEVBQUUsQ0FBQTtBQUNwRSxJQUFJLDRCQUE0QixHQUFHLEtBQUssQ0FBQTtBQUV4QyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxTQUFrQixFQUFrQixFQUFFO0lBQzdFLE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxNQUFNO1lBQ04sU0FBUztTQUNWO0tBQ2dCLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBRUQsOERBQThEO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFnQyxFQUFFLE9BQWEsRUFBRSxFQUFFO0lBQzVFLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDckQsTUFBTSxVQUFVLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUUzRCxPQUFPLEdBQUcsU0FBUyxHQUFHLFVBQVUsR0FBRyxRQUFRLEVBQUUsQ0FBQTtBQUMvQyxDQUFDLENBQUE7QUFFRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBZ0MsRUFBRSxPQUE2QixFQUFFLEVBQUU7SUFDN0YsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRWhELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EmitterEventPayload } from '@expressms/smartapp-bridge/build/main/types/eventEmitter';
|
|
2
|
-
import { CreateDeeplinkResponse, File, GetConnectionStatusResponse,
|
|
2
|
+
import { CreateDeeplinkResponse, File, GetConnectionStatusResponse, GetUnreadCounterResponse, SearchLocalPhonebookResponse, StatusResponse, SubscriptionPayload } from '../../types';
|
|
3
3
|
export * from './events';
|
|
4
4
|
export * from './storage';
|
|
5
5
|
declare const openClientSettings: () => Promise<EmitterEventPayload> | undefined;
|
|
@@ -62,4 +62,9 @@ declare const handleDeeplink: ({ link }: {
|
|
|
62
62
|
declare const searchLocalPhonebook: ({ filter }: {
|
|
63
63
|
filter: string | null;
|
|
64
64
|
}) => Promise<SearchLocalPhonebookResponse>;
|
|
65
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Get unread counter for chat/user/bot/smartapp.
|
|
67
|
+
* @returns Promise that'll be fullfilled with status data on success, otherwise rejected with reason
|
|
68
|
+
*/
|
|
69
|
+
declare const getUnreadCounter: ({ type, id }: SubscriptionPayload) => Promise<GetUnreadCounterResponse>;
|
|
70
|
+
export { openFile, openClientSettings, getChats, searchCorporatePhonebook, openGroupChat, sendBotCommand, requestLocation, getConnectionStatus, createDeeplink, openChatMessage, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
|
@@ -124,5 +124,18 @@ const searchLocalPhonebook = ({ filter = null }) => {
|
|
|
124
124
|
})
|
|
125
125
|
.then(event => event);
|
|
126
126
|
};
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
/**
|
|
128
|
+
* Get unread counter for chat/user/bot/smartapp.
|
|
129
|
+
* @returns Promise that'll be fullfilled with status data on success, otherwise rejected with reason
|
|
130
|
+
*/
|
|
131
|
+
const getUnreadCounter = async ({ type, id }) => {
|
|
132
|
+
if (!bridge)
|
|
133
|
+
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
134
|
+
const response = await bridge.sendClientEvent({
|
|
135
|
+
method: METHODS.GET_UNREAD_COUNTER,
|
|
136
|
+
params: { type, id },
|
|
137
|
+
});
|
|
138
|
+
return response;
|
|
139
|
+
};
|
|
140
|
+
export { openFile, openClientSettings, getChats, searchCorporatePhonebook, openGroupChat, sendBotCommand, requestLocation, getConnectionStatus, createDeeplink, openChatMessage, handleDeeplink, searchLocalPhonebook, getUnreadCounter, };
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NsaWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSw0QkFBNEIsQ0FBQTtBQUUvQyxPQUFPLEVBRUwsV0FBVyxFQUlYLE9BQU8sR0FJUixNQUFNLGFBQWEsQ0FBQTtBQUNwQixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFdBQVcsQ0FBQTtBQUV6QixNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUM5QixPQUFPLE1BQU0sRUFBRSxlQUFlLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7UUFDcEMsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBNkIsRUFBRSxFQUFFO0lBQ2hFLE9BQU8sTUFBTSxFQUFFLGVBQWUsQ0FBQztRQUM3QixNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDekIsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUVELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQTZCLEVBQUUsRUFBRTtJQUNoRixPQUFPLE1BQU0sRUFBRSxlQUFlLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQywwQkFBMEI7UUFDMUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQTJCLEVBQUUsRUFBRTtJQUNqRSxPQUFPLE1BQU0sRUFBRSxlQUFlLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1FBQy9CLE1BQU0sRUFBRSxFQUFF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
|
|
@@ -30,7 +30,8 @@ export declare enum METHODS {
|
|
|
30
30
|
CLIENT_STORAGE_REMOVE = "client_storage_remove",
|
|
31
31
|
CLIENT_STORAGE_CLEAR = "client_storage_clear",
|
|
32
32
|
HANDLE_DEEPLINK = "handle_deeplink",
|
|
33
|
-
SEARCH_LOCAL_PHONEBOOK = "search_local_phonebook"
|
|
33
|
+
SEARCH_LOCAL_PHONEBOOK = "search_local_phonebook",
|
|
34
|
+
GET_UNREAD_COUNTER = "get_unread_counter"
|
|
34
35
|
}
|
|
35
36
|
export declare enum STATUS {
|
|
36
37
|
SUCCESS = "success",
|
|
@@ -31,6 +31,7 @@ export var METHODS;
|
|
|
31
31
|
METHODS["CLIENT_STORAGE_CLEAR"] = "client_storage_clear";
|
|
32
32
|
METHODS["HANDLE_DEEPLINK"] = "handle_deeplink";
|
|
33
33
|
METHODS["SEARCH_LOCAL_PHONEBOOK"] = "search_local_phonebook";
|
|
34
|
+
METHODS["GET_UNREAD_COUNTER"] = "get_unread_counter";
|
|
34
35
|
})(METHODS || (METHODS = {}));
|
|
35
36
|
export var STATUS;
|
|
36
37
|
(function (STATUS) {
|
|
@@ -42,4 +43,4 @@ export var ERROR_CODES;
|
|
|
42
43
|
ERROR_CODES["NO_BRIDGE"] = "no_bridge";
|
|
43
44
|
ERROR_CODES["SUBSCRIPTION_NOT_FOUND"] = "subscription_not_found";
|
|
44
45
|
})(ERROR_CODES || (ERROR_CODES = {}));
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2JyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSxPQWlDWDtBQWpDRCxXQUFZLE9BQU87SUFDakIsMEJBQWUsQ0FBQTtJQUNmLDhDQUFtQyxDQUFBO0lBQ25DLHdDQUE2QixDQUFBO0lBQzdCLHdDQUE2QixDQUFBO0lBQzdCLHNDQUEyQixDQUFBO0lBQzNCLHNDQUEyQixDQUFBO0lBQzNCLHdEQUE2QyxDQUFBO0lBQzdDLHdDQUE2QixDQUFBO0lBQzdCLHdDQUE2QixDQUFBO0lBQzdCLDRDQUFpQyxDQUFBO0lBQ2pDLHdEQUE2QyxDQUFBO0lBQzdDLGtDQUF1QixDQUFBO0lBQ3ZCLG9FQUF5RCxDQUFBO0lBQ3pELGdEQUFxQyxDQUFBO0lBQ3JDLDhDQUFtQyxDQUFBO0lBQ25DLGtEQUF1QyxDQUFBO0lBQ3ZDLGdEQUFxQyxDQUFBO0lBQ3JDLHdEQUE2QyxDQUFBO0lBQzdDLDhDQUFtQyxDQUFBO0lBQ25DLGtDQUF1QixDQUFBO0lBQ3ZCLDhEQUFtRCxDQUFBO0lBQ25ELGtFQUF1RCxDQUFBO0lBQ3ZELDBEQUErQyxDQUFBO0lBQy9DLDhDQUFtQyxDQUFBO0lBQ25DLGtEQUF1QyxDQUFBO0lBQ3ZDLG9EQUF5QyxDQUFBO0lBQ3pDLG9EQUF5QyxDQUFBO0lBQ3pDLDBEQUErQyxDQUFBO0lBQy9DLHdEQUE2QyxDQUFBO0lBQzdDLDhDQUFtQyxDQUFBO0lBQ25DLDREQUFpRCxDQUFBO0lBQ2pELG9EQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFqQ1csT0FBTyxLQUFQLE9BQU8sUUFpQ2xCO0FBRUQsTUFBTSxDQUFOLElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQiw2QkFBbUIsQ0FBQTtJQUNuQix5QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxNQUFNLEtBQU4sTUFBTSxRQUdqQjtBQUVELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsc0NBQXVCLENBQUE7SUFDdkIsZ0VBQWlELENBQUE7QUFDbkQsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIn0=
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { EmitterEventPayload } from '@expressms/smartapp-bridge/build/main/types/eventEmitter';
|
|
2
2
|
import { STATUS } from './bridge';
|
|
3
3
|
export declare enum SubscriptionEventType {
|
|
4
|
-
CONNECTION_STATUS = "connection_status"
|
|
4
|
+
CONNECTION_STATUS = "connection_status",
|
|
5
|
+
UNREAD_COUNTER_CHANGE = "unread_counter_change"
|
|
5
6
|
}
|
|
6
|
-
export type
|
|
7
|
+
export type SubscriptionPayload = {
|
|
8
|
+
type: 'huid' | 'chat' | 'smartapp';
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
export type GetConnectionStatusResponse = {
|
|
7
12
|
ref: string;
|
|
8
13
|
payload: {
|
|
9
|
-
connectionStatus:
|
|
14
|
+
connectionStatus: 'connected' | 'disconnected';
|
|
10
15
|
};
|
|
11
|
-
}
|
|
12
|
-
export type CreateDeeplinkResponse =
|
|
16
|
+
};
|
|
17
|
+
export type CreateDeeplinkResponse = {
|
|
13
18
|
ref: string;
|
|
14
19
|
payload: {
|
|
15
20
|
status: 'error' | 'success';
|
|
@@ -18,15 +23,15 @@ export type CreateDeeplinkResponse = ({
|
|
|
18
23
|
deeplink: string;
|
|
19
24
|
};
|
|
20
25
|
};
|
|
21
|
-
}
|
|
22
|
-
type LocalPhonebookEntry =
|
|
26
|
+
};
|
|
27
|
+
type LocalPhonebookEntry = {
|
|
23
28
|
avatar: string | null;
|
|
24
29
|
name: string | null;
|
|
25
30
|
contacts: {
|
|
26
31
|
contactType: string;
|
|
27
32
|
contact: string;
|
|
28
33
|
}[];
|
|
29
|
-
}
|
|
34
|
+
};
|
|
30
35
|
export interface SearchLocalPhonebookResponse extends EmitterEventPayload {
|
|
31
36
|
payload: {
|
|
32
37
|
status: STATUS;
|
|
@@ -34,4 +39,12 @@ export interface SearchLocalPhonebookResponse extends EmitterEventPayload {
|
|
|
34
39
|
localPhonebookEntries: Array<LocalPhonebookEntry>;
|
|
35
40
|
};
|
|
36
41
|
}
|
|
42
|
+
export type GetUnreadCounterResponse = {
|
|
43
|
+
ref: string;
|
|
44
|
+
payload: {
|
|
45
|
+
status: STATUS;
|
|
46
|
+
errorCode?: string | null;
|
|
47
|
+
unreadCounter: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
37
50
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export var SubscriptionEventType;
|
|
2
2
|
(function (SubscriptionEventType) {
|
|
3
3
|
SubscriptionEventType["CONNECTION_STATUS"] = "connection_status";
|
|
4
|
+
SubscriptionEventType["UNREAD_COUNTER_CHANGE"] = "unread_counter_change";
|
|
4
5
|
})(SubscriptionEventType || (SubscriptionEventType = {}));
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQU4sSUFBWSxxQkFHWDtBQUhELFdBQVkscUJBQXFCO0lBQy9CLGdFQUF1QyxDQUFBO0lBQ3ZDLHdFQUErQyxDQUFBO0FBQ2pELENBQUMsRUFIVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBR2hDIn0=
|
package/build/umd/index.js
CHANGED
|
@@ -1952,6 +1952,7 @@
|
|
|
1952
1952
|
METHODS["CLIENT_STORAGE_CLEAR"] = "client_storage_clear";
|
|
1953
1953
|
METHODS["HANDLE_DEEPLINK"] = "handle_deeplink";
|
|
1954
1954
|
METHODS["SEARCH_LOCAL_PHONEBOOK"] = "search_local_phonebook";
|
|
1955
|
+
METHODS["GET_UNREAD_COUNTER"] = "get_unread_counter";
|
|
1955
1956
|
})(METHODS || (METHODS = {}));
|
|
1956
1957
|
var STATUS;
|
|
1957
1958
|
(function (STATUS) {
|
|
@@ -1973,6 +1974,7 @@
|
|
|
1973
1974
|
var SubscriptionEventType;
|
|
1974
1975
|
(function (SubscriptionEventType) {
|
|
1975
1976
|
SubscriptionEventType["CONNECTION_STATUS"] = "connection_status";
|
|
1977
|
+
SubscriptionEventType["UNREAD_COUNTER_CHANGE"] = "unread_counter_change";
|
|
1976
1978
|
})(SubscriptionEventType || (SubscriptionEventType = {}));
|
|
1977
1979
|
|
|
1978
1980
|
var CLIENT_STORAGE_ERROR_CODES;
|
|
@@ -1984,70 +1986,95 @@
|
|
|
1984
1986
|
|
|
1985
1987
|
const subscriptions = [];
|
|
1986
1988
|
let bridgeEventListenerInstalled = false;
|
|
1987
|
-
const
|
|
1988
|
-
return
|
|
1989
|
+
const composeResponse = (status, errorCode) => {
|
|
1990
|
+
return {
|
|
1991
|
+
payload: {
|
|
1992
|
+
status,
|
|
1993
|
+
errorCode
|
|
1994
|
+
},
|
|
1995
|
+
};
|
|
1996
|
+
};
|
|
1997
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1998
|
+
const getSubscriptionId = (eventType, payload) => {
|
|
1999
|
+
const sourceId = payload?.id ? '-' + payload?.id : '';
|
|
2000
|
+
const sourceType = payload?.type ? '-' + payload?.type : '';
|
|
2001
|
+
return `${eventType}${sourceType}${sourceId}`;
|
|
2002
|
+
};
|
|
2003
|
+
const isAnySubscriptions = (eventType, payload) => {
|
|
2004
|
+
const id = getSubscriptionId(eventType, payload);
|
|
2005
|
+
return subscriptions.some(sub => sub.id == id);
|
|
1989
2006
|
};
|
|
1990
2007
|
const installBridgeEventListener = () => {
|
|
1991
2008
|
if (bridgeEventListenerInstalled || !bridge)
|
|
1992
2009
|
return;
|
|
1993
2010
|
bridgeEventListenerInstalled = true;
|
|
1994
2011
|
bridge.onReceive(event => {
|
|
1995
|
-
|
|
2012
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2013
|
+
const id = getSubscriptionId(event.type, event.payload.source);
|
|
2014
|
+
subscriptions.filter(sub => sub.id === id).map(sub => sub.callback?.(event));
|
|
1996
2015
|
});
|
|
1997
2016
|
};
|
|
1998
2017
|
/**
|
|
1999
2018
|
* Subscribe to special client events
|
|
2000
2019
|
* @param eventType Event from SubscriptionEventType enum to be subscribed
|
|
2020
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
2001
2021
|
* @param callback Optional function to be handled when event is coming
|
|
2002
2022
|
* @returns Promise that'll be fullfilled on successful subscription, otherwise rejected with reason
|
|
2003
2023
|
*/
|
|
2004
|
-
const subscribeClientEvents = (eventType, callback) => {
|
|
2005
|
-
const successResponse = { status: STATUS.SUCCESS };
|
|
2024
|
+
const subscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
2006
2025
|
// No need to subscribe event twice on client
|
|
2007
|
-
if (
|
|
2008
|
-
|
|
2009
|
-
|
|
2026
|
+
if (isAnySubscriptions(eventType, payload)) {
|
|
2027
|
+
const id = getSubscriptionId(eventType, payload);
|
|
2028
|
+
subscriptions.push({ id, callback });
|
|
2029
|
+
return Promise.resolve(composeResponse(STATUS.SUCCESS));
|
|
2010
2030
|
}
|
|
2011
2031
|
if (!bridge)
|
|
2012
|
-
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
2032
|
+
return Promise.reject(composeResponse(STATUS.ERROR, ERROR_CODES.NO_BRIDGE));
|
|
2013
2033
|
return bridge
|
|
2014
2034
|
.sendClientEvent({
|
|
2015
2035
|
method: METHODS.SUBSCRIBE_CLIENT_EVENTS,
|
|
2016
2036
|
params: {
|
|
2017
2037
|
event: eventType,
|
|
2038
|
+
...payload,
|
|
2018
2039
|
},
|
|
2019
2040
|
})
|
|
2020
|
-
.then(() => {
|
|
2041
|
+
.then((event) => {
|
|
2042
|
+
const response = event;
|
|
2043
|
+
const id = getSubscriptionId(eventType, payload);
|
|
2044
|
+
if (response.payload.status !== STATUS.SUCCESS)
|
|
2045
|
+
return response;
|
|
2021
2046
|
installBridgeEventListener();
|
|
2022
|
-
subscriptions.push({
|
|
2023
|
-
return
|
|
2047
|
+
subscriptions.push({ id, callback });
|
|
2048
|
+
return response;
|
|
2024
2049
|
});
|
|
2025
2050
|
};
|
|
2026
2051
|
/**
|
|
2027
2052
|
* Unsubscribe from previously subscribed client events
|
|
2028
2053
|
* @param eventType Event from SubscriptionEventType enum to be unsubscribed
|
|
2054
|
+
* @param payload Additional params, for example `{ id: 'email-app', type: 'smartapp' }`
|
|
2029
2055
|
* @param callback Function to be unsibscribed
|
|
2030
2056
|
* @returns Promise that'll be fullfilled on successful unsubscription, otherwise rejected with reason
|
|
2031
2057
|
*/
|
|
2032
|
-
const unsubscribeClientEvents = (eventType, callback) => {
|
|
2033
|
-
const
|
|
2034
|
-
const index = subscriptions.findIndex(sub => sub.
|
|
2058
|
+
const unsubscribeClientEvents = ({ eventType, payload, callback, }) => {
|
|
2059
|
+
const id = getSubscriptionId(eventType, payload);
|
|
2060
|
+
const index = subscriptions.findIndex(sub => sub.id == id && sub.callback == callback);
|
|
2035
2061
|
if (!bridge)
|
|
2036
2062
|
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
2037
2063
|
if (index == -1)
|
|
2038
|
-
return Promise.
|
|
2064
|
+
return Promise.resolve(composeResponse(STATUS.ERROR, ERROR_CODES.SUBSCRIPTION_NOT_FOUND));
|
|
2039
2065
|
subscriptions.splice(index, 1);
|
|
2040
2066
|
// Send unsubscribe to client only at last subscription
|
|
2041
|
-
if (
|
|
2042
|
-
return Promise.resolve(
|
|
2067
|
+
if (isAnySubscriptions(eventType, payload))
|
|
2068
|
+
return Promise.resolve(composeResponse(STATUS.SUCCESS));
|
|
2043
2069
|
return bridge
|
|
2044
2070
|
.sendClientEvent({
|
|
2045
2071
|
method: METHODS.UNSUBSCRIBE_CLIENT_EVENTS,
|
|
2046
2072
|
params: {
|
|
2047
2073
|
event: eventType,
|
|
2074
|
+
...payload,
|
|
2048
2075
|
},
|
|
2049
2076
|
})
|
|
2050
|
-
.then(() =>
|
|
2077
|
+
.then((event) => event);
|
|
2051
2078
|
};
|
|
2052
2079
|
|
|
2053
2080
|
/**
|
|
@@ -2248,6 +2275,19 @@
|
|
|
2248
2275
|
})
|
|
2249
2276
|
.then(event => event);
|
|
2250
2277
|
};
|
|
2278
|
+
/**
|
|
2279
|
+
* Get unread counter for chat/user/bot/smartapp.
|
|
2280
|
+
* @returns Promise that'll be fullfilled with status data on success, otherwise rejected with reason
|
|
2281
|
+
*/
|
|
2282
|
+
const getUnreadCounter = async ({ type, id }) => {
|
|
2283
|
+
if (!bridge)
|
|
2284
|
+
return Promise.reject(ERROR_CODES.NO_BRIDGE);
|
|
2285
|
+
const response = await bridge.sendClientEvent({
|
|
2286
|
+
method: METHODS.GET_UNREAD_COUNTER,
|
|
2287
|
+
params: { type, id },
|
|
2288
|
+
});
|
|
2289
|
+
return response;
|
|
2290
|
+
};
|
|
2251
2291
|
|
|
2252
2292
|
const addContact = ({ phone, name }) => {
|
|
2253
2293
|
return bridge?.sendClientEvent({
|
|
@@ -2389,6 +2429,7 @@
|
|
|
2389
2429
|
exports.getChats = getChats;
|
|
2390
2430
|
exports.getConnectionStatus = getConnectionStatus;
|
|
2391
2431
|
exports.getContact = getContact;
|
|
2432
|
+
exports.getUnreadCounter = getUnreadCounter;
|
|
2392
2433
|
exports.handleDeeplink = handleDeeplink;
|
|
2393
2434
|
exports.onBackPressed = onBackPressed;
|
|
2394
2435
|
exports.onMoveToRoot = onMoveToRoot;
|