detritus-client
Version:
A Typescript NodeJS library to interact with Discord's API, both Rest and Gateway.
109 lines (108 loc) • 3.69 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IntegrationAccount = exports.Integration = void 0;
const baseset_1 = require("../collections/baseset");
const constants_1 = require("../constants");
const utils_1 = require("../utils");
const basestructure_1 = require("./basestructure");
const user_1 = require("./user");
const keysIntegration = new baseset_1.BaseSet([
constants_1.DiscordKeys.ACCOUNT,
constants_1.DiscordKeys.ENABLED,
constants_1.DiscordKeys.EXPIRE_BEHAVIOR,
constants_1.DiscordKeys.EXPIRE_GRACE_PERIOD,
constants_1.DiscordKeys.GUILD_ID,
constants_1.DiscordKeys.ID,
constants_1.DiscordKeys.NAME,
constants_1.DiscordKeys.ROLE_ID,
constants_1.DiscordKeys.SYNCED_AT,
constants_1.DiscordKeys.SYNCING,
constants_1.DiscordKeys.TYPE,
constants_1.DiscordKeys.USER,
]);
/**
* Guild Integration Structure
* @category Structure
*/
class Integration extends basestructure_1.BaseStructure {
constructor(client, data, isClone) {
super(client, undefined, isClone);
this._keys = keysIntegration;
this.enabled = false;
this.expireBehavior = 0;
this.expireGracePeriod = 0;
this.guildId = '';
this.id = '';
this.name = '';
this.roleId = '';
this.syncing = false;
this.type = '';
this.merge(data);
}
get createdAt() {
return new Date(this.createdAtUnix);
}
get createdAtUnix() {
return utils_1.Snowflake.timestamp(this.id);
}
mergeValue(key, value) {
if (value !== undefined) {
switch (key) {
case constants_1.DiscordKeys.ACCOUNT:
{
value = new IntegrationAccount(this, value);
}
;
break;
case constants_1.DiscordKeys.SYNCED_AT:
{
value = new Date(value);
}
;
break;
case constants_1.DiscordKeys.USER:
{
let user;
if (this.isClone) {
user = new user_1.User(this.client, value, this.isClone);
}
else {
if (this.client.users.has(value.id)) {
user = this.client.users.get(value.id);
user.merge(value);
}
else {
user = new user_1.User(this.client, value);
}
}
value = user;
}
;
break;
}
return super.mergeValue(key, value);
}
}
}
exports.Integration = Integration;
const keysIntegrationAccount = new baseset_1.BaseSet([
constants_1.DiscordKeys.ID,
constants_1.DiscordKeys.NAME,
]);
/**
* Guild Integration Account Structure, used in [[Integration]]
* @category Structure
*/
class IntegrationAccount extends basestructure_1.BaseStructure {
constructor(integration, data) {
super(integration.client, undefined, integration._clone);
this._uncloneable = true;
this._keys = keysIntegrationAccount;
this.id = '';
this.name = '';
this.integration = integration;
this.merge(data);
Object.defineProperty(this, 'integration', { enumerable: false, writable: false });
}
}
exports.IntegrationAccount = IntegrationAccount;