# Implementation Plan: Directory Status Check for Import.tsx ## Overview Add functionality to `Import.tsx` that checks if the required directories (`comics` and `userdata`) exist before allowing the import process to start. If either directory is missing, display a warning banner to the user and disable the import functionality. ## API Endpoint - **Endpoint**: `GET /api/library/getDirectoryStatus` - **Response Structure**: ```typescript interface DirectoryStatus { comics: { exists: boolean }; userdata: { exists: boolean }; } ``` ## Implementation Details ### 1. Add Directory Status Type In [`Import.tsx`](src/client/components/Import/Import.tsx:1), add a type definition for the directory status response: ```typescript interface DirectoryStatus { comics: { exists: boolean }; userdata: { exists: boolean }; } ``` ### 2. Create useQuery Hook for Directory Status Use `@tanstack/react-query` (already imported) to fetch directory status on component mount: ```typescript const { data: directoryStatus, isLoading: isCheckingDirectories, error: directoryError } = useQuery({ queryKey: ['directoryStatus'], queryFn: async (): Promise => { const response = await axios.get('http://localhost:3000/api/library/getDirectoryStatus'); return response.data; }, refetchOnWindowFocus: false, staleTime: 30000, // Cache for 30 seconds }); ``` ### 3. Derive Missing Directories State Compute which directories are missing from the query result: ```typescript const missingDirectories = useMemo(() => { if (!directoryStatus) return []; const missing: string[] = []; if (!directoryStatus.comics?.exists) missing.push('comics'); if (!directoryStatus.userdata?.exists) missing.push('userdata'); return missing; }, [directoryStatus]); const hasAllDirectories = missingDirectories.length === 0; ``` ### 4. Create Warning Banner Component Add a warning banner that displays when directories are missing, positioned above the import button. This uses the same styling patterns as the existing error banner: ```tsx {/* Directory Status Warning */} {!isCheckingDirectories && missingDirectories.length > 0 && (

Required Directories Missing

The following directories do not exist and must be created before importing:

    {missingDirectories.map((dir) => (
  • {dir}
  • ))}

Please ensure these directories are mounted correctly in your Docker configuration.

)} ``` ### 5. Disable Import Button When Directories Missing Modify the button's `disabled` prop and click handler: ```tsx