Browse Source

Removed DiscordClient reference from CachedPublicUser

tags/1.0-rc
RogueException 9 years ago
parent
commit
a86acaba65
2 changed files with 12 additions and 11 deletions
  1. +5
    -5
      src/Discord.Net/DiscordClient.cs
  2. +7
    -6
      src/Discord.Net/DiscordSocketClient.cs

+ 5
- 5
src/Discord.Net/DiscordClient.cs View File

@@ -142,7 +142,7 @@ namespace Discord
} }
} }
else else
return new DMChannel(this, new User(this, model.Recipient.Value), model);
return new DMChannel(this, new User(model.Recipient.Value), model);
} }
return null; return null;
} }
@@ -150,7 +150,7 @@ namespace Discord
public virtual async Task<IReadOnlyCollection<IDMChannel>> GetDMChannelsAsync() public virtual async Task<IReadOnlyCollection<IDMChannel>> GetDMChannelsAsync()
{ {
var models = await ApiClient.GetMyDMsAsync().ConfigureAwait(false); var models = await ApiClient.GetMyDMsAsync().ConfigureAwait(false);
return models.Select(x => new DMChannel(this, new User(this, x.Recipient.Value), x)).ToImmutableArray();
return models.Select(x => new DMChannel(this, new User(x.Recipient.Value), x)).ToImmutableArray();
} }


/// <inheritdoc /> /// <inheritdoc />
@@ -198,7 +198,7 @@ namespace Discord
{ {
var model = await ApiClient.GetUserAsync(id).ConfigureAwait(false); var model = await ApiClient.GetUserAsync(id).ConfigureAwait(false);
if (model != null) if (model != null)
return new User(this, model);
return new User(model);
return null; return null;
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -206,7 +206,7 @@ namespace Discord
{ {
var model = await ApiClient.GetUserAsync(username, discriminator).ConfigureAwait(false); var model = await ApiClient.GetUserAsync(username, discriminator).ConfigureAwait(false);
if (model != null) if (model != null)
return new User(this, model);
return new User(model);
return null; return null;
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -225,7 +225,7 @@ namespace Discord
public virtual async Task<IReadOnlyCollection<IUser>> QueryUsersAsync(string query, int limit) public virtual async Task<IReadOnlyCollection<IUser>> QueryUsersAsync(string query, int limit)
{ {
var models = await ApiClient.QueryUsersAsync(query, limit).ConfigureAwait(false); var models = await ApiClient.QueryUsersAsync(query, limit).ConfigureAwait(false);
return models.Select(x => new User(this, x)).ToImmutableArray();
return models.Select(x => new User(x)).ToImmutableArray();
} }


/// <inheritdoc /> /// <inheritdoc />


+ 7
- 6
src/Discord.Net/DiscordSocketClient.cs View File

@@ -13,6 +13,7 @@ using System.Collections.Immutable;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Diagnostics;


namespace Discord namespace Discord
{ {
@@ -308,7 +309,7 @@ namespace Discord
internal CachedDMChannel AddDMChannel(API.Channel model, DataStore dataStore, ConcurrentHashSet<ulong> dmChannels) internal CachedDMChannel AddDMChannel(API.Channel model, DataStore dataStore, ConcurrentHashSet<ulong> dmChannels)
{ {
var recipient = GetOrAddUser(model.Recipient.Value, dataStore); var recipient = GetOrAddUser(model.Recipient.Value, dataStore);
var channel = recipient.AddDMChannel(model);
var channel = recipient.AddDMChannel(this, model);
dataStore.AddChannel(channel); dataStore.AddChannel(channel);
dmChannels.TryAdd(model.Id); dmChannels.TryAdd(model.Id);
return channel; return channel;
@@ -334,7 +335,7 @@ namespace Discord
} }
internal CachedPublicUser GetOrAddUser(API.User model, DataStore dataStore) internal CachedPublicUser GetOrAddUser(API.User model, DataStore dataStore)
{ {
var user = dataStore.GetOrAddUser(model.Id, _ => new CachedPublicUser(this, model));
var user = dataStore.GetOrAddUser(model.Id, _ => new CachedPublicUser(model));
user.AddRef(); user.AddRef();
return user; return user;
} }
@@ -543,7 +544,7 @@ namespace Discord
if (guild != null) if (guild != null)
{ {
foreach (var member in guild.Members) foreach (var member in guild.Members)
member.User.RemoveRef();
member.User.RemoveRef(this);


await GuildUnavailable.RaiseAsync(guild).ConfigureAwait(false); await GuildUnavailable.RaiseAsync(guild).ConfigureAwait(false);
await _gatewayLogger.InfoAsync($"Disconnected from {data.Name}").ConfigureAwait(false); await _gatewayLogger.InfoAsync($"Disconnected from {data.Name}").ConfigureAwait(false);
@@ -692,7 +693,7 @@ namespace Discord
var user = guild.RemoveUser(data.User.Id); var user = guild.RemoveUser(data.User.Id);
if (user != null) if (user != null)
{ {
user.User.RemoveRef();
user.User.RemoveRef(this);
await UserLeft.RaiseAsync(user).ConfigureAwait(false); await UserLeft.RaiseAsync(user).ConfigureAwait(false);
} }
else else
@@ -813,7 +814,7 @@ namespace Discord
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer); var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
var guild = DataStore.GetGuild(data.GuildId); var guild = DataStore.GetGuild(data.GuildId);
if (guild != null) if (guild != null)
await UserBanned.RaiseAsync(new User(this, data)).ConfigureAwait(false);
await UserBanned.RaiseAsync(new User(data)).ConfigureAwait(false);
else else
{ {
await _gatewayLogger.WarningAsync("GUILD_BAN_ADD referenced an unknown guild.").ConfigureAwait(false); await _gatewayLogger.WarningAsync("GUILD_BAN_ADD referenced an unknown guild.").ConfigureAwait(false);
@@ -828,7 +829,7 @@ namespace Discord
var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer); var data = (payload as JToken).ToObject<GuildBanEvent>(_serializer);
var guild = DataStore.GetGuild(data.GuildId); var guild = DataStore.GetGuild(data.GuildId);
if (guild != null) if (guild != null)
await UserUnbanned.RaiseAsync(new User(this, data)).ConfigureAwait(false);
await UserUnbanned.RaiseAsync(new User(data)).ConfigureAwait(false);
else else
{ {
await _gatewayLogger.WarningAsync("GUILD_BAN_REMOVE referenced an unknown guild.").ConfigureAwait(false); await _gatewayLogger.WarningAsync("GUILD_BAN_REMOVE referenced an unknown guild.").ConfigureAwait(false);


Loading…
Cancel
Save