summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-07-28 10:34:36 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-07-28 10:34:36 +1000
commita5a632115605b5b52d9ceded939695c89c868313 (patch)
treea9856d95e35070927e6ce2e0b11e0be43a60305b /src
parentrefactor checkToken (diff)
parentgoof (diff)
downloadserver-a5a632115605b5b52d9ceded939695c89c868313.tar.xz
Merge branch 'master' into feat/refactorIdentify
Diffstat (limited to 'src')
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index a15b462d..75fb7b83 100644
--- a/src/api/routes/channels/#channel_id/messages/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -119,25 +119,27 @@ router.get(
 		};
 
 		let messages: Message[];
-		if (after) {
-			if (BigInt(after) > BigInt(Snowflake.generate()))
-				return res.status(422);
-			query.where.id = MoreThan(after);
-			messages = await Message.find(query);
-		} else if (before) {
-			if (BigInt(before) < BigInt(req.params.channel_id))
-				return res.status(422);
-			query.where.id = LessThan(before);
-			messages = await Message.find(query);
-		} else if (around) {
+
+		if (around) {
 			query.take = Math.floor(limit / 2);
-			query.where.id = LessThan(around);
-			const messages_before = await Message.find(query);
-			query.where.id = MoreThan(around);
-			const messages_after = await Message.find(query);
-			messages = messages_before.concat(messages_after);
+			const [right, left] = await Promise.all([
+				Message.find({ ...query, where: { id: LessThan(around) } }),
+				Message.find({ ...query, where: { id: MoreThan(around) } }),
+			]);
+			right.push(...left);
+			messages = right;
 		} else {
-			throw new HTTPError("after, around or before must be present", 422);
+			if (after) {
+				if (BigInt(after) > BigInt(Snowflake.generate()))
+					return res.status(422);
+				query.where.id = MoreThan(after);
+			} else if (before) {
+				if (BigInt(before) < BigInt(Snowflake.generate()))
+					return res.status(422);
+				query.where.id = LessThan(before);
+			}
+
+			messages = await Message.find(query);
 		}
 
 		const endpoint = Config.get().cdn.endpointPublic;