From 0337b857ff7b1731dc218d92142e5f76aa9bede6 Mon Sep 17 00:00:00 2001 From: Joel Date: Wed, 2 Jul 2025 14:56:57 +0800 Subject: [PATCH] feat: search --- .../(commonLayout)/apps/check-legacy/page.tsx | 40 ++++++++++++++++++- .../apps/check-legacy/use-legacy-list.ts | 40 +++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 web/app/(commonLayout)/apps/check-legacy/use-legacy-list.ts diff --git a/web/app/(commonLayout)/apps/check-legacy/page.tsx b/web/app/(commonLayout)/apps/check-legacy/page.tsx index 4f13f3bd6c..ff53261a89 100644 --- a/web/app/(commonLayout)/apps/check-legacy/page.tsx +++ b/web/app/(commonLayout)/apps/check-legacy/page.tsx @@ -1,12 +1,48 @@ 'use client' +import Sort from '@/app/components/base/sort' import Header from './components/header' -// TODO: Filter import List from './components/list' +import useLegacyList from './use-legacy-list' +import Chip from '@/app/components/base/chip' +import { RiFile3Line } from '@remixicon/react' const Page = () => { + const { + sort_by, + setOrderBy, + published, + setPublished, + clearPublished, + } = useLegacyList() return ( -
+
+ {/* Filter */} +
+ } + value={published} + onSelect={setPublished} + onClear={clearPublished} + items={[ + { value: 1, name: 'Yes' }, + { value: 0, name: 'No' }, + ]} + /> +
+ +
diff --git a/web/app/(commonLayout)/apps/check-legacy/use-legacy-list.ts b/web/app/(commonLayout)/apps/check-legacy/use-legacy-list.ts new file mode 100644 index 0000000000..dcc5e133d9 --- /dev/null +++ b/web/app/(commonLayout)/apps/check-legacy/use-legacy-list.ts @@ -0,0 +1,40 @@ +import produce from 'immer' +import { useCallback, useState } from 'react' + +const useLegacyList = () => { + const [queryParams, setQueryParams] = useState>({}) + const { + sort_by, + published, + } = queryParams + const setOrderBy = useCallback((sortBy: string) => { + const nextValue = produce(queryParams, (draft) => { + draft.sort_by = sortBy + }) + setQueryParams(nextValue) + }, [queryParams]) + + const setPublished = useCallback((value: number) => { + const nextValue = produce(queryParams, (draft) => { + draft.published = value + }) + setQueryParams(nextValue) + }, [queryParams]) + + const clearPublished = useCallback(() => { + const nextValue = produce(queryParams, (draft) => { + draft.published = undefined + }) + setQueryParams(nextValue) + }, [queryParams]) + + return { + sort_by, + setOrderBy, + published, + setPublished, + clearPublished, + } +} + +export default useLegacyList