import React, { useState, useEffect } from 'react'; import { Box, Typography, Button, Modal, TextField, } from "@mui/material"; import { DataGrid, GridColDef } from '@mui/x-data-grid'; import { Search } from '@mui/icons-material'; import './DirectorySearchModal.css'; interface DirectorySearchModalProps { dir: string; open: boolean; onClose: () => void; modalId: string; } interface FileData { id: number; filePath: string; fileName: string; fileExtension: string; createdAt: string; modifiedAt: string; accessedAt: string; size: number; } const columns: GridColDef[] = [ { field: 'id', headerName: 'ID', width: 50 }, { field: 'filePath', headerName: 'File Path', width: 250 }, { field: 'fileName', headerName: 'File Name', width: 150 }, { field: 'fileExtension', headerName: 'File Extension', width: 100 }, { field: 'createdAt', headerName: 'Created At', width: 150 }, { field: 'modifiedAt', headerName: 'Modified At', width: 150 }, { field: 'accessedAt', headerName: 'Accessed At', width: 150 }, { field: 'size', headerName: 'Size', width: 70 }, ]; const DirectorySearchModal: React.FC = ({ dir, open, onClose, modalId }) => { const [searchQuery, setSearchQuery] = useState(''); const [rows, setRows] = useState([]); const handleSearchChange = (event: React.ChangeEvent) => { setSearchQuery(event.target.value); }; useEffect(() => { const fetchFileData = async () => { window.electron.getDocuments().then((response) => { if (response.success && response.data) { const filesInDirectory = response.data.filter(doc => doc.path.startsWith(dir)); const fileData: FileData[] = filesInDirectory.map((doc, index) => ({ id: index + 1, filePath: doc.path, fileName: doc.path.split(/[/\\]/).pop() || '', fileExtension: doc.path.split('.').pop() || '', createdAt: doc.createdAt || '', modifiedAt: doc.modifiedAt || '', accessedAt: doc.accessedAt || '', size: doc.size || 0, })); setRows(fileData); } }); }; fetchFileData(); }, [dir]); const filteredRows = rows.filter((row) => { return ( row.filePath.toLowerCase().includes(searchQuery.toLowerCase()) || row.fileName.toLowerCase().includes(searchQuery.toLowerCase()) || row.fileExtension.toLowerCase().includes(searchQuery.toLowerCase()) ); }); return (
); }; export default DirectorySearchModal;