src/features/tickets/url-state.ts
此代码来自构建时的仓库快照。修改源码后重新构建即可更新。
import {
createParser,
parseAsInteger,
parseAsString,
parseAsStringEnum,
} from 'nuqs';
import { ticketStatuses, ticketPriorities } from '@/shared/ticket';
const boundedInteger = (min: number, max: number, fallback: number) =>
createParser({
parse(value) {
if (!/^\d+$/.test(value)) return null;
const n = parseAsInteger.parse(value);
return n !== null && n >= min && n <= max ? n : null;
},
serialize: String,
}).withDefault(fallback);
export const ticketSearchParsers = {
page: boundedInteger(1, 100000, 1),
pageSize: boundedInteger(1, 50, 10),
status: parseAsStringEnum([...ticketStatuses]),
priority: parseAsStringEnum([...ticketPriorities]),
assignment: parseAsStringEnum(['all', 'mine', 'unassigned']).withDefault(
'all',
),
q: createParser({
parse: (value) => (value.length <= 100 ? value : null),
serialize: String,
}).withDefault(''),
};
export const teamParser = parseAsString;