import { useRef, useState } from 'react'; import { FiUpload } from 'react-icons/fi' import { resetDocuments, uploadDocuments } from '../../store/slices/documentSlice'; import { useDispatch, useSelector } from 'react-redux'; import { toast } from 'react-toastify'; import { useNavigate } from 'react-router-dom'; import { RootState } from '../../store/store'; import api from '../../config/api'; const StartNow = () => { const fileInputRef = useRef(null); const [files, setFiles] = useState([]); const userData = useSelector((state: RootState) => state.user); const dispatch = useDispatch(); const navigate = useNavigate(); const handleUpload = async (filesToUpload: File[]) => { const accountId = userData.account?.id; const transactionRes = await api.post(`/api/accounts/${userData.account?.id}/transactions`); const transactionId = transactionRes.data.id const formData = new FormData(); formData.append("file", filesToUpload[0]); dispatch(uploadDocuments({ formData, accountId, transactionId })) .unwrap() .then((res) => { // toast.dismiss(); setFiles([]); navigate(`/process-step-one/${accountId}/${transactionId}`); }) .catch((err) => { console.error("Upload failed", err); }); }; const handleFileChange = async (e: React.ChangeEvent) => { await dispatch(resetDocuments()) const selectedFiles = e.target.files ? Array.from(e.target.files) : []; if (selectedFiles.length > 0) { setFiles((prev) => [...prev, ...selectedFiles]); handleUpload(selectedFiles); } }; return ( <>
fileInputRef.current?.click()} id='start-now-upload-con' className="group col-span-1 cursor-pointer border-2 border-dashed border-slate-300 rounded-lg bg-[var(--documentUploadBg)] transition-all duration-200 p-4 flex flex-col items-center justify-center gap-2 text-center shadow-sm hover:shadow-md"> {/* Upload icon with subtle animation */}
{/* Compact text */}

Click to upload or drag and drop

PDF, JPG, PNG (max. 10MB)

) } export default StartNow