cactive
Version:
Link in to the vast and epic CactiveNetwork ecosystem.
77 lines • 2.56 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const error_1 = __importDefault(require("./error"));
class User {
constructor(client, user_data) {
this.id = user_data.id;
this.display_name = user_data.display_name || undefined;
this.api_level = user_data.api_level;
this.mfa_enabled = user_data.mfa_enabled;
this.services = user_data.services;
this.email_verified = user_data.email_verified;
this.connections = user_data.connections.filter(c => c.user.id !== null);
this.client = client;
this.project = user_data.project;
}
/**
* Returns a service and its data
* @param service Service name
* @returns Service data
*/
get_service(service) {
return this.services.find(s => s.name === service) ?? null;
}
/**
* Returns a connection and its data
* @param connection Connection data
* @returns Connection data
*/
get_connection(connection) {
return this.connections.find(c => c.name === connection) ?? null;
}
/**
* Updates an owned service's data for a user
* @param name Service name, must be owned
* @param data Updated service structure
* @returns Resolution result
*/
setService(name, data) {
return new Promise((resolve, reject) => {
if (!this.id)
throw (0, error_1.default)('INVALID_USER');
this.client.setService(name, this.id, data)
.then(() => {
this.client.getUser(this.id)
.then(user => {
this.services = user.services;
resolve();
})
.catch(reject);
})
.catch(reject);
});
}
/**
* Updates User's role
* * Requires access to the 'MODIFY_ROLES' permission.
* @param role New role
* @returns Updated User
*/
setRole(role) {
return new Promise((resolve, reject) => {
if (!this.id)
throw (0, error_1.default)('INVALID_USER');
return this.client.setRole(this.id, role)
.then(user => {
this.api_level = user.api_level;
resolve();
})
.catch(reject);
});
}
}
exports.default = User;
//# sourceMappingURL=user.js.map