Browse Source

fix: Add missing AddRef and related (#1859)

tags/3.0.0
Paulo GitHub 4 years ago
parent
commit
de7f9b5eff
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 13 deletions
  1. +3
    -2
      src/Discord.Net.WebSocket/DiscordSocketClient.cs
  2. +7
    -11
      src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs

+ 3
- 2
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -775,7 +775,8 @@ namespace Discord.WebSocket
break; break;
case "GUILD_SYNC": case "GUILD_SYNC":
{ {
await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_SYNC)").ConfigureAwait(false);
await _gatewayLogger.DebugAsync("Ignored Dispatch (GUILD_SYNC)").ConfigureAwait(false);
/*await _gatewayLogger.DebugAsync("Received Dispatch (GUILD_SYNC)").ConfigureAwait(false); //TODO remove? userbot related
var data = (payload as JToken).ToObject<GuildSyncEvent>(_serializer); var data = (payload as JToken).ToObject<GuildSyncEvent>(_serializer);
var guild = State.GetGuild(data.Id); var guild = State.GetGuild(data.Id);
if (guild != null) if (guild != null)
@@ -792,7 +793,7 @@ namespace Discord.WebSocket
{ {
await UnknownGuildAsync(type, data.Id).ConfigureAwait(false); await UnknownGuildAsync(type, data.Id).ConfigureAwait(false);
return; return;
}
}*/
} }
break; break;
case "GUILD_DELETE": case "GUILD_DELETE":


+ 7
- 11
src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs View File

@@ -387,7 +387,8 @@ namespace Discord.WebSocket
for (int i = 0; i < model.Members.Length; i++) for (int i = 0; i < model.Members.Length; i++)
{ {
var member = SocketGuildUser.Create(this, state, model.Members[i]); var member = SocketGuildUser.Create(this, state, model.Members[i]);
members.TryAdd(member.Id, member);
if (members.TryAdd(member.Id, member))
member.GlobalUser.AddRef();
} }
DownloadedMemberCount = members.Count; DownloadedMemberCount = members.Count;


@@ -482,7 +483,7 @@ namespace Discord.WebSocket
} }
_roles = roles; _roles = roles;
} }
internal void Update(ClientState state, GuildSyncModel model)
/*internal void Update(ClientState state, GuildSyncModel model) //TODO remove? userbot related
{ {
var members = new ConcurrentDictionary<ulong, SocketGuildUser>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Members.Length * 1.05)); var members = new ConcurrentDictionary<ulong, SocketGuildUser>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Members.Length * 1.05));
{ {
@@ -502,9 +503,9 @@ namespace Discord.WebSocket
_members = members; _members = members;


var _ = _syncPromise.TrySetResultAsync(true); var _ = _syncPromise.TrySetResultAsync(true);
/*if (!model.Large)
_ = _downloaderPromise.TrySetResultAsync(true);*/
}
//if (!model.Large)
// _ = _downloaderPromise.TrySetResultAsync(true);
}*/


internal void Update(ClientState state, EmojiUpdateModel model) internal void Update(ClientState state, EmojiUpdateModel model)
{ {
@@ -842,16 +843,10 @@ namespace Discord.WebSocket
else else
{ {
member = SocketGuildUser.Create(this, Discord.State, model); member = SocketGuildUser.Create(this, Discord.State, model);
if (member == null)
throw new InvalidOperationException("SocketGuildUser.Create failed to produce a member"); // TODO 2.2rel: delete this
if (member.GlobalUser == null)
throw new InvalidOperationException("Member was created without global user"); // TODO 2.2rel: delete this
member.GlobalUser.AddRef(); member.GlobalUser.AddRef();
_members[member.Id] = member; _members[member.Id] = member;
DownloadedMemberCount++; DownloadedMemberCount++;
} }
if (member == null)
throw new InvalidOperationException("AddOrUpdateUser failed to produce a user"); // TODO 2.2rel: delete this
return member; return member;
} }
internal SocketGuildUser AddOrUpdateUser(PresenceModel model) internal SocketGuildUser AddOrUpdateUser(PresenceModel model)
@@ -885,6 +880,7 @@ namespace Discord.WebSocket
if (self != null) if (self != null)
_members.TryAdd(self.Id, self); _members.TryAdd(self.Id, self);


_downloaderPromise = new TaskCompletionSource<bool>();
DownloadedMemberCount = _members.Count; DownloadedMemberCount = _members.Count;


foreach (var member in members) foreach (var member in members)


Loading…
Cancel
Save