import { useQuery, useQueryClient } from "@tanstack/react-query"; import { listFilesOptions } from "~/client/api-client/@tanstack/react-query.gen"; import { FileBrowser, type FileBrowserUiProps } from "~/client/components/file-browsers/file-browser"; import { useFileBrowser, type FetchFolderResult } from "~/client/hooks/use-file-browser"; import { parseError } from "~/client/lib/errors"; type VolumeFileBrowserProps = FileBrowserUiProps & { volumeId: string; enabled?: boolean; }; export const VolumeFileBrowser = ({ volumeId, enabled = true, ...uiProps }: VolumeFileBrowserProps) => { const queryClient = useQueryClient(); const { data, isLoading, error } = useQuery({ ...listFilesOptions({ path: { shortId: volumeId } }), enabled, }); const fileBrowser = useFileBrowser({ initialData: data, isLoading, fetchFolder: async (path, offset): Promise => { return await queryClient.ensureQueryData( listFilesOptions({ path: { shortId: volumeId }, query: { path, offset: offset?.toString() }, }), ); }, prefetchFolder: (path) => { void queryClient.prefetchQuery( listFilesOptions({ path: { shortId: volumeId }, query: { path }, }), ); }, }); const errorDetails = parseError(error)?.message; const errorMessage = errorDetails ? `Failed to load files: ${errorDetails}` : error ? "Failed to load files" : undefined; return ( ); };