| @@ -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; } | |||||
| } | } | ||||
| } | } | ||||
| @@ -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; | ||||
| @@ -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]; | ||||
| @@ -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() | ||||
| @@ -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}"; | ||||