effectivePermissions method

Future<Permissions> effectivePermissions(
  1. Member member
)

Returns effective permissions for member to this channel including channel overrides.

Implementation

Future<Permissions> effectivePermissions(Member member) async {
  if (member.guild != this.guild) {
    return Permissions.empty();
  }

  final owner = await member.guild.getOrDownload();
  if (owner == member) {
    return Permissions.fromInt(PermissionsConstants.allPermissions);
  }

  var rawMemberPerms = (await member.effectivePermissions).raw;

  if (PermissionsUtils.isApplied(rawMemberPerms, PermissionsConstants.administrator)) {
    return Permissions.fromInt(PermissionsConstants.allPermissions);
  }

  final overrides = PermissionsUtils.getOverrides(member, this);
  rawMemberPerms = PermissionsUtils.apply(rawMemberPerms, overrides.first, overrides.last);

  return PermissionsUtils.isApplied(rawMemberPerms, PermissionsConstants.viewChannel)
      ? Permissions.fromInt(rawMemberPerms)
      : Permissions.empty();
}