From c0eac56355a0c40ac4d9c0bae82917506e011dc3 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Sun, 23 Jul 2023 14:13:46 -0700 Subject: [PATCH] fix: :bug: antenna notes pagination repeat --- .../src/server/api/endpoints/antennas/notes.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 6ca71c08e2..4d3bdfb274 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -60,13 +60,14 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchAntenna); } + const limit = ps.limit + (ps.untilId ? 1 : 0) + (ps.sinceId ? 1 : 0); // untilIdに指定したものも含まれるため+1 const noteIdsRes = await redisClient.xrevrange( `antennaTimeline:${antenna.id}`, - ps.untilDate || "+", - "-", + ps.untilDate ?? "+", + ps.sinceDate ?? "-", "COUNT", - ps.limit + 1, - ); // untilIdに指定したものも含まれるため+1 + limit, + ); if (noteIdsRes.length === 0) { return []; @@ -74,7 +75,7 @@ export default define(meta, paramDef, async (ps, user) => { const noteIds = noteIdsRes .map((x) => x[1][1]) - .filter((x) => x !== ps.untilId); + .filter((x) => x !== ps.untilId && x !== ps.sinceId); if (noteIds.length === 0) { return []; @@ -105,7 +106,8 @@ export default define(meta, paramDef, async (ps, user) => { generateMutedUserQuery(query, user); generateBlockedUserQuery(query, user); - const notes = await query.take(ps.limit).getMany(); + const notes = await query.getMany(); + notes.sort((a, b) => (a.id > b.id ? -1 : 1)); if (notes.length > 0) { readNote(user.id, notes);