diff --git a/src/routes/auth/login.ts b/src/routes/auth/login.ts
index 247ee018..5c43db1b 100644
--- a/src/routes/auth/login.ts
+++ b/src/routes/auth/login.ts
@@ -25,25 +25,16 @@ router.post(
const query: any[] = [{ phone: login }];
if (email) query.push({ email });
- const user = await UserModel.findOne(
- {
- $or: query,
- },
- `user_data.hash id user_settings.locale user_settings.theme`
- ).exec();
+ const user = await UserModel.findOne({ $or: query }, `user_data.hash id user_settings.locale user_settings.theme`).exec();
if (!user) {
- throw FieldErrors({
- login: { message: req.t("auth:login.INVALID_LOGIN"), code: "INVALID_LOGIN" },
- });
+ throw FieldErrors({ login: { message: req.t("auth:login.INVALID_LOGIN"), code: "INVALID_LOGIN" } });
}
// the salt is saved in the password refer to bcrypt docs
const same_password = await bcrypt.compare(password, user.user_data.hash);
if (!same_password) {
- throw FieldErrors({
- password: { message: req.t("auth:login.INVALID_PASSWORD"), code: "INVALID_PASSWORD" },
- });
+ throw FieldErrors({ password: { message: req.t("auth:login.INVALID_PASSWORD"), code: "INVALID_PASSWORD" } });
}
const token = await generateToken(user.id);
diff --git a/src/routes/channels/#channel_id/messages/#message_id/index.ts b/src/routes/channels/#channel_id/messages/#message_id/index.ts
index 014daee7..19efc823 100644
--- a/src/routes/channels/#channel_id/messages/#message_id/index.ts
+++ b/src/routes/channels/#channel_id/messages/#message_id/index.ts
@@ -1,6 +1,35 @@
+import { ChannelModel, getPermission, MessageDeleteEvent, MessageModel } from "@fosscord/server-util";
import { Router } from "express";
+import { HTTPError } from "lambert-server";
+import { emitEvent } from "../../../../../util/Event";
+import { check } from "../../../../../util/instanceOf";
const router = Router();
// TODO:
+router.delete("/", async (req, res) => {
+ const { message_id, channel_id } = req.params;
+
+ const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true });
+ if (!channel) throw new HTTPError("Channel doesn't exist", 404);
+
+ const permission = await getPermission(req.user_id, channel.guild_id, channel_id);
+ permission.hasThrow("MANAGE_MESSAGES");
+
+ await MessageModel.deleteOne({ id: message_id }).exec();
+
+ await emitEvent({
+ event: "MESSAGE_DELETE",
+ channel_id,
+ guild_id: channel.guild_id,
+ data: {
+ id: message_id,
+ channel_id,
+ guild_id: channel.guild_id,
+ },
+ } as MessageDeleteEvent);
+
+ res.sendStatus(204);
+});
+
export default router;
diff --git a/src/routes/channels/#channel_id/messages/bulk-delete.ts b/src/routes/channels/#channel_id/messages/bulk-delete.ts
index ff1324d7..6ac4d8de 100644
--- a/src/routes/channels/#channel_id/messages/bulk-delete.ts
+++ b/src/routes/channels/#channel_id/messages/bulk-delete.ts
@@ -27,11 +27,12 @@ router.post("/", check({ messages: [String] }), async (req, res) => {
if (messages.length > maxBulkDelete) throw new HTTPError(`You cannot delete more than ${maxBulkDelete} messages`);
await MessageModel.deleteMany({ id: { $in: messages } }).exec();
+
await emitEvent({
event: "MESSAGE_DELETE_BULK",
channel_id,
data: { ids: messages, channel_id, guild_id: channel.guild_id },
} as MessageDeleteBulkEvent);
- res.status(204).send();
+ res.sendStatus(204);
});
diff --git a/src/routes/users/@me/channels.ts b/src/routes/users/@me/channels.ts
index 45371b34..3b2b6781 100644
--- a/src/routes/users/@me/channels.ts
+++ b/src/routes/users/@me/channels.ts
@@ -1,8 +1,4 @@
-import {
- Router,
- Request,
- Response
-} from "express";
+import { Router, Request, Response } from "express";
import {
ChannelModel,
ChannelCreateEvent,
@@ -10,39 +6,23 @@ import {
UserModel,
toObject,
ChannelType,
- Snowflake
+ Snowflake,
+ trimSpecial,
} 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";
+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();
- if (!user) throw new HTTPError("User not found", 404);
-
- var testID = "829044530203328513"; //FOR TEST
-
var channels = await ChannelModel.find({
- recipients: req.user_id,
- type: 1
+ $or: [
+ { recipients: req.user_id, type: ChannelType.DM },
+ { recipients: req.user_id, type: ChannelType.GROUP_DM },
+ ],
}).exec();
res.json(toObject(channels));
@@ -50,20 +30,22 @@ router.get("/", async (req: Request, res: Response) => {
router.post("/", check(DmChannelCreateSchema), async (req, res) => {
const body = req.body as DmChannelCreateSchema;
+ if (body.recipients.length === 0) throw new HTTPError("You need to specify at least one recipient");
+ const type = body.recipients.length === 1 ? ChannelType.DM : ChannelType.GROUP_DM;
+ const name = trimSpecial(body.name);
const channel = {
- ...body,
+ name,
+ type,
owner_id: req.user_id,
id: Snowflake.generate(),
- type: ChannelType.DM,
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
+export default router;
diff --git a/src/routes/users/@me/guilds.ts b/src/routes/users/@me/guilds.ts
index 5042c17c..6528552b 100644
--- a/src/routes/users/@me/guilds.ts
+++ b/src/routes/users/@me/guilds.ts
@@ -49,7 +49,7 @@ router.delete("/:id", async (req: Request, res: Response) => {
guild_id: guild_id,
} as GuildMemberRemoveEvent);
- return res.status(204).send();
+ return res.sendStatus(204);
});
export default router;
diff --git a/src/schema/Channel.ts b/src/schema/Channel.ts
index 3a22872a..70e305e4 100644
--- a/src/schema/Channel.ts
+++ b/src/schema/Channel.ts
@@ -22,21 +22,13 @@ export const ChannelModifySchema = {
};
export const DmChannelCreateSchema = {
- owner_id: String,
- $id: String,
- $created_at: Date,
- name: String,
- type: Number,
- recipients: [String]
-}
+ $name: String,
+ recipients: [String],
+};
export interface DmChannelCreateSchema {
- owner_id: String;
- id?: String;
- created_at?: Date;
- name: String;
- type: Number;
- recipients: String[];
+ name?: string;
+ recipients: string[];
}
export interface ChannelModifySchema {
|