From b9432bb43f7828817a08d54e480ff329965baa18 Mon Sep 17 00:00:00 2001 From: chanx <1243304602@qq.com> Date: Wed, 8 Jul 2026 16:47:01 +0800 Subject: [PATCH] Feat: add filter in chat and search page (#16707) --- web/src/hooks/use-chat-request.ts | 7 +++++++ web/src/pages/next-chats/index.tsx | 19 +++++++++++++++++-- web/src/pages/next-searches/hooks.ts | 8 +++++++- web/src/pages/next-searches/index.tsx | 12 ++++++++++-- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/web/src/hooks/use-chat-request.ts b/web/src/hooks/use-chat-request.ts index d3c6550f2..c370e2cf9 100644 --- a/web/src/hooks/use-chat-request.ts +++ b/web/src/hooks/use-chat-request.ts @@ -1,4 +1,5 @@ import { FileUploadProps } from '@/components/file-upload'; +import { useHandleFilterSubmit } from '@/components/list-filter-bar/use-handle-filter-submit'; import message from '@/components/ui/message'; import { ChatSearchParams } from '@/constants/chat'; import { @@ -65,6 +66,7 @@ export const useFetchChatList = () => { const { searchString, handleInputChange } = useHandleSearchChange(); const { pagination, setPagination } = useGetPaginationWithRouter(); const debouncedSearchString = useDebounce(searchString, { wait: 500 }); + const { filterValue, handleFilterSubmit } = useHandleFilterSubmit(); const { data, @@ -75,6 +77,7 @@ export const useFetchChatList = () => { ChatApiAction.FetchChatList, { debouncedSearchString, + filterValue, ...pagination, }, ], @@ -88,8 +91,10 @@ export const useFetchChatList = () => { keywords: debouncedSearchString, page_size: pagination.pageSize, page: pagination.current, + owner_ids: filterValue.owner, }, data: {}, + paramsSerializer: { indexes: null }, }, true, ); @@ -113,6 +118,8 @@ export const useFetchChatList = () => { handleInputChange: onInputChange, pagination: { ...pagination, total: data?.total }, setPagination, + filterValue, + handleFilterSubmit, }; }; diff --git a/web/src/pages/next-chats/index.tsx b/web/src/pages/next-chats/index.tsx index 143d7f513..9005c638c 100644 --- a/web/src/pages/next-chats/index.tsx +++ b/web/src/pages/next-chats/index.tsx @@ -6,6 +6,7 @@ import { RenameDialog } from '@/components/rename-dialog'; import { Button } from '@/components/ui/button'; import { RAGFlowPagination } from '@/components/ui/ragflow-pagination'; import { useFetchChatList } from '@/hooks/use-chat-request'; +import { buildOwnersFilter } from '@/utils/list-filter-util'; import { pick } from 'lodash'; import { Plus } from 'lucide-react'; import { useCallback, useEffect, useMemo } from 'react'; @@ -16,9 +17,20 @@ import { useCreateChatDialog } from './hooks/use-create-chat'; import { useRenameChat } from './hooks/use-rename-chat'; export default function ChatList() { - const { data, setPagination, pagination, handleInputChange, searchString } = - useFetchChatList(); + const { + data, + setPagination, + pagination, + handleInputChange, + searchString, + filterValue, + handleFilterSubmit, + } = useFetchChatList(); const { t } = useTranslation(); + const { t: tc } = useTranslation('common'); + const owners = [ + buildOwnersFilter(data?.chats ?? [], undefined, tc('owner')), + ]; const { initialChatName, chatRenameVisible, @@ -102,6 +114,9 @@ export default function ChatList() { icon="chats" onSearchChange={handleInputChange} searchString={searchString} + filters={owners} + value={filterValue} + onChange={handleFilterSubmit} >