From a31257c44147a64e22f898cecf8dec000e9e800d Mon Sep 17 00:00:00 2001 From: alikia2x Date: Sun, 30 Nov 2025 01:51:12 +0800 Subject: [PATCH] fix: backend not responding offset --- packages/backend/routes/song/milestone.ts | 14 ++++++++------ .../temp_frontend/app/routes/home/Milestone.tsx | 6 +++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/backend/routes/song/milestone.ts b/packages/backend/routes/song/milestone.ts index 2657d9d..60afa6f 100644 --- a/packages/backend/routes/song/milestone.ts +++ b/packages/backend/routes/song/milestone.ts @@ -15,20 +15,20 @@ const range = { export const closeMileStoneHandler = new Elysia({ prefix: "/songs" }).use(serverTiming()).get( "/close-milestone/:type", - async ({ params }) => { + async ({ params, query }) => { const type = params.type; - const offset = params.offset; - const limit = params.limit; + const offset = query.offset; + const limit = query.limit; const min = range[type as MileStoneType][0]; const max = range[type as MileStoneType][1]; - const query = db + const q = db .select() .from(eta) .innerJoin(bilibiliMetadata, eq(bilibiliMetadata.aid, eta.aid)) .where(and(gte(eta.currentViews, min), lt(eta.currentViews, max))) .orderBy(eta.eta) .$dynamic(); - return query.limit(limit || 20).offset(offset || 0); + return q.limit(limit || 20).offset(offset || 0); }, { response: { @@ -49,7 +49,9 @@ export const closeMileStoneHandler = new Elysia({ prefix: "/songs" }).use(server }) }, params: t.Object({ - type: t.String({ enum: ["dendou", "densetsu", "shinwa"] }), + type: t.String({ enum: ["dendou", "densetsu", "shinwa"] }) + }), + query: t.Object({ offset: t.Optional(t.Number()), limit: t.Optional(t.Number()) }), diff --git a/packages/temp_frontend/app/routes/home/Milestone.tsx b/packages/temp_frontend/app/routes/home/Milestone.tsx index c7e1910..04585cd 100644 --- a/packages/temp_frontend/app/routes/home/Milestone.tsx +++ b/packages/temp_frontend/app/routes/home/Milestone.tsx @@ -90,7 +90,7 @@ export const MilestoneVideos: React.FC = () => { const target = e.currentTarget; const { scrollHeight, scrollTop, clientHeight } = target; - if (scrollTop + clientHeight >= scrollHeight - 400 && !isLoadingMore && hasMore) { + if (scrollTop + clientHeight >= scrollHeight - 500 && !isLoadingMore && hasMore) { setOffset((prev) => prev + 20); } }, @@ -146,8 +146,8 @@ export const MilestoneVideos: React.FC = () => { /> ))} {isLoadingMore && ( -
- +
+
)}