mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-11 13:14:06 +01:00
Merge pull request #86 from aryan0078/master
Channel Delete + Modify Route
This commit is contained in:
commit
40e86e43a4
481
package-lock.json
generated
481
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,8 +12,13 @@ import { ErrorHandler } from "./middlewares/ErrorHandler";
|
||||
import { BodyParser } from "./middlewares/BodyParser";
|
||||
import { Router } from "express";
|
||||
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 {
|
||||
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,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;
|
||||
|
||||
|
@ -37,7 +37,7 @@ export interface ChannelModifySchema {
|
||||
topic?: string;
|
||||
bitrate?: number;
|
||||
user_limit?: number;
|
||||
rate_limit_per_user?: Number;
|
||||
rate_limit_per_user?: number;
|
||||
position?: number;
|
||||
permission_overwrites?: {
|
||||
id: string;
|
||||
|
Loading…
Reference in New Issue
Block a user