summary refs log tree commit diff
path: root/src/routes
diff options
context:
space:
mode:
authorIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-04-24 10:21:40 +0200
committerIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-04-24 10:21:40 +0200
commit75461b9f6ed940d744c0036227b0f8ce943a26ca (patch)
treea02e9d3003bf43bff8ac2965b391a0747ae535e2 /src/routes
parentget /users/@me/channels (diff)
downloadserver-75461b9f6ed940d744c0036227b0f8ce943a26ca.tar.xz
POST /users/@me/channels
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/users/@me/channels.ts73
1 files changed, 66 insertions, 7 deletions
diff --git a/src/routes/users/@me/channels.ts b/src/routes/users/@me/channels.ts
index 8f2cb74d..b5a53be7 100644
--- a/src/routes/users/@me/channels.ts
+++ b/src/routes/users/@me/channels.ts
@@ -1,20 +1,79 @@
-import { Router, Request, Response } from "express";
-import { ChannelModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "@fosscord/server-util";
-import { HTTPError } from "lambert-server";
-import { emitEvent } from "../../../util/Event";
-import { getPublicUser } from "../../../util/User";
+import {
+	Router,
+	Request,
+	Response
+} from "express";
+import {
+	ChannelModel,
+	ChannelCreateEvent,
+	DMChannel,
+	UserModel,
+	toObject,
+	ChannelType,
+	Snowflake
+} from "@fosscord/server-util";
+import {
+	HTTPError
+} from "lambert-server";
+import {
+	emitEvent
+} from "../../../util/Event";
+import {
+	getPublicUser
+} from "../../../util/User";
+import {
+	DmChannelCreateSchema
+} from "../../../schema/Channel";
+import {
+	check
+} from "../../../util/instanceOf";
 
 const router: Router = Router();
 
 router.get("/", async (req: Request, res: Response) => {
-	const user = await UserModel.findOne({ id: req.user_id }, { guilds: true }).exec();
+	const user = await UserModel.findOne({
+		id: req.user_id
+	}, {
+		guilds: true
+	}).exec();
 	if (!user) throw new HTTPError("User not found", 404);
 
 	var testID = "829044530203328513"; //FOR TEST
 
-	var channels = await ChannelModel.find({ recipients: req.user_id }).exec(); 
+	var channels = await ChannelModel.find({
+		recipients: req.user_id,
+		type: 1
+	}).exec();
 
 	res.json(toObject(channels));
 });
 
+router.post("/", check(DmChannelCreateSchema), async (req, res) => {
+	const body = req.body as DmChannelCreateSchema;
+	switch (body.type) {
+		case ChannelType.GUILD_CATEGORY:
+		case ChannelType.GUILD_TEXT:
+		case ChannelType.GUILD_VOICE:
+			throw new HTTPError("You can't create a dm channel in a guild");
+			// TODO:
+		case ChannelType.GUILD_STORE:
+			throw new HTTPError("Not yet supported");
+		case ChannelType.GUILD_NEWS:
+			// TODO: check if guild is community server
+	}
+
+	const channel = {
+		...body,
+		owner_id: req.user_id,
+		id: Snowflake.generate(),
+		created_at: new Date(),
+	};
+	await new ChannelModel(channel).save();
+
+	/*Event({ event: "CHANNEL_CREATE", data: channel } as ChannelCreateEvent);*/
+
+
+	res.json(channel);
+});
+
 export default router;
\ No newline at end of file