Files
discord.js/src/Structures/PermissionOverwrite.js
Brian Tanner fdfd41dd8c add .toObject() method to structures (#522)
* add .toObject() method to structures

* add compiled PMChannel change from last commit

* uncomment members in VoiceChannel toObject method
2016-08-16 09:53:07 -07:00

79 lines
1.6 KiB
JavaScript

"use strict";
import {Permissions} from "../Constants";
export default class PermissionOverwrite {
constructor(data) {
this.id = data.id;
this.type = data.type; // member or role
this.deny = data.deny;
this.allow = data.allow;
}
// returns an array of allowed permissions
get allowed(){
var allowed = [];
for( var permName in Permissions ){
if(permName === "manageRoles" || permName === "manageChannels"){
// these permissions do not exist in overwrites.
continue;
}
if(!!(this.allow & Permissions[permName])){
allowed.push(permName);
}
}
return allowed;
}
// returns an array of denied permissions
get denied(){
var denied = [];
for( var permName in Permissions ){
if(permName === "manageRoles" || permName === "manageChannels"){
// these permissions do not exist in overwrites.
continue;
}
if(!!(this.deny & Permissions[permName])){
denied.push(permName);
}
}
return denied;
}
toObject() {
let keys = ['id', 'type', 'allow', 'deny'],
obj = {};
for (let k of keys) {
obj[k] = this[k];
}
return obj;
}
setAllowed(allowedArray){
allowedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){
permission = Permissions[permission];
}
if(permission){
this.allow |= (1 << permission);
}
} );
}
setDenied(deniedArray){
deniedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){
permission = Permissions[permission];
}
if(permission){
this.deny |= (1 << permission);
}
} );
}
}