Refine browse artist pagination normalization

This commit is contained in:
Jordan Wages 2025-09-24 01:14:22 -05:00
commit c5d4021e18

View file

@ -1122,18 +1122,17 @@
pageSize: defaultPageSize, pageSize: defaultPageSize,
}; };
function normalizePaginationState() { function getNormalizedPagination() {
let pageSize = Number(state.pageSize); let pageSize = Number(state.pageSize);
if (!Number.isFinite(pageSize) || pageSize <= 0) pageSize = defaultPageSize; if (!Number.isFinite(pageSize) || pageSize <= 0) pageSize = defaultPageSize;
else pageSize = Math.max(1, Math.floor(pageSize)); else pageSize = Math.max(1, Math.floor(pageSize));
if (state.pageSize !== pageSize) state.pageSize = pageSize;
let page = Number(state.page); let page = Number(state.page);
if (!Number.isFinite(page) || page <= 0) page = 1; if (!Number.isFinite(page) || page <= 0) page = 1;
else page = Math.max(1, Math.floor(page)); else page = Math.max(1, Math.floor(page));
if (state.pageSize !== pageSize) state.pageSize = pageSize;
if (state.page !== page) state.page = page; if (state.page !== page) state.page = page;
const offset = Math.max(0, (page - 1) * pageSize);
return { page, pageSize }; return { page, pageSize, offset };
} }
function escapeLike(str) { function escapeLike(str) {
@ -1210,8 +1209,7 @@
const useUnfilteredQuery = !typedFilter && !state.prefix; const useUnfilteredQuery = !typedFilter && !state.prefix;
listState.showLoading('Loading…'); listState.showLoading('Loading…');
let { page, pageSize } = normalizePaginationState(); let { page, pageSize, offset } = getNormalizedPagination();
let offset = (page - 1) * pageSize;
let total = 0; let total = 0;
const rows = []; const rows = [];
let usedFts = false; let usedFts = false;
@ -1225,8 +1223,7 @@
if (total > 0) { if (total > 0) {
if (offset >= total) { if (offset >= total) {
state.page = Math.max(1, Math.ceil(total / pageSize)); state.page = Math.max(1, Math.ceil(total / pageSize));
({ page, pageSize } = normalizePaginationState()); ({ page, pageSize, offset } = getNormalizedPagination());
offset = (page - 1) * pageSize;
} }
const ftsRowsStmt = db.prepare(applyFtsMatch(ftsRowsSql, ftsMatch)); const ftsRowsStmt = db.prepare(applyFtsMatch(ftsRowsSql, ftsMatch));
ftsRowsStmt.bind([pageSize, offset]); ftsRowsStmt.bind([pageSize, offset]);
@ -1250,8 +1247,7 @@
if (offset >= total) { if (offset >= total) {
state.page = Math.max(1, Math.ceil(total / pageSize)); state.page = Math.max(1, Math.ceil(total / pageSize));
({ page, pageSize } = normalizePaginationState()); ({ page, pageSize, offset } = getNormalizedPagination());
offset = (page - 1) * pageSize;
} }
const rowsStmt = db.prepare(useUnfilteredQuery ? baseRowsSql : rowsSql); const rowsStmt = db.prepare(useUnfilteredQuery ? baseRowsSql : rowsSql);
@ -1272,7 +1268,7 @@
return; return;
} }
({ page, pageSize } = normalizePaginationState()); ({ page, pageSize } = getNormalizedPagination());
listState.showRows({ listState.showRows({
rows, rows,
total, total,