fix(SPA): activity list saves pagination too
This commit is contained in:
1 parent
9d9453c1b3
commit
c41e6dbca5
5 files changed
+193
-4
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { readStoredPageSize, storePageSize } from '../pageSizeMemory'
|
||||
import { readStoredPageSize, resolvePageSize, storePageSize } from '../pageSizeMemory'
|
||||
|
||||
const KEY = 'renewcms-page-size-articles'
|
||||
const SIZES = [5, 25, 50, 100]
|
||||
@@ -53,3 +53,31 @@ describe('pageSizeMemory', () => {
|
||||
expect(() => storePageSize(KEY, 50)).not.toThrow()
|
||||
})
|
||||
})
|
||||
|
||||
describe('resolvePageSize', () => {
|
||||
beforeEach(() => {
|
||||
localStorage.clear()
|
||||
})
|
||||
|
||||
it('uses the stored size when the query has none', () => {
|
||||
localStorage.setItem(KEY, '5')
|
||||
expect(resolvePageSize(undefined, KEY, SIZES, 25)).toBe(5)
|
||||
})
|
||||
|
||||
it('falls back when nothing valid is stored', () => {
|
||||
expect(resolvePageSize(undefined, KEY, SIZES, 25)).toBe(25)
|
||||
})
|
||||
|
||||
it('lets a valid query size win over the stored one', () => {
|
||||
localStorage.setItem(KEY, '5')
|
||||
expect(resolvePageSize('100', KEY, SIZES, 25)).toBe(100)
|
||||
})
|
||||
|
||||
it.each(['10', '', 'abc', ['5']])(
|
||||
'falls back to the default for %j, ignoring storage',
|
||||
(raw) => {
|
||||
localStorage.setItem(KEY, '5')
|
||||
expect(resolvePageSize(raw, KEY, SIZES, 25)).toBe(25)
|
||||
},
|
||||
)
|
||||
})
|
||||
@@ -1,4 +1,5 @@
|
||||
export const ARTICLES_PAGE_SIZE_KEY = 'renewcms-page-size-articles'
|
||||
export const ACTIVITY_PAGE_SIZE_KEY = 'renewcms-page-size-activity'
|
||||
|
||||
export function readStoredPageSize(key: string, validSizes: number[]) {
|
||||
try {
|
||||
@@ -16,3 +17,10 @@ export function storePageSize(key: string, size: number) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
export function resolvePageSize(raw: unknown, key: string, validSizes: number[], fallback: number) {
|
||||
if (raw === undefined) {
|
||||
return readStoredPageSize(key, validSizes) ?? fallback
|
||||
}
|
||||
return validSizes.find((size) => String(size) === raw) ?? fallback
|
||||
}
|
||||
Reference in new issue
Block a user