Files
sub2api/frontend/src/composables/usePersistedPageSize.ts

50 lines
1.6 KiB
TypeScript
Raw Normal View History

import { getConfiguredTableDefaultPageSize, normalizeTablePageSize } from '@/utils/tablePreferences'
const STORAGE_KEY = 'table-page-size'
const SOURCE_KEY = 'table-page-size-source'
/**
* localStorage / pageSize
* key
*/
export function getPersistedPageSize(fallback = getConfiguredTableDefaultPageSize()): number {
try {
const stored = localStorage.getItem(STORAGE_KEY)
if (stored) {
return normalizeTablePageSize(stored)
}
} catch {
// localStorage 不可用(隐私模式等)
}
return normalizeTablePageSize(fallback)
}
export function setPersistedPageSize(size: number): void {
try {
localStorage.setItem(STORAGE_KEY, String(normalizeTablePageSize(size)))
localStorage.setItem(SOURCE_KEY, 'user')
} catch {
// 静默失败
}
}
export function syncPersistedPageSizeWithSystemDefault(defaultSize = getConfiguredTableDefaultPageSize()): void {
try {
const normalizedDefault = normalizeTablePageSize(defaultSize)
const stored = localStorage.getItem(STORAGE_KEY)
const source = localStorage.getItem(SOURCE_KEY)
const normalizedStored = stored ? normalizeTablePageSize(stored) : null
if ((source === 'user' || (source === null && stored !== null)) && stored) {
localStorage.setItem(STORAGE_KEY, String(normalizedStored ?? normalizedDefault))
localStorage.setItem(SOURCE_KEY, 'user')
return
}
localStorage.setItem(STORAGE_KEY, String(normalizedDefault))
localStorage.setItem(SOURCE_KEY, 'system')
} catch {
// 静默失败
}
}