Fixed member permission resolving
This commit is contained in:
@@ -16,7 +16,7 @@ namespace Discord.Collections
|
|||||||
|
|
||||||
protected override void OnCreated(Member item)
|
protected override void OnCreated(Member item)
|
||||||
{
|
{
|
||||||
item.Server.AddMember(item.UserId);
|
item.Server.AddMember(item);
|
||||||
item.User.AddServer(item.ServerId);
|
item.User.AddServer(item.ServerId);
|
||||||
item.User.AddRef();
|
item.User.AddRef();
|
||||||
if (item.UserId == _client.CurrentUserId)
|
if (item.UserId == _client.CurrentUserId)
|
||||||
@@ -24,7 +24,7 @@ namespace Discord.Collections
|
|||||||
}
|
}
|
||||||
protected override void OnRemoved(Member item)
|
protected override void OnRemoved(Member item)
|
||||||
{
|
{
|
||||||
item.Server.RemoveMember(item.UserId);
|
item.Server.RemoveMember(item);
|
||||||
item.User.RemoveServer(item.ServerId);
|
item.User.RemoveServer(item.ServerId);
|
||||||
item.User.RemoveRef();
|
item.User.RemoveRef();
|
||||||
if (item.UserId == _client.CurrentUserId)
|
if (item.UserId == _client.CurrentUserId)
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ namespace Discord
|
|||||||
if (!_areMembersStale)
|
if (!_areMembersStale)
|
||||||
return _userIds;
|
return _userIds;
|
||||||
|
|
||||||
_userIds = Server.Members.Where(x => x.GetPermissions(Id).Text_ReadMessages).Select(x => x.UserId).ToArray();
|
_userIds = Server.Members.Where(x => x.GetPermissions(Id)?.Text_ReadMessages ?? false).Select(x => x.UserId).ToArray();
|
||||||
_areMembersStale = false;
|
_areMembersStale = false;
|
||||||
return _userIds;
|
return _userIds;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,7 +152,9 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
internal void UpdatePermissions(string channelId)
|
internal void UpdatePermissions(string channelId)
|
||||||
{
|
{
|
||||||
var server = Server;
|
if (RoleIds == null) return; // We don't have all our data processed yet, this will be called again soon
|
||||||
|
|
||||||
|
var server = Server;
|
||||||
if (server == null) return;
|
if (server == null) return;
|
||||||
var channel = _client.Channels[channelId];
|
var channel = _client.Channels[channelId];
|
||||||
if (channel == null) return;
|
if (channel == null) return;
|
||||||
|
|||||||
@@ -194,18 +194,24 @@ namespace Discord
|
|||||||
return _invites.TryRemove(inviteId, out ignored);
|
return _invites.TryRemove(inviteId, out ignored);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void AddMember(string userId)
|
internal void AddMember(Member member)
|
||||||
{
|
{
|
||||||
_members.TryAdd(userId, true);
|
_members.TryAdd(member.UserId, true);
|
||||||
foreach (var channel in Channels)
|
foreach (var channel in Channels)
|
||||||
channel._areMembersStale = true;
|
{
|
||||||
|
member.AddChannel(channel.Id);
|
||||||
|
channel._areMembersStale = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
internal bool RemoveMember(string userId)
|
internal bool RemoveMember(Member member)
|
||||||
{
|
{
|
||||||
bool ignored;
|
bool ignored;
|
||||||
foreach (var channel in Channels)
|
foreach (var channel in Channels)
|
||||||
|
{
|
||||||
|
member.RemoveChannel(channel.Id);
|
||||||
channel._areMembersStale = true;
|
channel._areMembersStale = true;
|
||||||
return _members.TryRemove(userId, out ignored);
|
}
|
||||||
|
return _members.TryRemove(member.UserId, out ignored);
|
||||||
}
|
}
|
||||||
internal bool HasMember(string userId)
|
internal bool HasMember(string userId)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user