Browse Source

Fixed several model processing bugs

tags/1.0-rc
RogueException 9 years ago
parent
commit
0eb9ff6bd3
4 changed files with 19 additions and 15 deletions
  1. +11
    -7
      src/Discord.Net/API/DiscordRawClient.cs
  2. +2
    -2
      src/Discord.Net/Rest/Entities/Guilds/Guild.cs
  3. +4
    -4
      src/Discord.Net/Rest/Entities/Message.cs
  4. +2
    -2
      src/Discord.Net/Rest/Entities/Users/GuildUser.cs

+ 11
- 7
src/Discord.Net/API/DiscordRawClient.cs View File

@@ -219,7 +219,7 @@ namespace Discord.API
switch (channels.Length) switch (channels.Length)
{ {
case 0: case 0:
throw new ArgumentOutOfRangeException(nameof(args));
return;
case 1: case 1:
await ModifyGuildChannel(channels[0].Id, new ModifyGuildChannelParams { Position = channels[0].Position }).ConfigureAwait(false); await ModifyGuildChannel(channels[0].Id, new ModifyGuildChannelParams { Position = channels[0].Position }).ConfigureAwait(false);
break; break;
@@ -476,8 +476,10 @@ namespace Discord.API


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


+ 2
- 2
src/Discord.Net/Rest/Entities/Guilds/Guild.cs View File

@@ -81,11 +81,11 @@ namespace Discord.Rest
{ {
var emojis = ImmutableArray.CreateBuilder<Emoji>(model.Emojis.Length); var emojis = ImmutableArray.CreateBuilder<Emoji>(model.Emojis.Length);
for (int i = 0; i < model.Emojis.Length; i++) 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(); Emojis = emojis.ToArray();
} }
else else
Emojis = ImmutableArray<Emoji>.Empty;
Emojis = Array.Empty<Emoji>();


var roles = new ConcurrentDictionary<ulong, Role>(1, model.Roles?.Length ?? 0); var roles = new ConcurrentDictionary<ulong, Role>(1, model.Roles?.Length ?? 0);
if (model.Roles != null) if (model.Roles != null)


+ 4
- 4
src/Discord.Net/Rest/Entities/Message.cs View File

@@ -68,7 +68,7 @@ namespace Discord.Rest
Attachments = ImmutableArray.Create(attachments); Attachments = ImmutableArray.Create(attachments);
} }
else else
Attachments = ImmutableArray<Attachment>.Empty;
Attachments = Array.Empty<Attachment>();


if (model.Embeds.Length > 0) if (model.Embeds.Length > 0)
{ {
@@ -78,18 +78,18 @@ namespace Discord.Rest
Embeds = ImmutableArray.Create(embeds); Embeds = ImmutableArray.Create(embeds);
} }
else else
Embeds = ImmutableArray<Embed>.Empty;
Embeds = Array.Empty<Embed>();


if (model.Mentions.Length > 0) if (model.Mentions.Length > 0)
{ {
var discord = Discord; var discord = Discord;
var builder = ImmutableArray.CreateBuilder<PublicUser>(model.Mentions.Length); var builder = ImmutableArray.CreateBuilder<PublicUser>(model.Mentions.Length);
for (int i = 0; i < model.Mentions.Length; i++) 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(); MentionedUsers = builder.ToArray();
} }
else else
MentionedUsers = ImmutableArray<PublicUser>.Empty;
MentionedUsers = Array.Empty<PublicUser>();
MentionedChannelIds = MentionHelper.GetChannelMentions(model.Content); MentionedChannelIds = MentionHelper.GetChannelMentions(model.Content);
MentionedRoleIds = MentionHelper.GetRoleMentions(model.Content); MentionedRoleIds = MentionHelper.GetRoleMentions(model.Content);
if (model.IsMentioningEveryone) if (model.IsMentioningEveryone)


+ 2
- 2
src/Discord.Net/Rest/Entities/Users/GuildUser.cs View File

@@ -39,9 +39,9 @@ namespace Discord.Rest
Nickname = model.Nick; Nickname = model.Nick;


var roles = ImmutableArray.CreateBuilder<Role>(model.Roles.Length + 1); 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++) 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(); _roles = roles.ToImmutable();
} }




Loading…
Cancel
Save