ac-node
Version:
A common module for building Atlassian Connect add-ons
73 lines (63 loc) • 1.77 kB
JavaScript
var EventEmitter = require('events').EventEmitter;
function Tenants(store) {
this._store = store;
}
Tenants.prototype = Object.create(EventEmitter.prototype);
Tenants.prototype.installed = function (tenant) {
var self = this;
tenant.enabled = true;
return self._store.set(tenant.id, tenant).then(function () {
self.emit('installed', tenant);
return tenant;
});
};
Tenants.prototype.uninstalled = function (tenantId) {
var self = this;
return self._store.get(tenantId).then(function (tenant) {
if (tenant) {
tenant.enabled = false;
return self._store.del(tenantId).then(function () {
var tenantStore = self._store.narrow(tenantId);
return tenantStore.clear().then(function () {
self.emit('uninstalled', tenant);
return tenant;
});
});
}
return null;
});
};
Tenants.prototype.enabled = function (tenant) {
var self = this;
return self._store.get(tenant.id).then(function (tenant) {
if (tenant) {
tenant.enabled = true;
return self._store.set(tenant.id, tenant).then(function () {
self.emit('enabled', tenant);
return tenant;
});
}
return null;
});
};
Tenants.prototype.disabled = function (tenant) {
var self = this;
return self._store.get(tenant.id).then(function (tenant) {
if (tenant) {
tenant.enabled = false;
return self._store.set(tenant.id, tenant).then(function () {
self.emit('disabled', tenant);
return tenant;
});
}
return null;
});
};
Tenants.prototype.get = function (id) {
var self = this;
return self._store.get(id);
};
module.exports = function (store) {
return new Tenants(store);
};
module.exports.events = ['installed', 'uninstalled'];