summary refs log tree commit diff
path: root/src/routes/users/@me/guilds.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/users/@me/guilds.ts')
-rw-r--r--src/routes/users/@me/guilds.ts55
1 files changed, 0 insertions, 55 deletions
diff --git a/src/routes/users/@me/guilds.ts b/src/routes/users/@me/guilds.ts
deleted file mode 100644

index 6528552b..00000000 --- a/src/routes/users/@me/guilds.ts +++ /dev/null
@@ -1,55 +0,0 @@ -import { Router, Request, Response } from "express"; -import { GuildModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "@fosscord/server-util"; -import { HTTPError } from "lambert-server"; -import { emitEvent } from "../../../util/Event"; -import { getPublicUser } from "../../../util/User"; - -const router: Router = Router(); - -router.get("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }, { guilds: true }).exec(); - if (!user) throw new HTTPError("User not found", 404); - - var guildIDs = user.guilds || []; - var guild = await GuildModel.find({ id: { $in: guildIDs } }) - .populate({ path: "joined_at", match: { id: req.user_id } }) - .exec(); - - res.json(toObject(guild)); -}); - -// user send to leave a certain guild -router.delete("/:id", async (req: Request, res: Response) => { - const guild_id = req.params.id; - const guild = await GuildModel.findOne({ id: guild_id }, { guild_id: true }).exec(); - - if (!guild) throw new HTTPError("Guild doesn't exist", 404); - if (guild.owner_id === req.user_id) throw new HTTPError("You can't leave your own guild", 400); - - await Promise.all([ - MemberModel.deleteOne({ id: req.user_id, guild_id: guild_id }).exec(), - UserModel.updateOne({ id: req.user_id }, { $pull: { guilds: guild_id } }).exec(), - emitEvent({ - event: "GUILD_DELETE", - data: { - id: guild_id, - }, - user_id: req.user_id, - } as GuildDeleteEvent), - ]); - - const user = await getPublicUser(req.user_id); - - await emitEvent({ - event: "GUILD_MEMBER_REMOVE", - data: { - guild_id: guild_id, - user: user, - }, - guild_id: guild_id, - } as GuildMemberRemoveEvent); - - return res.sendStatus(204); -}); - -export default router;