1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-09-22 10:41:34 +02: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 { 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
View File

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

View File

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

View File

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