detritus-client
Version:
A Typescript NodeJS library to interact with Discord's API, both Rest and Gateway.
115 lines (114 loc) • 3.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Template = void 0;
const detritus_client_rest_1 = require("detritus-client-rest");
const baseset_1 = require("../collections/baseset");
const constants_1 = require("../constants");
const basestructure_1 = require("./basestructure");
const user_1 = require("./user");
const keysTemplate = new baseset_1.BaseSet([
constants_1.DiscordKeys.CODE,
constants_1.DiscordKeys.CREATED_AT,
constants_1.DiscordKeys.CREATOR,
constants_1.DiscordKeys.CREATOR_ID,
constants_1.DiscordKeys.DESCRIPTION,
constants_1.DiscordKeys.IS_DIRTY,
constants_1.DiscordKeys.NAME,
constants_1.DiscordKeys.SERIALIZED_SOURCE_GUILD,
constants_1.DiscordKeys.SOURCE_GUILD_ID,
constants_1.DiscordKeys.UPDATED_AT,
constants_1.DiscordKeys.USAGE_COUNT,
]);
const keysMergeTemplate = new baseset_1.BaseSet([
constants_1.DiscordKeys.SOURCE_GUILD_ID,
]);
/**
* Guild Template Structure
* @category Structure
*/
class Template extends basestructure_1.BaseStructure {
constructor(client, data, isClone) {
super(client, undefined, isClone);
this._keys = keysTemplate;
this._keysMerge = keysMergeTemplate;
this.code = '';
this.creatorId = '';
this.description = '';
this.isDirty = false;
this.name = '';
this.sourceGuildId = '';
this.usageCount = 0;
this.merge(data);
}
get createdAtUnix() {
return this.createdAt.getTime();
}
get isUpdated() {
return this.createdAt === this.updatedAt;
}
get longUrl() {
return detritus_client_rest_1.Endpoints.Template.LONG(this.code);
}
get updatedAtUnix() {
return this.updatedAt.getTime();
}
get url() {
return detritus_client_rest_1.Endpoints.Template.SHORT(this.code);
}
delete() {
return this.client.rest.deleteGuildTemplate(this.sourceGuildId, this.code);
}
fetch() {
return this.client.rest.fetchTemplate(this.code);
}
mergeValue(key, value) {
if (value !== undefined) {
switch (key) {
case constants_1.DiscordKeys.CREATED_AT:
{
value = new Date(value);
}
;
break;
case constants_1.DiscordKeys.CREATOR:
{
let creator;
if (this.isClone) {
creator = new user_1.User(this.client, value, this.isClone);
}
else {
if (this.client.users.has(value.id)) {
creator = this.client.users.get(value.id);
creator.merge(value);
}
else {
creator = new user_1.User(this.client, value);
}
}
value = creator;
}
;
break;
case constants_1.DiscordKeys.IS_DIRTY:
{
value = !!value;
}
;
break;
case constants_1.DiscordKeys.SERIALIZED_SOURCE_GUILD:
{
}
;
break;
case constants_1.DiscordKeys.UPDATED_AT:
{
value = new Date(value);
}
;
break;
}
return super.mergeValue(key, value);
}
}
}
exports.Template = Template;