mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-08 13:00:13 +02:00
fix list filters
This commit is contained in:
@@ -1,16 +1,21 @@
|
||||
import { parseAsInteger, useQueryState } from 'nuqs';
|
||||
import { useMemo } from 'react';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
import { parseIntParam, setSearchParam } from '/@/renderer/utils/query-params';
|
||||
|
||||
interface UseItemListScrollPersistProps {
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export const useItemListScrollPersist = ({ enabled }: UseItemListScrollPersistProps) => {
|
||||
const [scrollOffset, setScrollOffset] = useQueryState('scrollOffset', parseAsInteger);
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
|
||||
const scrollOffset = useMemo(() => parseIntParam(searchParams, 'scrollOffset'), [searchParams]);
|
||||
|
||||
const handleOnScrollEnd = (offset: number) => {
|
||||
if (!enabled) return;
|
||||
|
||||
setScrollOffset(offset);
|
||||
setSearchParams((prev) => setSearchParam(prev, 'scrollOffset', offset), { replace: true });
|
||||
};
|
||||
|
||||
return { handleOnScrollEnd, scrollOffset };
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
import { parseAsInteger, useQueryState } from 'nuqs';
|
||||
import { useMemo } from 'react';
|
||||
import { useSearchParams } from 'react-router';
|
||||
|
||||
import { parseIntParam, setSearchParam } from '/@/renderer/utils/query-params';
|
||||
|
||||
export const useItemListPagination = () => {
|
||||
const [currentPage, setCurrentPage] = useQueryState(
|
||||
'currentPage',
|
||||
parseAsInteger.withDefault(0),
|
||||
);
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
|
||||
const currentPage = useMemo(() => {
|
||||
const value = parseIntParam(searchParams, 'currentPage');
|
||||
return value ?? 0;
|
||||
}, [searchParams]);
|
||||
|
||||
const onChange = (index: number) => {
|
||||
setCurrentPage(index);
|
||||
setSearchParams((prev) => setSearchParam(prev, 'currentPage', index), { replace: true });
|
||||
};
|
||||
|
||||
return { currentPage, onChange };
|
||||
|
||||
Reference in New Issue
Block a user