Browse Source

Fixed User nullref errors

tags/1.0-rc
RogueException 9 years ago
parent
commit
ba66469248
5 changed files with 34 additions and 15 deletions
  1. +7
    -7
      src/Discord.Net/API/Common/User.cs
  2. +13
    -0
      src/Discord.Net/Data/DataStore.cs
  3. +0
    -1
      src/Discord.Net/DiscordSocketClient.cs
  4. +6
    -3
      src/Discord.Net/Entities/Users/SelfUser.cs
  5. +8
    -4
      src/Discord.Net/Entities/Users/User.cs

+ 7
- 7
src/Discord.Net/API/Common/User.cs View File

@@ -7,20 +7,20 @@ namespace Discord.API
[JsonProperty("id")] [JsonProperty("id")]
public ulong Id { get; set; } public ulong Id { get; set; }
[JsonProperty("username")] [JsonProperty("username")]
public string Username { get; set; }
public Optional<string> Username { get; set; }
[JsonProperty("discriminator")] [JsonProperty("discriminator")]
public string Discriminator { get; set; }
public Optional<string> Discriminator { get; set; }
[JsonProperty("bot")] [JsonProperty("bot")]
public bool Bot { get; set; }
public Optional<bool> Bot { get; set; }
[JsonProperty("avatar")] [JsonProperty("avatar")]
public string Avatar { get; set; }
public Optional<string> Avatar { get; set; }


//CurrentUser //CurrentUser
[JsonProperty("verified")] [JsonProperty("verified")]
public bool Verified { get; set; }
public Optional<bool> Verified { get; set; }
[JsonProperty("email")] [JsonProperty("email")]
public string Email { get; set; }
public Optional<string> Email { get; set; }
[JsonProperty("mfa_enabled")] [JsonProperty("mfa_enabled")]
public bool MfaEnabled { get; set; }
public Optional<bool> MfaEnabled { get; set; }
} }
} }

+ 13
- 0
src/Discord.Net/Data/DataStore.cs View File

@@ -58,9 +58,16 @@ namespace Discord
internal void AddChannel(ICachedChannel channel) internal void AddChannel(ICachedChannel channel)
{ {
_channels[channel.Id] = channel; _channels[channel.Id] = channel;

var dmChannel = channel as CachedDMChannel; var dmChannel = channel as CachedDMChannel;
if (dmChannel != null) if (dmChannel != null)
_dmChannels[dmChannel.Recipient.Id] = dmChannel; _dmChannels[dmChannel.Recipient.Id] = dmChannel;
else
{
var groupChannel = channel as CachedGroupChannel;
if (groupChannel != null)
_groupChannels.TryAdd(groupChannel.Id);
}
} }
internal ICachedChannel RemoveChannel(ulong id) internal ICachedChannel RemoveChannel(ulong id)
{ {
@@ -73,6 +80,12 @@ namespace Discord
CachedDMChannel ignored; CachedDMChannel ignored;
_dmChannels.TryRemove(dmChannel.Recipient.Id, out ignored); _dmChannels.TryRemove(dmChannel.Recipient.Id, out ignored);
} }
else
{
var groupChannel = channel as CachedGroupChannel;
if (groupChannel != null)
_groupChannels.TryRemove(id);
}
return channel; return channel;
} }
return null; return null;


+ 0
- 1
src/Discord.Net/DiscordSocketClient.cs View File

@@ -528,7 +528,6 @@ namespace Discord


var currentUser = new CachedSelfUser(this, data.User); var currentUser = new CachedSelfUser(this, data.User);
int unavailableGuilds = 0; int unavailableGuilds = 0;
//dataStore.GetOrAddUser(data.User.Id, _ => currentUser);
for (int i = 0; i < data.Guilds.Length; i++) for (int i = 0; i < data.Guilds.Length; i++)
{ {
var model = data.Guilds[i]; var model = data.Guilds[i];


+ 6
- 3
src/Discord.Net/Entities/Users/SelfUser.cs View File

@@ -31,9 +31,12 @@ namespace Discord


base.Update(model, source); base.Update(model, source);


Email = model.Email;
IsVerified = model.Verified;
IsMfaEnabled = model.MfaEnabled;
if (model.Email.IsSpecified)
Email = model.Email.Value;
if (model.Verified.IsSpecified)
IsVerified = model.Verified.Value;
if (model.MfaEnabled.IsSpecified)
IsMfaEnabled = model.MfaEnabled.Value;
} }
public async Task UpdateAsync() public async Task UpdateAsync()


+ 8
- 4
src/Discord.Net/Entities/Users/User.cs View File

@@ -31,10 +31,14 @@ namespace Discord
{ {
if (source == UpdateSource.Rest && IsAttached) return; if (source == UpdateSource.Rest && IsAttached) return;


_avatarId = model.Avatar;
DiscriminatorValue = ushort.Parse(model.Discriminator);
IsBot = model.Bot;
Username = model.Username;
if (model.Avatar.IsSpecified)
_avatarId = model.Avatar.Value;
if (model.Discriminator.IsSpecified)
DiscriminatorValue = ushort.Parse(model.Discriminator.Value);
if (model.Bot.IsSpecified)
IsBot = model.Bot.Value;
if (model.Username.IsSpecified)
Username = model.Username.Value;
} }


public override string ToString() => $"{Username}#{Discriminator}"; public override string ToString() => $"{Username}#{Discriminator}";


Loading…
Cancel
Save