Fix usage of CacheMode.AllowDownload in channels (#2154)
Co-Authored-By: ✨ <25006819+sabihoshi@users.noreply.github.com> Co-authored-by: ✨ <25006819+sabihoshi@users.noreply.github.com>
This commit is contained in:
@@ -227,7 +227,7 @@ namespace Discord.Rest
|
||||
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
=> AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>(); //Overridden //Overridden in Text/Voice
|
||||
=> AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>(); //Overridden in Text/Voice
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(null); //Overridden in Text/Voice
|
||||
|
||||
@@ -364,10 +364,9 @@ namespace Discord.Rest
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
{
|
||||
if (mode == CacheMode.AllowDownload)
|
||||
return GetUsersAsync(options);
|
||||
else
|
||||
return AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>();
|
||||
return mode == CacheMode.AllowDownload
|
||||
? GetUsersAsync(options)
|
||||
: AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>();
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -317,8 +317,15 @@ namespace Discord.WebSocket
|
||||
=> await CreateGuildAsync(name, region, jpegIcon, options).ConfigureAwait(false);
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(id));
|
||||
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||
|
||||
@@ -533,8 +533,15 @@ namespace Discord.WebSocket
|
||||
=> await CreateGuildAsync(name, region, jpegIcon).ConfigureAwait(false);
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(id));
|
||||
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||
|
||||
@@ -3113,7 +3113,14 @@ namespace Discord.WebSocket
|
||||
|
||||
/// <inheritdoc />
|
||||
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> mode == CacheMode.AllowDownload ? await GetUserAsync(id, options).ConfigureAwait(false) : GetUser(id);
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Collections.Immutable;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Discord.Rest;
|
||||
using Model = Discord.API.Channel;
|
||||
|
||||
namespace Discord.WebSocket
|
||||
@@ -64,21 +65,44 @@ namespace Discord.WebSocket
|
||||
#endregion
|
||||
|
||||
#region IGuildChannel
|
||||
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode,
|
||||
RequestOptions options)
|
||||
{
|
||||
return mode == CacheMode.AllowDownload
|
||||
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
}
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
||||
async Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IChannel
|
||||
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IUser>> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
=> ImmutableArray.Create<IReadOnlyCollection<IUser>>(Users).ToAsyncEnumerable();
|
||||
{
|
||||
return mode == CacheMode.AllowDownload
|
||||
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
}
|
||||
/// <inheritdoc />
|
||||
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IUser>(GetUser(id));
|
||||
async Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,10 +214,10 @@ namespace Discord.WebSocket
|
||||
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable(); //Overridden in Text/Voice
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
||||
=> Task.FromResult<IGuildUser>(GetUser(id)); //Overridden in Text/Voice
|
||||
#endregion
|
||||
|
||||
#region IChannel
|
||||
|
||||
@@ -355,11 +355,22 @@ namespace Discord.WebSocket
|
||||
|
||||
#region IGuildChannel
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
||||
async Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||
}
|
||||
/// <inheritdoc />
|
||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
{
|
||||
return mode == CacheMode.AllowDownload
|
||||
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IMessageChannel
|
||||
|
||||
@@ -1928,8 +1928,15 @@ namespace Discord.WebSocket
|
||||
async Task<IGuildUser> IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func, RequestOptions options)
|
||||
=> await AddGuildUserAsync(userId, accessToken, func, options);
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuild.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
||||
async Task<IGuildUser> IGuild.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||
{
|
||||
var user = GetUser(id);
|
||||
if (user is not null || mode == CacheMode.CacheOnly)
|
||||
return user;
|
||||
|
||||
return await GuildHelper.GetUserAsync(this, Discord, id, options).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
Task<IGuildUser> IGuild.GetCurrentUserAsync(CacheMode mode, RequestOptions options)
|
||||
=> Task.FromResult<IGuildUser>(CurrentUser);
|
||||
|
||||
Reference in New Issue
Block a user