/** * Gets the overall set of permissions for a member in this channel, taking into account channel overwrites. * @param {GuildMember} member The member to obtain the overall permissions for * @returns {Readonly<Permissions>} * @private */ memberPermissions(member) { if (member.id === this.guild.ownerID) return new Permissions(Permissions.ALL).freeze(); const roles = member.roles.cache; const permissions = new Permissions(roles.map(role => role.permissions)); if (permissions.has(Permissions.FLAGS.ADMINISTRATOR)) return new Permissions(Permissions.ALL).freeze(); const overwrites = this.overwritesFor(member, true, roles); return permissions .remove(overwrites.everyone ? overwrites.everyone.deny : 0) .add(overwrites.everyone ? overwrites.everyone.allow : 0) .remove(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.deny) : 0) .add(overwrites.roles.length > 0 ? overwrites.roles.map(role => role.allow) : 0) .remove(overwrites.member ? overwrites.member.deny : 0) .add(overwrites.member ? overwrites.member.allow : 0) .freeze(); }
render () { const { match, history } = this.props return ( <> <Switch> <Route path={`${match.path}/:id`} render={({ match }) => ( <LayoutGroup title='Edit Role'> <RoleForm key='edit' id={match.params.id} history={history} /> </LayoutGroup> )} /> <Route exact path={`${match.path}/`} render={() => ( <LayoutGroup title='Roles'> <RoleForm key='add' /> <DataList name='roles' selector={getAllRoles} actions={{ remove: removeRole, setSortState }} TEMPLATE={TEMPLATES.roles} /> </LayoutGroup> )} /> </Switch> </> ) }