diff --git a/frontend/components/knowledge-actions-dropdown.tsx b/frontend/components/knowledge-actions-dropdown.tsx index a7cf1337..eddc8a1f 100644 --- a/frontend/components/knowledge-actions-dropdown.tsx +++ b/frontend/components/knowledge-actions-dropdown.tsx @@ -12,6 +12,7 @@ import { Button } from "./ui/button"; import { DeleteConfirmationDialog } from "./confirmation-dialog"; import { useDeleteDocument } from "@/app/api/mutations/useDeleteDocument"; import { toast } from "sonner"; +import { useRouter } from "next/navigation"; interface KnowledgeActionsDropdownProps { filename: string; @@ -22,6 +23,7 @@ export const KnowledgeActionsDropdown = ({ }: KnowledgeActionsDropdownProps) => { const [showDeleteDialog, setShowDeleteDialog] = useState(false); const deleteDocumentMutation = useDeleteDocument(); + const router = useRouter(); const handleDelete = async () => { try { @@ -43,7 +45,17 @@ export const KnowledgeActionsDropdown = ({ - + + { + router.push( + `/knowledge/chunks?filename=${encodeURIComponent(filename)}` + ); + }} + > + View chunks + {/* //TODO: Implement rename and sync */} {/* @@ -152,7 +152,9 @@ export function KnowledgeFilterList({ >
- +
+ +
{filter.name}
@@ -172,8 +174,8 @@ export function KnowledgeFilterList({
{(() => { - const dataSources = - parseQueryData(filter.query_data).filters.data_sources; + const dataSources = parseQueryData(filter.query_data) + .filters.data_sources; if (dataSources[0] === "*") return "All sources"; const count = dataSources.length; return `${count} ${count === 1 ? "source" : "sources"}`; @@ -181,6 +183,19 @@ export function KnowledgeFilterList({
+ {selectedFilter?.id === filter.id && ( + + )} )) )} @@ -189,7 +204,7 @@ export function KnowledgeFilterList({ - Create New Knowledge Filter + Create a new knowledge filter Save a reusable filter to quickly scope searches across your knowledge base. diff --git a/frontend/src/app/api/mutations/useCreateFilter.ts b/frontend/src/app/api/mutations/useCreateFilter.ts index 883fda12..6cfd11e0 100644 --- a/frontend/src/app/api/mutations/useCreateFilter.ts +++ b/frontend/src/app/api/mutations/useCreateFilter.ts @@ -44,7 +44,7 @@ export const useCreateFilter = () => { return useMutation({ mutationFn: createFilter, onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ["knowledge-filters"], exact: false }); + queryClient.invalidateQueries({ queryKey: ["knowledge-filters"]}); }, }); }; diff --git a/frontend/src/app/api/mutations/useDeleteFilter.ts b/frontend/src/app/api/mutations/useDeleteFilter.ts index 54da5ee1..2e19ba40 100644 --- a/frontend/src/app/api/mutations/useDeleteFilter.ts +++ b/frontend/src/app/api/mutations/useDeleteFilter.ts @@ -33,7 +33,7 @@ export const useDeleteFilter = () => { mutationFn: deleteFilter, onSuccess: () => { // Invalidate filters queries so UI refreshes automatically - queryClient.invalidateQueries({ queryKey: ["knowledge-filters"], exact: false }); + queryClient.invalidateQueries({ queryKey: ["knowledge-filters"] }); }, }); }; diff --git a/frontend/src/app/api/mutations/useUpdateFilter.ts b/frontend/src/app/api/mutations/useUpdateFilter.ts index b611e658..3e6392ca 100644 --- a/frontend/src/app/api/mutations/useUpdateFilter.ts +++ b/frontend/src/app/api/mutations/useUpdateFilter.ts @@ -46,7 +46,7 @@ export const useUpdateFilter = () => { mutationFn: updateFilter, onSuccess: () => { // Refresh any knowledge filter lists/searches - queryClient.invalidateQueries({ queryKey: ["knowledge-filters"], exact: false }); + queryClient.invalidateQueries({ queryKey: ["knowledge-filters"] }); }, }); }; diff --git a/frontend/src/app/knowledge/page.tsx b/frontend/src/app/knowledge/page.tsx index cbbcd758..ee116a71 100644 --- a/frontend/src/app/knowledge/page.tsx +++ b/frontend/src/app/knowledge/page.tsx @@ -3,14 +3,13 @@ import { Building2, Cloud, - Filter, HardDrive, Search, Trash2, X, } from "lucide-react"; import { AgGridReact, CustomCellRendererProps } from "ag-grid-react"; -import { useCallback, useEffect, useState, useRef, ChangeEvent } from "react"; +import { useCallback, useState, useRef, ChangeEvent } from "react"; import { useRouter } from "next/navigation"; import { SiGoogledrive } from "react-icons/si"; import { TbBrandOnedrive } from "react-icons/tb"; @@ -60,11 +59,10 @@ function SearchPage() { const deleteDocumentMutation = useDeleteDocument(); - const { - data = [], - isFetching, - refetch: refetchSearch, - } = useGetSearchQuery(parsedFilterData?.query || "", parsedFilterData); + const { data = [], isFetching } = useGetSearchQuery( + parsedFilterData?.query || "*", + parsedFilterData + ); const handleTableSearch = (e: ChangeEvent) => { gridRef.current?.api.setGridOption("quickFilterText", e.target.value); @@ -200,10 +198,6 @@ function SearchPage() { } }; - useEffect(() => { - refetchSearch(); - }, [selectedFilter, refetchSearch]); - return (
{selectedFilter?.name && ( -
- +
{selectedFilter?.name}