fix(ThreadManager): Ensure fetchActive() only returns active threads in a channel (#9568)

fix(ThreadManager): revert breaking change

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Jiralite
2023-05-25 18:16:48 +01:00
committed by GitHub
parent 9b06734445
commit 53aa24d418
4 changed files with 22 additions and 6 deletions

View File

@@ -468,8 +468,17 @@ class GuildChannelManager extends CachedManager {
* .catch(console.error); * .catch(console.error);
*/ */
async fetchActiveThreads(cache = true) { async fetchActiveThreads(cache = true) {
const raw = await this.client.rest.get(Routes.guildActiveThreads(this.guild.id)); const data = await this.rawFetchGuildActiveThreads();
return GuildTextThreadManager._mapThreads(raw, this.client, { guild: this.guild, cache }); return GuildTextThreadManager._mapThreads(data, this.client, { guild: this.guild, cache });
}
/**
* `GET /guilds/{guild.id}/threads/active`
* @private
* @returns {Promise<RESTGetAPIGuildThreadsResult>}
*/
rawFetchGuildActiveThreads() {
return this.client.rest.get(Routes.guildActiveThreads(this.guild.id));
} }
/** /**

View File

@@ -171,13 +171,13 @@ class ThreadManager extends CachedManager {
} }
/** /**
* Obtains all active thread channels in the guild. * Obtains all active threads in the channel.
* This internally calls {@link GuildChannelManager#fetchActiveThreads}.
* @param {boolean} [cache=true] Whether to cache the fetched data * @param {boolean} [cache=true] Whether to cache the fetched data
* @returns {Promise<FetchedThreads>} * @returns {Promise<FetchedThreads>}
*/ */
fetchActive(cache = true) { async fetchActive(cache = true) {
return this.channel.guild.channels.fetchActiveThreads(cache); const data = await this.channel.guild.channels.rawFetchGuildActiveThreads();
return this.constructor._mapThreads(data, this.client, { parent: this.channel, cache });
} }
static _mapThreads(rawThreads, client, { parent, guild, cache }) { static _mapThreads(rawThreads, client, { parent, guild, cache }) {

View File

@@ -400,6 +400,11 @@
* @see {@link https://discord-api-types.dev/api/discord-api-types-payloads/common#PermissionFlagsBits} * @see {@link https://discord-api-types.dev/api/discord-api-types-payloads/common#PermissionFlagsBits}
*/ */
/**
* @external RESTGetAPIGuildThreadsResult
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10#RESTGetAPIGuildThreadsResult}
*/
/** /**
* @external RESTJSONErrorCodes * @external RESTJSONErrorCodes
* @see {@link https://discord-api-types.dev/api/discord-api-types-rest/common/enum/RESTJSONErrorCodes} * @see {@link https://discord-api-types.dev/api/discord-api-types-rest/common/enum/RESTJSONErrorCodes}

View File

@@ -156,6 +156,7 @@ import {
APIApplicationRoleConnectionMetadata, APIApplicationRoleConnectionMetadata,
ImageFormat, ImageFormat,
GuildMemberFlags, GuildMemberFlags,
RESTGetAPIGuildThreadsResult,
} from 'discord-api-types/v10'; } from 'discord-api-types/v10';
import { ChildProcess } from 'node:child_process'; import { ChildProcess } from 'node:child_process';
import { EventEmitter } from 'node:events'; import { EventEmitter } from 'node:events';
@@ -3860,6 +3861,7 @@ export class GuildChannelManager extends CachedManager<Snowflake, GuildBasedChan
): Promise<GuildChannel>; ): Promise<GuildChannel>;
public setPositions(channelPositions: readonly ChannelPosition[]): Promise<Guild>; public setPositions(channelPositions: readonly ChannelPosition[]): Promise<Guild>;
public fetchActiveThreads(cache?: boolean): Promise<FetchedThreads>; public fetchActiveThreads(cache?: boolean): Promise<FetchedThreads>;
private rawFetchGuildActiveThreads(): Promise<RESTGetAPIGuildThreadsResult>;
public delete(channel: GuildChannelResolvable, reason?: string): Promise<void>; public delete(channel: GuildChannelResolvable, reason?: string): Promise<void>;
} }