diff options
author | Paul Munteanu <luth@luthcode.net> | 2021-08-01 21:01:56 +0300 |
---|---|---|
committer | Paul Munteanu <luth@luthcode.net> | 2021-08-01 21:01:56 +0300 |
commit | 64220d51f9a8ad6f7a18d08e988cd9bd4700baea (patch) | |
tree | 4f83ed61b241ebf4f9a356b2b3a60a364b18eb77 /src/util | |
parent | Merge pull request #180 from fosscord/l10n_master (diff) | |
download | server-64220d51f9a8ad6f7a18d08e988cd9bd4700baea.tar.xz |
[Channel] Implement type 4 channel and clean the code
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/Channel.ts | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/util/Channel.ts b/src/util/Channel.ts index 8dfc03bc..4d322812 100644 --- a/src/util/Channel.ts +++ b/src/util/Channel.ts @@ -13,11 +13,21 @@ import { emitEvent } from "./Event"; // TODO: DM channel export async function createChannel(channel: Partial<TextChannel | VoiceChannel>, user_id: string = "0") { - if (!channel.permission_overwrites) channel.permission_overwrites = []; + + // Always check if user has permission first + const permissions = await getPermission(user_id, channel.guild_id); + permissions.hasThrow("MANAGE_CHANNELS"); switch (channel.type) { case ChannelType.GUILD_TEXT: case ChannelType.GUILD_VOICE: + if (channel.parent_id) { + const exists = await ChannelModel.findOne({ id: channel.parent_id }, { guild_id: true }).exec(); + if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400); + if (exists.guild_id !== channel.guild_id) throw new HTTPError("The category channel needs to be in the guild"); + } + break; + case ChannelType.GUILD_CATEGORY: break; case ChannelType.DM: case ChannelType.GROUP_DM: @@ -29,15 +39,7 @@ export async function createChannel(channel: Partial<TextChannel | VoiceChannel> throw new HTTPError("Not yet supported"); } - const permissions = await getPermission(user_id, channel.guild_id); - permissions.hasThrow("MANAGE_CHANNELS"); - - if (channel.parent_id) { - const exists = await ChannelModel.findOne({ id: channel.parent_id }, { guild_id: true }).exec(); - if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400); - if (exists.guild_id !== channel.guild_id) throw new HTTPError("The category channel needs to be in the guild"); - } - + if (!channel.permission_overwrites) channel.permission_overwrites = []; // TODO: auto generate position channel = await new ChannelModel({ |