UNPKG

ac-node

Version:

A common module for building Atlassian Connect add-ons

73 lines (63 loc) 1.77 kB
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'];