Browse Source

Renamed PermissionOverwrites.Type to TargetType, cleaned up Channel/Server permission constants.

tags/docs-0.9
RogueException 9 years ago
parent
commit
345a78aa35
4 changed files with 38 additions and 21 deletions
  1. +4
    -4
      src/Discord.Net/DiscordClient.API.cs
  2. +2
    -2
      src/Discord.Net/Models/Channel.cs
  3. +14
    -11
      src/Discord.Net/Models/Member.cs
  4. +18
    -4
      src/Discord.Net/Models/PackedPermissions.cs

+ 4
- 4
src/Discord.Net/DiscordClient.API.cs View File

@@ -541,7 +541,7 @@ namespace Discord
uint denyValue = deny?.RawValue ?? 0; uint denyValue = deny?.RawValue ?? 0;
bool changed = false; bool changed = false;


var perms = channel.PermissionOverwrites.Where(x => x.Type != targetType || x.TargetId != targetId).FirstOrDefault();
var perms = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).FirstOrDefault();
if (allowValue != 0 || denyValue != 0) if (allowValue != 0 || denyValue != 0)
{ {
await _api.SetChannelPermissions(channel.Id, targetId, targetType, allowValue, denyValue); await _api.SetChannelPermissions(channel.Id, targetId, targetType, allowValue, denyValue);
@@ -567,7 +567,7 @@ namespace Discord
await _api.DeleteChannelPermissions(channel.Id, targetId); await _api.DeleteChannelPermissions(channel.Id, targetId);
if (perms != null) if (perms != null)
{ {
channel._permissionOverwrites = channel.PermissionOverwrites.Where(x => x.Type != targetType || x.TargetId != targetId).ToArray();
channel._permissionOverwrites = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).ToArray();
changed = true; changed = true;
} }
} }
@@ -614,11 +614,11 @@ namespace Discord


