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/bulk-delete.ts b/src/routes/channels/#channel_id/messages/bulk-delete.ts
index ff1324d7..bf71404a 100644
--- a/src/routes/channels/#channel_id/messages/bulk-delete.ts
+++ b/src/routes/channels/#channel_id/messages/bulk-delete.ts
@@ -27,6 +27,7 @@ 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,
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/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 {
|