UNPKG

cactive

Version:

Link in to the vast and epic CactiveNetwork ecosystem.

77 lines 2.56 kB
"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