From 52ee517fdcb1596ee248227f82b291fb155d00d8 Mon Sep 17 00:00:00 2001 From: MARCROCK22 Date: Fri, 31 May 2024 00:39:49 +0000 Subject: [PATCH] fix: use fakePromise --- src/cache/resources/messages.ts | 132 ++++++++++++++++---------------- 1 file changed, 68 insertions(+), 64 deletions(-) diff --git a/src/cache/resources/messages.ts b/src/cache/resources/messages.ts index 58b1b73..61af361 100644 --- a/src/cache/resources/messages.ts +++ b/src/cache/resources/messages.ts @@ -1,64 +1,68 @@ -import type { APIMessage, APIUser } from 'discord-api-types/v10'; -import { GuildRelatedResource } from './default/guild-related'; -import type { MessageData, ReturnCache } from '../..'; -import { fakePromise } from '../../common'; -import { Message } from '../../structures'; - -export class Messages extends GuildRelatedResource { - namespace = 'message'; - - //@ts-expect-error - filter(data: MessageData, id: string, channel_id?: string) { - return true; - } - - override parse(data: any, _key: string, _channel_id: string) { - const { author, member, ...rest } = data; - if (author?.id) rest.user_id = author.id; - - return rest; - } - - override get(id: string): ReturnCache { - return fakePromise(super.get(id) as APIMessageResource | undefined).then(rawMessage => { - const user = - this.cache.users && rawMessage?.user_id - ? (this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined) - : undefined; - return user ? new Message(this.client, { ...rawMessage!, author: user }) : undefined; - }); - } - - override bulk(ids: string[]): ReturnCache { - return fakePromise(super.bulk(ids) as APIMessageResource[]).then( - messages => - messages - .map(rawMessage => { - const user = - this.cache.users && rawMessage.user_id - ? (this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined) - : undefined; - return user ? new Message(this.client, { ...rawMessage, author: user }) : undefined; - }) - .filter(Boolean) as Message[], - ); - } - - override values(guild: string): ReturnCache { - return fakePromise(super.values(guild) as APIMessageResource[]).then(messages => { - const hashes: (string | undefined)[] = this.cache.users - ? messages.map(x => (x.user_id ? this.cache.users!.hashId(x.user_id) : undefined)) - : []; - return fakePromise(this.cache.adapter.get(hashes.filter(Boolean) as string[]) as APIUser[]).then(users => { - return messages - .map(message => { - const user = users.find(user => user.id === message.user_id); - return user ? new Message(this.client, { ...message, author: user }) : undefined; - }) - .filter(Boolean) as Message[]; - }); - }); - } -} - -export type APIMessageResource = Omit & { user_id?: string }; +import type { APIMessage, APIUser } from 'discord-api-types/v10'; +import { GuildRelatedResource } from './default/guild-related'; +import type { MessageData, ReturnCache } from '../..'; +import { fakePromise } from '../../common'; +import { Message } from '../../structures'; + +export class Messages extends GuildRelatedResource { + namespace = 'message'; + + //@ts-expect-error + filter(data: MessageData, id: string, channel_id?: string) { + return true; + } + + override parse(data: any, _key: string, _channel_id: string) { + const { author, member, ...rest } = data; + if (author?.id) rest.user_id = author.id; + + return rest; + } + + override get(id: string): ReturnCache { + return fakePromise(super.get(id) as APIMessageResource | undefined).then(rawMessage => { + return this.cache.users && rawMessage?.user_id + ? fakePromise(this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined).then( + user => { + return user ? new Message(this.client, { ...rawMessage!, author: user }) : undefined; + }, + ) + : undefined; + }); + } + + override bulk(ids: string[]): ReturnCache { + return fakePromise(super.bulk(ids) as APIMessageResource[]).then( + messages => + messages + .map(rawMessage => { + return this.cache.users && rawMessage?.user_id + ? fakePromise( + this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined, + ).then(user => { + return user ? new Message(this.client, { ...rawMessage!, author: user }) : undefined; + }) + : undefined; + }) + .filter(Boolean) as Message[], + ); + } + + override values(guild: string): ReturnCache { + return fakePromise(super.values(guild) as APIMessageResource[]).then(messages => { + const hashes: (string | undefined)[] = this.cache.users + ? messages.map(x => (x.user_id ? this.cache.users!.hashId(x.user_id) : undefined)) + : []; + return fakePromise(this.cache.adapter.get(hashes.filter(Boolean) as string[]) as APIUser[]).then(users => { + return messages + .map(message => { + const user = users.find(user => user.id === message.user_id); + return user ? new Message(this.client, { ...message, author: user }) : undefined; + }) + .filter(Boolean) as Message[]; + }); + }); + } +} + +export type APIMessageResource = Omit & { user_id?: string };