Channel Delete + Update Route
This commit is contained in:
parent
c041961243
commit
aeecd50b77
1
package-lock.json
generated
1
package-lock.json
generated
@ -2812,7 +2812,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"anymatch": "~3.1.1",
|
"anymatch": "~3.1.1",
|
||||||
"braces": "~3.0.2",
|
"braces": "~3.0.2",
|
||||||
"fsevents": "~2.3.1",
|
|
||||||
"glob-parent": "~5.1.0",
|
"glob-parent": "~5.1.0",
|
||||||
"is-binary-path": "~2.1.0",
|
"is-binary-path": "~2.1.0",
|
||||||
"is-glob": "~4.0.1",
|
"is-glob": "~4.0.1",
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
"build": "tsc -b .",
|
"build": "tsc -b .",
|
||||||
"build:util": "tsc -b ./node_modules/@fosscord/server-util/",
|
"build:util": "tsc -b ./node_modules/@fosscord/server-util/",
|
||||||
"postinstall": "patch-package",
|
"postinstall": "patch-package",
|
||||||
"dev": "tsnd --respawn src/"
|
"dev": "tsnd --respawn src/start.ts"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -12,8 +12,13 @@ import { ErrorHandler } from "./middlewares/ErrorHandler";
|
|||||||
import { BodyParser } from "./middlewares/BodyParser";
|
import { BodyParser } from "./middlewares/BodyParser";
|
||||||
import { Router } from "express";
|
import { Router } from "express";
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
|
import mongoose from "mongoose";
|
||||||
|
|
||||||
export interface FosscordServerOptions extends ServerOptions {}
|
// this will return the new updated document for findOneAndUpdate
|
||||||
|
mongoose.set('returnOriginal', false); // https://mongoosejs.com/docs/api/model.html#model_Model.findOneAndUpdate
|
||||||
|
|
||||||
|
|
||||||
|
export interface FosscordServerOptions extends ServerOptions { }
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace Express {
|
namespace Express {
|
||||||
|
8
src/global.d.ts
vendored
Normal file
8
src/global.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
declare global {
|
||||||
|
namespace Express {
|
||||||
|
interface Request {
|
||||||
|
user_id: any;
|
||||||
|
token: any;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,24 +1,25 @@
|
|||||||
import { ChannelModel, getPermission, toObject } from "@fosscord/server-util";
|
import { ChannelDeleteEvent, ChannelModel, ChannelUpdateEvent, getPermission, toObject } from "@fosscord/server-util";
|
||||||
import { Router } from "express";
|
import { Router } from "express";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
|
import { ChannelModifySchema } from "../../../schema/Channel";
|
||||||
|
import { emitEvent } from "../../../util/Event";
|
||||||
|
import { check } from "../../../util/instanceOf";
|
||||||
const router: Router = Router();
|
const router: Router = Router();
|
||||||
// TODO: delete channel
|
// TODO: delete channel
|
||||||
// TODO: Get channel
|
// TODO: Get channel
|
||||||
|
|
||||||
router.delete("/", async(req,res)=>{
|
router.delete("/", async (req, res) => {
|
||||||
const {channel_id} = req.params
|
const { channel_id } = req.params
|
||||||
|
|
||||||
const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true, type: true, permission_overwrites: true }).exec();
|
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) throw new HTTPError("Channel not found", 404);
|
||||||
if (channel.guild_id) {
|
const permission = await getPermission(req.user_id, channel.guild_id)
|
||||||
const permission = await getPermission(req.user_id, channel.guild_id)
|
permission.hasThrow("MANAGE_CHANNELS")
|
||||||
permission.hasThrow("MANAGE_CHANNELS")
|
|
||||||
|
|
||||||
// TODO Channel Update Gateway event will fire for each of them
|
// 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})
|
|
||||||
}
|
await ChannelModel.deleteOne({ id: channel_id })
|
||||||
|
|
||||||
// TODO: Dm channel "close" not delete
|
// TODO: Dm channel "close" not delete
|
||||||
|
|
||||||
@ -27,4 +28,30 @@ router.delete("/", async(req,res)=>{
|
|||||||
res.send(data)
|
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;
|
export default router;
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ export interface ChannelModifySchema {
|
|||||||
topic?: string;
|
topic?: string;
|
||||||
bitrate?: number;
|
bitrate?: number;
|
||||||
user_limit?: number;
|
user_limit?: number;
|
||||||
rate_limit_per_user?: Number;
|
rate_limit_per_user?: number;
|
||||||
position?: number;
|
position?: number;
|
||||||
permission_overwrites?: {
|
permission_overwrites?: {
|
||||||
id: string;
|
id: string;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user