1
0
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:
Flam3rboy 2021-04-26 00:12:27 +02:00 committed by GitHub
commit 40e86e43a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 71 additions and 482 deletions

481
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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
View File

@ -0,0 +1,8 @@
declare global {
namespace Express {
interface Request {
user_id: any;
token: any;
}
}
}

View File

@ -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;

View File

@ -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;