summary refs log tree commit diff
path: root/src/routes/channels
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/channels')
-rw-r--r--src/routes/channels/#channel_id/index.ts55
1 files changed, 41 insertions, 14 deletions
diff --git a/src/routes/channels/#channel_id/index.ts b/src/routes/channels/#channel_id/index.ts

index f6970df3..730c1a67 100644 --- a/src/routes/channels/#channel_id/index.ts +++ b/src/routes/channels/#channel_id/index.ts
@@ -1,30 +1,57 @@ -import { ChannelModel, getPermission, toObject } from "@fosscord/server-util"; +import { ChannelDeleteEvent, ChannelModel, ChannelUpdateEvent, getPermission, toObject } from "@fosscord/server-util"; import { Router } from "express"; import { HTTPError } from "lambert-server"; +import { ChannelModifySchema } from "../../../schema/Channel"; +import { emitEvent } from "../../../util/Event"; +import { check } from "../../../util/instanceOf"; const router: Router = Router(); // TODO: delete channel // TODO: Get channel -router.delete("/", async(req,res)=>{ - const {channel_id} = req.params +router.delete("/", async (req, res) => { + const { channel_id } = req.params const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true, type: true, permission_overwrites: true }).exec(); if (!channel) throw new HTTPError("Channel not found", 404); - if (channel.guild_id) { - const permission = await getPermission(req.user_id, channel.guild_id) - permission.hasThrow("MANAGE_CHANNELS") - - // TODO Channel Update Gateway event will fire for each of them - await ChannelModel.updateMany({parent_id: channel_id}, {$set: {channel_id: null}}).exec() - - await ChannelModel.deleteOne({id: channel_id}) - } - + const permission = await getPermission(req.user_id, channel.guild_id) + permission.hasThrow("MANAGE_CHANNELS") + + // TODO Channel Update Gateway event will fire for each of them + + + await ChannelModel.deleteOne({ id: channel_id }) + // TODO: Dm channel "close" not delete - + const data = toObject(channel); //TODO: Reload channel list if request successful res.send(data) }) +// should be good now + +router.patch("/", check(ChannelModifySchema), async (req, res) => { + var payload = req.body as ChannelModifySchema //new data + const { channel_id } = req.params + var channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); + if (!channel) throw new HTTPError("Channel not found", 404); + + const permission = await getPermission(req.user_id, channel.guild_id, channel_id) + permission.hasThrow("MANAGE_CHANNELS") + channel = await ChannelModel.findOneAndUpdate({ id: channel_id }, payload).exec() + if (!channel) throw new HTTPError("Channel not found", 404); + + //const data = toObject(channel); + //TODO: Reload channel list if request successful + + await emitEvent({ + event: "CHANNEL_UPDATE", + data: channel, + guild_id: channel.guild_id, + } as ChannelUpdateEvent) + + res.send(toObject(channel)); +}) + export default router; +