Fixed several model processing bugs

This commit is contained in:
RogueException
2016-05-12 10:27:58 -03:00
parent 7cccf6b30c
commit 0eb9ff6bd3
4 changed files with 19 additions and 15 deletions

View File

@@ -219,7 +219,7 @@ namespace Discord.API
switch (channels.Length)
{
case 0:
throw new ArgumentOutOfRangeException(nameof(args));
return;
case 1:
await ModifyGuildChannel(channels[0].Id, new ModifyGuildChannelParams { Position = channels[0].Position }).ConfigureAwait(false);
break;
@@ -476,8 +476,10 @@ namespace Discord.API
if (result.Count > 1)
return result.SelectMany(x => x);
else
else if (result.Count == 1)
return result[0];
else
return Array.Empty<GuildMember>();
}
public async Task RemoveGuildMember(ulong guildId, ulong userId)
{
@@ -535,7 +537,7 @@ namespace Discord.API
switch (roles.Length)
{
case 0:
throw new ArgumentOutOfRangeException(nameof(args));
return Array.Empty<Role>();
case 1:
return ImmutableArray.Create(await ModifyGuildRole(guildId, roles[0].Id, roles[0]).ConfigureAwait(false));
default:
@@ -580,10 +582,12 @@ namespace Discord.API
if (models.Length != DiscordConfig.MaxMessagesPerBatch) { i++; break; }
}
if (runs > 1)
return result.Take(runs).SelectMany(x => x);
else
if (i > 1)
return result.Take(i).SelectMany(x => x);
else if (i == 1)
return result[0];
else
return Array.Empty<Message>();
}
public Task<Message> CreateMessage(ulong channelId, CreateMessageParams args)
=> CreateMessage(0, channelId, args);
@@ -636,7 +640,7 @@ namespace Discord.API
switch (messageIds.Length)
{
case 0:
throw new ArgumentOutOfRangeException(nameof(args.MessageIds));
return;
case 1:
await DeleteMessage(guildId, channelId, messageIds[0]).ConfigureAwait(false);
break;

View File

@@ -81,11 +81,11 @@ namespace Discord.Rest
{
var emojis = ImmutableArray.CreateBuilder<Emoji>(model.Emojis.Length);
for (int i = 0; i < model.Emojis.Length; i++)
emojis[i] = new Emoji(model.Emojis[i]);
emojis.Add(new Emoji(model.Emojis[i]));
Emojis = emojis.ToArray();
}
else
Emojis = ImmutableArray<Emoji>.Empty;
Emojis = Array.Empty<Emoji>();
var roles = new ConcurrentDictionary<ulong, Role>(1, model.Roles?.Length ?? 0);
if (model.Roles != null)

View File

@@ -68,7 +68,7 @@ namespace Discord.Rest
Attachments = ImmutableArray.Create(attachments);
}
else
Attachments = ImmutableArray<Attachment>.Empty;
Attachments = Array.Empty<Attachment>();
if (model.Embeds.Length > 0)
{
@@ -78,18 +78,18 @@ namespace Discord.Rest
Embeds = ImmutableArray.Create(embeds);
}
else
Embeds = ImmutableArray<Embed>.Empty;
Embeds = Array.Empty<Embed>();
if (model.Mentions.Length > 0)
{
var discord = Discord;
var builder = ImmutableArray.CreateBuilder<PublicUser>(model.Mentions.Length);
for (int i = 0; i < model.Mentions.Length; i++)
builder[i] = new PublicUser(discord, model.Mentions[i]);
builder.Add(new PublicUser(discord, model.Mentions[i]));
MentionedUsers = builder.ToArray();
}
else
MentionedUsers = ImmutableArray<PublicUser>.Empty;
MentionedUsers = Array.Empty<PublicUser>();
MentionedChannelIds = MentionHelper.GetChannelMentions(model.Content);
MentionedRoleIds = MentionHelper.GetRoleMentions(model.Content);
if (model.IsMentioningEveryone)

View File

@@ -39,9 +39,9 @@ namespace Discord.Rest
Nickname = model.Nick;
var roles = ImmutableArray.CreateBuilder<Role>(model.Roles.Length + 1);
roles[0] = Guild.EveryoneRole;
roles.Add(Guild.EveryoneRole);
for (int i = 0; i < model.Roles.Length; i++)
roles[i + 1] = Guild.GetRole(model.Roles[i]);
roles.Add(Guild.GetRole(model.Roles[i]));
_roles = roles.ToImmutable();
}