summary refs log tree commit diff
path: root/src/api/routes/channels/#channel_id/messages/index.ts
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-09-22 15:39:15 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-09-22 15:46:35 +1000
commit3c4691499249e184f4e418ae798379f98d5f4cff (patch)
tree952a1f634bd860aec68064151580aed0cbbfb78f /src/api/routes/channels/#channel_id/messages/index.ts
parenta ton of broken shit and approx 1 nice function (diff)
parentMerge branch 'master' of github.com:spacebarchat/server (diff)
downloadserver-feat/federation.tar.xz
Merge branch 'master' into feat/federation feat/federation
Diffstat (limited to 'src/api/routes/channels/#channel_id/messages/index.ts')
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts

index c384a05b..a5bfcfd7 100644 --- a/src/api/routes/channels/#channel_id/messages/index.ts +++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -40,7 +40,13 @@ import { import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; import multer from "multer"; -import { FindManyOptions, FindOperator, LessThan, MoreThan } from "typeorm"; +import { + FindManyOptions, + FindOperator, + LessThan, + MoreThan, + MoreThanOrEqual, +} from "typeorm"; import { URL } from "url"; const router: Router = Router(); @@ -122,12 +128,24 @@ router.get( if (around) { query.take = Math.floor(limit / 2); - 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; + if (query.take != 0) { + const [right, left] = await Promise.all([ + Message.find({ ...query, where: { id: LessThan(around) } }), + Message.find({ + ...query, + where: { id: MoreThanOrEqual(around) }, + }), + ]); + left.push(...right); + messages = left; + } else { + query.take = 1; + const message = await Message.findOne({ + ...query, + where: { id: around }, + }); + messages = message ? [message] : []; + } } else { if (after) { if (BigInt(after) > BigInt(Snowflake.generate()))