UNPKG

detritus-client

Version:

A Typescript NodeJS library to interact with Discord's API, both Rest and Gateway.

109 lines (108 loc) 3.69 kB
"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;