import React, { useEffect, useRef, useState } from 'react' import LoadingSpinner from '../Spinners/LoadingSpinner' import axios from 'axios' import usersService from '../../services/UsersService' export default function AttachFile({data='', fontSize='text-sm', showOnData=false}) { const apiCall = new usersService() let [uploadedList, setUploadedList] = useState({loading: true, data:{}}) let [reloadList, setReloadList] = useState(false) // Triggers list of upload reload const [requestStatus, setRequestStatus] = useState({loading: false, status:false, message:''}) const inputFile = useRef() const upload = (event) => { let inputs = { file: event.target.files[0], job_uid: data?.job_uid, uid: localStorage.getItem("uid"), // member_id: localStorage.getItem("member_id"), sessionid: localStorage.getItem("session_token"), }; setRequestStatus({loading: true, status:false, message:''}) if(!inputs.file){ setRequestStatus({loading: false, status:false, message:'Please select a file'}) setTimeout(()=>{ setRequestStatus({loading: false, status:false, message:''}) }, 3000) return } const formData = new FormData() for (let input in inputs) { formData.append(input, inputs[input]); } axios.post(`${process.env.REACT_APP_MEDIA_LINK}/upload/task`,formData).then(res => { if(res.data.internal_return < 0){ inputFile.current.value = null setRequestStatus({loading: false, status:false, message:'upload failed'}) setTimeout(()=>{ setRequestStatus({loading: false, status:false, message:''}) }, 3000) return } setRequestStatus({loading: false, status:true, message:'uploaded'}) inputFile.current.value = null setReloadList(prev => !prev) // Triggers list of upload reload setTimeout(()=>{ setRequestStatus({loading: false, status:false, message:''}) }, 3000) }).catch(err => { inputFile.current.value = null setRequestStatus({loading: false, status:false, message:'upload failed'}) setTimeout(()=>{ setRequestStatus({loading: false, status:false, message:''}) }, 3000) return }) } useEffect(()=>{ apiCall.jobManagerFiles({job_uid:data?.job_uid || data?.origin_job_uid}).then(res => { setUploadedList({loading: false, data:res.data}) }).catch(err => { console.log(err) setUploadedList({loading: false, data:{}}) }) },[data, reloadList]) return ( <> {!showOnData ?
No Uploaded files yet
: <>> }