Fix Channel.UserIds thread safety and recursion

This commit is contained in:
RogueException
2015-10-01 18:54:54 -03:00
parent 1f548d2305
commit c2acc2c28e
2 changed files with 4 additions and 5 deletions

View File

@@ -47,17 +47,17 @@ namespace Discord
[JsonIgnore] [JsonIgnore]
public User Recipient => _client.Users[RecipientId]; public User Recipient => _client.Users[RecipientId];
private string[] userIds; private string[] _userIds;
public IEnumerable<string> UserIds public IEnumerable<string> UserIds
{ {
get get
{ {
if (!_areMembersStale) if (!_areMembersStale)
return userIds; return _userIds;
_userIds = Server.Members.Where(x => x.GetPermissions(Id).Text_ReadMessages).Select(x => x.UserId).ToArray();
_areMembersStale = false; _areMembersStale = false;
userIds = Members.Where(x => x.Permissions.Text_ReadMessages).Select(x => x.UserId).ToArray(); return _userIds;
return userIds;
} }
} }
public IEnumerable<Member> Members => UserIds.Select(x => _client.Members[x, ServerId]); public IEnumerable<Member> Members => UserIds.Select(x => _client.Members[x, ServerId]);

View File

@@ -31,7 +31,6 @@ namespace Discord
public string SessionId { get; internal set; } public string SessionId { get; internal set; }
public string Token { get; internal set; } public string Token { get; internal set; }
public PackedPermissions Permissions { get; internal set; }
/// <summary> Returns the id for the game this user is currently playing. </summary> /// <summary> Returns the id for the game this user is currently playing. </summary>
public string GameId { get; internal set; } public string GameId { get; internal set; }