Fixed guilds not completing sync on user tokens
This commit is contained in:
@@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -29,7 +30,6 @@ namespace Discord.WebSocket
|
||||
private ConcurrentDictionary<ulong, SocketGuildUser> _members;
|
||||
private ConcurrentDictionary<ulong, SocketRole> _roles;
|
||||
private ConcurrentDictionary<ulong, SocketVoiceState> _voiceStates;
|
||||
private ConcurrentDictionary<ulong, PresenceModel> _cachedPresences;
|
||||
private ImmutableArray<Emoji> _emojis;
|
||||
private ImmutableArray<string> _features;
|
||||
internal bool _available;
|
||||
@@ -127,20 +127,17 @@ namespace Discord.WebSocket
|
||||
members.TryAdd(member.Id, member);
|
||||
}
|
||||
DownloadedMemberCount = members.Count;
|
||||
}
|
||||
var cachedPresences = new ConcurrentDictionary<ulong, PresenceModel>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Presences.Length * 1.05));
|
||||
{
|
||||
|
||||
for (int i = 0; i < model.Presences.Length; i++)
|
||||
{
|
||||
SocketGuildUser member;
|
||||
if (_members.TryGetValue(model.Presences[i].User.Id, out member))
|
||||
if (members.TryGetValue(model.Presences[i].User.Id, out member))
|
||||
member.Update(state, model.Presences[i]);
|
||||
else
|
||||
cachedPresences.TryAdd(model.Presences[i].User.Id, model.Presences[i]);
|
||||
Debug.Assert(false);
|
||||
}
|
||||
}
|
||||
_members = members;
|
||||
_cachedPresences = cachedPresences;
|
||||
MemberCount = model.MemberCount;
|
||||
|
||||
var voiceStates = new ConcurrentDictionary<ulong, SocketVoiceState>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.VoiceStates.Length * 1.05));
|
||||
@@ -216,20 +213,21 @@ namespace Discord.WebSocket
|
||||
members.TryAdd(member.Id, member);
|
||||
}
|
||||
DownloadedMemberCount = members.Count;
|
||||
}
|
||||
var cachedPresences = new ConcurrentDictionary<ulong, PresenceModel>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Presences.Length * 1.05));
|
||||
{
|
||||
|
||||
for (int i = 0; i < model.Presences.Length; i++)
|
||||
{
|
||||
SocketGuildUser member;
|
||||
if (_members.TryGetValue(model.Presences[i].User.Id, out member))
|
||||
if (members.TryGetValue(model.Presences[i].User.Id, out member))
|
||||
member.Update(state, model.Presences[i]);
|
||||
else
|
||||
cachedPresences.TryAdd(model.Presences[i].User.Id, model.Presences[i]);
|
||||
Debug.Assert(false);
|
||||
}
|
||||
}
|
||||
_members = members;
|
||||
_cachedPresences = cachedPresences;
|
||||
|
||||
var _ = _syncPromise.TrySetResultAsync(true);
|
||||
if (!model.Large)
|
||||
_ = _downloaderPromise.TrySetResultAsync(true);
|
||||
}
|
||||
|
||||
internal void Update(ClientState state, EmojiUpdateModel model)
|
||||
|
||||
Reference in New Issue
Block a user