fix: correct permissions checks and cache on update (#6015)

This commit is contained in:
ckohen
2021-07-03 05:23:01 -07:00
committed by GitHub
parent 4adfc45b5a
commit 568691ce6a
4 changed files with 16 additions and 2 deletions

View File

@@ -297,13 +297,22 @@ class ThreadChannel extends Channel {
return this.edit({ rateLimitPerUser }, reason);
}
/**
* Whether the client user is a member of the thread.
* @type {boolean}
* @readonly
*/
get joined() {
return this.members.cache.has(this.client.user?.id);
}
/**
* Whether the thread is editable by the client user (name, archived, autoArchiveDuration)
* @type {boolean}
* @readonly
*/
get editable() {
return this.ownerID === this.client.user.id || this.manageable;
return (this.ownerID === this.client.user.id && (this.type !== 'private_thread' || this.joined)) || this.manageable;
}
/**
@@ -314,6 +323,7 @@ class ThreadChannel extends Channel {
get joinable() {
return (
!this.archived &&
!this.joined &&
this.permissionsFor(this.client.user)?.has(
this.type === 'private_thread' ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL,
false,
@@ -338,6 +348,7 @@ class ThreadChannel extends Channel {
get sendable() {
return (
!this.archived &&
(this.type !== 'private_thread' || this.joined || this.manageable) &&
this.permissionsFor(this.client.user)?.any(
[
Permissions.FLAGS.SEND_MESSAGES,