bubble up search errors to ui
This commit is contained in:
parent
8a14c69e54
commit
f3aff1f090
2 changed files with 29 additions and 2 deletions
|
|
@ -127,6 +127,12 @@ export const useGetSearchQuery = (
|
|||
},
|
||||
body: JSON.stringify(searchPayload),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json().catch(() => ({ error: "Unknown error" }));
|
||||
throw new Error(errorData.error || `Search failed with status ${response.status}`);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
// Group chunks by filename to create file results similar to page.tsx
|
||||
const fileMap = new Map<
|
||||
|
|
@ -198,7 +204,8 @@ export const useGetSearchQuery = (
|
|||
return files;
|
||||
} catch (error) {
|
||||
console.error("Error getting files", error);
|
||||
return [];
|
||||
// Re-throw the error so React Query can handle it and trigger onError callbacks
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -207,6 +214,7 @@ export const useGetSearchQuery = (
|
|||
queryKey: ["search", queryData, query],
|
||||
placeholderData: (prev) => prev,
|
||||
queryFn: getFiles,
|
||||
retry: false, // Don't retry on errors - show them immediately
|
||||
...options,
|
||||
},
|
||||
queryClient,
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ function SearchPage() {
|
|||
const { parsedFilterData, queryOverride } = useKnowledgeFilter();
|
||||
const [selectedRows, setSelectedRows] = useState<File[]>([]);
|
||||
const [showBulkDeleteDialog, setShowBulkDeleteDialog] = useState(false);
|
||||
const lastErrorRef = useRef<string | null>(null);
|
||||
|
||||
const deleteDocumentMutation = useDeleteDocument();
|
||||
|
||||
|
|
@ -82,10 +83,28 @@ function SearchPage() {
|
|||
refreshTasks();
|
||||
}, [refreshTasks]);
|
||||
|
||||
const { data: searchData = [], isFetching } = useGetSearchQuery(
|
||||
const { data: searchData = [], isFetching, error, isError } = useGetSearchQuery(
|
||||
queryOverride,
|
||||
parsedFilterData,
|
||||
);
|
||||
|
||||
// Show toast notification for search errors
|
||||
useEffect(() => {
|
||||
if (isError && error) {
|
||||
const errorMessage = error instanceof Error ? error.message : "Search failed";
|
||||
// Avoid showing duplicate toasts for the same error
|
||||
if (lastErrorRef.current !== errorMessage) {
|
||||
lastErrorRef.current = errorMessage;
|
||||
toast.error("Search error", {
|
||||
description: errorMessage,
|
||||
duration: 5000,
|
||||
});
|
||||
}
|
||||
} else if (!isError) {
|
||||
// Reset when query succeeds
|
||||
lastErrorRef.current = null;
|
||||
}
|
||||
}, [isError, error]);
|
||||
// Convert TaskFiles to File format and merge with backend results
|
||||
const taskFilesAsFiles: File[] = taskFiles.map((taskFile) => {
|
||||
return {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue