Browse Source

Add optional predicate

pull/1767/head
Daniel Baynton 4 years ago
parent
commit
94fedf8340
1 changed files with 14 additions and 6 deletions
  1. +14
    -6
      src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs

+ 14
- 6
src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs View File

@@ -852,6 +852,10 @@ namespace Discord.WebSocket
/// Clears this guild's user cache.
/// </summary>
public void ClearUserCache() => PurgeGuildUserCache();
/// <summary>
/// Clears this guild's user cache.
/// </summary>
public void ClearUserCache(Func<SocketGuildUser, bool> predicate) => PurgeGuildUserCache(predicate);
internal SocketGuildUser AddOrUpdateUser(UserModel model)
{
if (_members.TryGetValue(model.Id, out SocketGuildUser member))
@@ -909,19 +913,23 @@ namespace Discord.WebSocket
}
internal void PurgeGuildUserCache()
{
var members = Users;
PurgeGuildUserCache(x => true);
}
internal void PurgeGuildUserCache(Func<SocketGuildUser, bool> predicate)
{
var members = Users.Where(predicate);
var self = CurrentUser;
_members.Clear();
if (self != null)
_members.TryAdd(self.Id, self);

DownloadedMemberCount = _members.Count;

foreach (var member in members)
{
if (member.Id != self?.Id)
{
_members.TryRemove(member.Id, out _);
member.GlobalUser.RemoveRef(Discord);
}
}

DownloadedMemberCount = _members.Count;
}

/// <summary>


Loading…
Cancel
Save