getOverrides static method
Returns List of channel
permissions overrides for given member
.
Implementation
static List<int> getOverrides(Member member, GuildChannel channel) {
var allowRaw = 0;
var denyRaw = 0;
try {
final publicOverride = channel.permissionOverrides.firstWhere((ov) => ov.id == member.guild.getFromCache()?.everyoneRole.id);
allowRaw = publicOverride.allow;
denyRaw = publicOverride.deny;
// ignore: avoid_catches_without_on_clauses, empty_catches
} on Error { }
var allowRole = 0;
var denyRole = 0;
for (final role in member.roles) {
try {
final channelOverride = channel.permissionOverrides.firstWhere((f) => f.id == role.id);
denyRole |= channelOverride.deny;
allowRole |= channelOverride.allow;
// ignore: avoid_catches_without_on_clauses, empty_catches
} on Error { }
}
allowRaw = (allowRaw & ~denyRole) | allowRole;
denyRaw = (denyRaw & ~allowRole) | denyRole;
// TODO: NNBD: try-catch in where
try {
final memberOverride = channel.permissionOverrides.firstWhere((g) => g.id == member.id);
allowRaw = (allowRaw & ~memberOverride.deny) | memberOverride.allow;
denyRaw = (denyRaw & ~memberOverride.allow) | memberOverride.deny;
// ignore: avoid_catches_without_on_clauses, empty_catches
} on Error { }
return [allowRaw, denyRaw];
}