refactor: switch api and gateway to V8 (#4879)

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
This commit is contained in:
Sugden
2021-02-11 17:10:35 +00:00
committed by GitHub
parent ae3c3d80ee
commit ee5bc1a5c4
33 changed files with 372 additions and 364 deletions

View File

@@ -7,6 +7,7 @@ const Role = require('./Role');
const { Error, TypeError } = require('../errors');
const Collection = require('../util/Collection');
const { ChannelTypes } = require('../util/Constants');
const { OverwriteTypes } = require('../util/Constants');
const Permissions = require('../util/Permissions');
const Util = require('../util/Util');
@@ -161,12 +162,12 @@ class GuildChannel extends Channel {
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)
.remove(overwrites.everyone ? overwrites.everyone.deny : 0n)
.add(overwrites.everyone ? overwrites.everyone.allow : 0n)
.remove(overwrites.roles.length > 0n ? overwrites.roles.map(role => role.deny) : 0n)
.add(overwrites.roles.length > 0n ? overwrites.roles.map(role => role.allow) : 0n)
.remove(overwrites.member ? overwrites.member.deny : 0n)
.add(overwrites.member ? overwrites.member.allow : 0n)
.freeze();
}
@@ -183,10 +184,10 @@ class GuildChannel extends Channel {
const roleOverwrites = this.permissionOverwrites.get(role.id);
return role.permissions
.remove(everyoneOverwrites ? everyoneOverwrites.deny : 0)
.add(everyoneOverwrites ? everyoneOverwrites.allow : 0)
.remove(roleOverwrites ? roleOverwrites.deny : 0)
.add(roleOverwrites ? roleOverwrites.allow : 0)
.remove(everyoneOverwrites ? everyoneOverwrites.deny : 0n)
.add(everyoneOverwrites ? everyoneOverwrites.allow : 0n)
.remove(roleOverwrites ? roleOverwrites.deny : 0n)
.add(roleOverwrites ? roleOverwrites.allow : 0n)
.freeze();
}
@@ -204,13 +205,12 @@ class GuildChannel extends Channel {
* },
* ], 'Needed to change permissions');
*/
overwritePermissions(overwrites, reason) {
async overwritePermissions(overwrites, reason) {
if (!Array.isArray(overwrites) && !(overwrites instanceof Collection)) {
return Promise.reject(
new TypeError('INVALID_TYPE', 'overwrites', 'Array or Collection of Permission Overwrites', true),
);
throw new TypeError('INVALID_TYPE', 'overwrites', 'Array or Collection of Permission Overwrites', true);
}
return this.edit({ permissionOverwrites: overwrites, reason }).then(() => this);
await this.edit({ permissionOverwrites: overwrites, reason });
return this;
}
/**
@@ -227,13 +227,17 @@ class GuildChannel extends Channel {
* .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
* .catch(console.error);
*/
updateOverwrite(userOrRole, options, reason) {
async updateOverwrite(userOrRole, options, reason) {
userOrRole = this.guild.roles.resolve(userOrRole) || this.client.users.resolve(userOrRole);
if (!userOrRole) return Promise.reject(new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role'));
const existing = this.permissionOverwrites.get(userOrRole.id);
if (existing) return existing.update(options, reason).then(() => this);
return this.createOverwrite(userOrRole, options, reason);
if (existing) {
await existing.update(options, reason);
} else {
await this.createOverwrite(userOrRole, options, reason);
}
return this;
}
/**
@@ -254,13 +258,19 @@ class GuildChannel extends Channel {
userOrRole = this.guild.roles.resolve(userOrRole) || this.client.users.resolve(userOrRole);
if (!userOrRole) return Promise.reject(new TypeError('INVALID_TYPE', 'parameter', 'User nor a Role'));
const type = userOrRole instanceof Role ? 'role' : 'member';
const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;
const { allow, deny } = PermissionOverwrites.resolveOverwriteOptions(options);
return this.client.api
.channels(this.id)
.permissions[userOrRole.id].put({
data: { id: userOrRole.id, type, allow: allow.bitfield, deny: deny.bitfield },
.permissions(userOrRole.id)
.put({
data: {
id: userOrRole.id,
type,
allow,
deny,
},
reason,
})
.then(() => this);