feat: change Guild.emojis to use collection (#388)

* feat(guild): change Guild.emojis to use collection

* idk
This commit is contained in:
ayntee
2021-03-08 18:13:01 +04:00
committed by GitHub
parent bd14075c8a
commit fdab0d93ba
4 changed files with 17 additions and 7 deletions
+5 -2
View File
@@ -8,6 +8,7 @@ import {
UpdateGuildPayload, UpdateGuildPayload,
} from "../../types/mod.ts"; } from "../../types/mod.ts";
import { cache } from "../../util/cache.ts"; import { cache } from "../../util/cache.ts";
import { Collection } from "../../util/collection.ts";
import { structures } from "../structures/mod.ts"; import { structures } from "../structures/mod.ts";
import { cacheHandlers } from "./cache.ts"; import { cacheHandlers } from "./cache.ts";
@@ -115,13 +116,15 @@ export async function handleInternalGuildEmojisUpdate(data: DiscordPayload) {
if (!guild) return; if (!guild) return;
const cachedEmojis = guild.emojis; const cachedEmojis = guild.emojis;
guild.emojis = payload.emojis; guild.emojis = new Collection(
payload.emojis.map((emoji) => [emoji.id ?? emoji.name, emoji]),
);
cacheHandlers.set("guilds", payload.guild_id, guild); cacheHandlers.set("guilds", payload.guild_id, guild);
eventHandlers.guildEmojisUpdate?.( eventHandlers.guildEmojisUpdate?.(
guild, guild,
payload.emojis, guild.emojis,
cachedEmojis, cachedEmojis,
); );
} }
+4 -2
View File
@@ -402,7 +402,9 @@ export async function getEmojis(guildID: string, addToCache = true) {
if (addToCache) { if (addToCache) {
const guild = await cacheHandlers.get("guilds", guildID); const guild = await cacheHandlers.get("guilds", guildID);
if (!guild) throw new Error(Errors.GUILD_NOT_FOUND); if (!guild) throw new Error(Errors.GUILD_NOT_FOUND);
guild.emojis = result;
result.forEach((emoji) => guild.emojis.set(emoji.id ?? emoji.name, emoji));
cacheHandlers.set("guilds", guildID, guild); cacheHandlers.set("guilds", guildID, guild);
} }
@@ -426,7 +428,7 @@ export async function getEmoji(
if (addToCache) { if (addToCache) {
const guild = await cacheHandlers.get("guilds", guildID); const guild = await cacheHandlers.get("guilds", guildID);
if (!guild) throw new Error(Errors.GUILD_NOT_FOUND); if (!guild) throw new Error(Errors.GUILD_NOT_FOUND);
guild.emojis.push(result); guild.emojis.set(result.id ?? result.name, result);
cacheHandlers.set( cacheHandlers.set(
"guilds", "guilds",
guildID, guildID,
+5 -1
View File
@@ -138,6 +138,7 @@ export async function createGuild(data: CreateGuildPayload, shardID: number) {
channels = [], channels = [],
members, members,
presences = [], presences = [],
emojis,
...rest ...rest
} = data; } = data;
@@ -187,6 +188,9 @@ export async function createGuild(data: CreateGuildPayload, shardID: number) {
new Collection(presences.map((p: Presence) => [p.user.id, p])), new Collection(presences.map((p: Presence) => [p.user.id, p])),
), ),
memberCount: createNewProp(memberCount), memberCount: createNewProp(memberCount),
emojis: createNewProp(
new Collection(emojis.map((emoji) => [emoji.id ?? emoji.name, emoji])),
),
voiceStates: createNewProp( voiceStates: createNewProp(
new Collection( new Collection(
voiceStates.map((vs: VoiceState) => [ voiceStates.map((vs: VoiceState) => [
@@ -229,7 +233,7 @@ export interface Guild {
/** Explicit content filter level */ /** Explicit content filter level */
explicitContentFilter: number; explicitContentFilter: number;
/** The custom guild emojis */ /** The custom guild emojis */
emojis: Emoji[]; emojis: Collection<string, Emoji>;
/** Enabled guild features */ /** Enabled guild features */
features: GuildFeatures[]; features: GuildFeatures[];
/** System channel flags */ /** System channel flags */
+3 -2
View File
@@ -5,6 +5,7 @@ import {
Message, Message,
Role, Role,
} from "../api/structures/mod.ts"; } from "../api/structures/mod.ts";
import { Collection } from "../util/collection.ts";
import { import {
DiscordPayload, DiscordPayload,
Emoji, Emoji,
@@ -141,8 +142,8 @@ export interface EventHandlers {
/** Sent when a guild's emojis have been updated. */ /** Sent when a guild's emojis have been updated. */
guildEmojisUpdate?: ( guildEmojisUpdate?: (
guild: Guild, guild: Guild,
emojis: Emoji[], emojis: Collection<string, Emoji>,
cachedEmojis: Emoji[], cachedEmojis: Collection<string, Emoji>,
) => unknown; ) => unknown;
/** Sent when a new user joins a guild. */ /** Sent when a new user joins a guild. */
guildMemberAdd?: (guild: Guild, member: Member) => unknown; guildMemberAdd?: (guild: Guild, member: Member) => unknown;