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)
{
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;


+ 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);
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)


+ 4
- 4
src/Discord.Net/Rest/Entities/Message.cs 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)


+ 2
- 2
src/Discord.Net/Rest/Entities/Users/GuildUser.cs 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();
}



Loading…
Cancel
Save