try try
{ {
var perms = channel.PermissionOverwrites.Where(x => x.Type != idType || x.TargetId != userOrRoleId).FirstOrDefault();
var perms = channel.PermissionOverwrites.Where(x => x.TargetType != idType || x.TargetId != userOrRoleId).FirstOrDefault();
await _api.DeleteChannelPermissions(channel.Id, userOrRoleId).ConfigureAwait(false); await _api.DeleteChannelPermissions(channel.Id, userOrRoleId).ConfigureAwait(false);
if (perms != null) if (perms != null)
{ {
channel.PermissionOverwrites.Where(x => x.Type != idType || x.TargetId != userOrRoleId).ToArray();
channel.PermissionOverwrites.Where(x => x.TargetType != idType || x.TargetId != userOrRoleId).ToArray();


if (idType == PermissionTarget.Role) if (idType == PermissionTarget.Role)
channel.InvalidatePermissionsCache(); channel.InvalidatePermissionsCache();


+ 2
- 2
src/Discord.Net/Models/Channel.cs View File

@@ -9,14 +9,14 @@ namespace Discord
{ {
public sealed class PermissionOverwrite public sealed class PermissionOverwrite
{ {
public string Type { get; }
public string TargetType { get; }
public string TargetId { get; } public string TargetId { get; }
public PackedChannelPermissions Allow { get; } public PackedChannelPermissions Allow { get; }
public PackedChannelPermissions Deny { get; } public PackedChannelPermissions Deny { get; }


internal PermissionOverwrite(string type, string targetId, uint allow, uint deny) internal PermissionOverwrite(string type, string targetId, uint allow, uint deny)
{ {
Type = type;
TargetType = type;
TargetId = targetId; TargetId = targetId;
Allow = new PackedChannelPermissions(allow); Allow = new PackedChannelPermissions(allow);
Deny = new PackedChannelPermissions( deny); Deny = new PackedChannelPermissions( deny);


+ 14
- 11
src/Discord.Net/Models/Member.cs View File

@@ -176,9 +176,10 @@ namespace Discord
PackedChannelPermissions permissions; PackedChannelPermissions permissions;
if (!_permissions.TryGetValue(channelId, out permissions)) return; if (!_permissions.TryGetValue(channelId, out permissions)) return;
uint newPermissions = 0x0; uint newPermissions = 0x0;
uint oldPermissions = permissions.RawValue;


if (UserId == server.OwnerId) if (UserId == server.OwnerId)
newPermissions = PackedChannelPermissions.Mask;
newPermissions = PackedChannelPermissions.All.RawValue;
else else
{ {
if (channel == null) return; if (channel == null) return;
@@ -187,24 +188,26 @@ namespace Discord
var orderedRoles = Roles.OrderBy(x => x.Id); var orderedRoles = Roles.OrderBy(x => x.Id);
foreach (var serverRole in orderedRoles) foreach (var serverRole in orderedRoles)
newPermissions |= serverRole.Permissions.RawValue; newPermissions |= serverRole.Permissions.RawValue;
foreach (var denyRole in channelOverwrites.Where(x => x.Type == PermissionTarget.Role && x.Deny.RawValue != 0 && orderedRoles.Any(y => y.Id == x.TargetId)))
foreach (var denyRole in channelOverwrites.Where(x => x.TargetType == PermissionTarget.Role && x.Deny.RawValue != 0 && orderedRoles.Any(y => y.Id == x.TargetId)))
newPermissions &= ~denyRole.Deny.RawValue; newPermissions &= ~denyRole.Deny.RawValue;
foreach (var allowRole in channelOverwrites.Where(x => x.Type == PermissionTarget.Role && x.Allow.RawValue != 0 && orderedRoles.Any(y => y.Id == x.TargetId)))
foreach (var allowRole in channelOverwrites.Where(x => x.TargetType == PermissionTarget.Role && x.Allow.RawValue != 0 && orderedRoles.Any(y => y.Id == x.TargetId)))
newPermissions |= allowRole.Allow.RawValue; newPermissions |= allowRole.Allow.RawValue;
foreach (var denyMembers in channelOverwrites.Where(x => x.Type == PermissionTarget.Member && x.TargetId == UserId && x.Deny.RawValue != 0))
foreach (var denyMembers in channelOverwrites.Where(x => x.TargetType == PermissionTarget.Member && x.TargetId == UserId && x.Deny.RawValue != 0))
newPermissions &= ~denyMembers.Deny.RawValue; newPermissions &= ~denyMembers.Deny.RawValue;
foreach (var allowMembers in channelOverwrites.Where(x => x.Type == PermissionTarget.Member && x.TargetId == UserId && x.Allow.RawValue != 0))
foreach (var allowMembers in channelOverwrites.Where(x => x.TargetType == PermissionTarget.Member && x.TargetId == UserId && x.Allow.RawValue != 0))
newPermissions |= allowMembers.Allow.RawValue; newPermissions |= allowMembers.Allow.RawValue;


if (((newPermissions >> (PackedChannelPermissions.GlobalBit - 1)) & 1) == 1)
newPermissions = PackedChannelPermissions.Mask;
} }


if (permissions.RawValue != newPermissions)
{
permissions.SetRawValue(newPermissions);
permissions.SetRawValue(newPermissions);

if (permissions.General_ManagePermissions)
permissions.SetRawValue(PackedChannelPermissions.All.RawValue);
else if (server.DefaultChannelId == channelId)
permissions.Text_ReadMessages = true;

if (permissions.RawValue != oldPermissions)
channel.InvalidMembersCache(); channel.InvalidMembersCache();
}
} }
//TODO: Add GetServerPermissions //TODO: Add GetServerPermissions
public PackedChannelPermissions GetPermissions(Channel channel) public PackedChannelPermissions GetPermissions(Channel channel)


+ 18
- 4
src/Discord.Net/Models/PackedPermissions.cs View File

@@ -4,8 +4,15 @@ namespace Discord
{ {
public sealed class PackedServerPermissions : PackedPermissions public sealed class PackedServerPermissions : PackedPermissions
{ {
internal const int GlobalBit = 4; //ManagePermissions implicitly gives all permissions
public static readonly uint Mask = Convert.ToUInt32("00000011111100111111110000111111", 2);
public static PackedServerPermissions None { get; }
public static PackedServerPermissions All { get; }
static PackedServerPermissions()
{
None = new PackedServerPermissions();
None.Lock();
All = new PackedServerPermissions(Convert.ToUInt32("00000011111100111111110000111111", 2));
All.Lock();
}


public PackedServerPermissions(uint rawValue = 0) : base(rawValue) { } public PackedServerPermissions(uint rawValue = 0) : base(rawValue) { }


@@ -25,8 +32,15 @@ namespace Discord


public sealed class PackedChannelPermissions : PackedPermissions public sealed class PackedChannelPermissions : PackedPermissions
{ {
internal const int GlobalBit = 4; //ManagePermissions implicitly gives all permissions
public static readonly uint Mask = Convert.ToUInt32("00000011111100111111110000011001", 2);
public static PackedChannelPermissions None { get; }
public static PackedChannelPermissions All { get; }
static PackedChannelPermissions()
{
None = new PackedChannelPermissions();
None.Lock();
All = new PackedChannelPermissions(Convert.ToUInt32("00000011111100111111110000011001", 2));
All.Lock();
}


public PackedChannelPermissions(uint rawValue = 0) : base(rawValue) { } public PackedChannelPermissions(uint rawValue = 0) : base(rawValue) { }


Loading…
Cancel
Save