@becomes/cms-cloud-client
Version:
SDK for accessing BCMS Cloud API
89 lines (88 loc) • 2.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvitationHandler = void 0;
const queue_1 = require("@banez/queue");
const types_1 = require("@banez/queue/types");
class InvitationHandler {
sdk;
baseUrl(instanceId) {
return `/v2/instance/${instanceId}/invitation`;
}
getAllLatch = {};
getAllQueue = (0, queue_1.createQueue)();
getQueue = (0, queue_1.createQueue)();
constructor(sdk) {
this.sdk = sdk;
}
async getAll(data) {
const queue = await this.getAllQueue({
name: 'getAll',
handler: async () => {
if (!data.skipCache && this.getAllLatch[data.instanceId]) {
return this.sdk.store.invitation.findMany((e) => e.instances.find((i) => i.id === data.instanceId));
}
const result = await this.sdk.send({
url: `${this.baseUrl(data.instanceId)}/all`,
method: 'GET',
});
this.sdk.store.invitation.set(result.items);
this.getAllLatch[data.instanceId] = true;
return result.items;
},
}).wait;
if (queue instanceof types_1.QueueError) {
throw queue.error;
}
return queue.data;
}
async get(data) {
const queue = await this.getQueue({
name: 'get',
handler: async () => {
if (!data.skipCache) {
const cacheHit = this.sdk.store.invitation.find((e) => e._id === data.invitationId);
if (cacheHit) {
return cacheHit;
}
}
const result = await this.sdk.send({
url: `${this.baseUrl(data.instanceId)}/${data.invitationId}`,
method: 'GET',
});
this.sdk.store.invitation.set(result.item);
return result.item;
},
}).wait;
if (queue instanceof types_1.QueueError) {
throw queue.error;
}
return queue.data;
}
async create(data) {
const result = await this.sdk.send({
url: `${this.baseUrl(data.instanceId)}`,
method: 'POST',
data,
});
if (result.new) {
this.sdk.store.invitation.set(result.item);
}
}
async verify(data) {
const result = await this.sdk.send({
url: `${this.baseUrl(data.instanceId)}/verify`,
method: 'POST',
doNotAuth: true,
data,
});
return result.item;
}
async deleteById(data) {
await this.sdk.send({
url: `${this.baseUrl(data.instanceId)}/${data.invitationId}`,
method: 'DELETE',
data,
});
}
}
exports.InvitationHandler = InvitationHandler;