From 1aa0fc60163fb8cb42a1b3a6b81cdb1c42e6ba24 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Sat, 3 Jun 2023 17:20:04 +0100 Subject: [PATCH] file upload implementation --- src/components/MyActiveJobs/ActiveJobs.jsx | 41 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/components/MyActiveJobs/ActiveJobs.jsx b/src/components/MyActiveJobs/ActiveJobs.jsx index 084538b..12d270d 100644 --- a/src/components/MyActiveJobs/ActiveJobs.jsx +++ b/src/components/MyActiveJobs/ActiveJobs.jsx @@ -95,7 +95,7 @@ function ActiveJobs(props) { } // FUNCTION TO SEND FILES - const sendFile = () => { + const sendFile = async () => { setRequestStatus({loading: true, status: false, message: ''}) if(!filesToSend.length){ // checks if file to send is empty @@ -109,12 +109,28 @@ function ActiveJobs(props) { // for(let files of filesToSend){ // reqData.append(files.name, files) // } - let reqData={file_size: filesToSend[0].size, file_type: 'image/png', file_data: filesToSend[0], msg_type: 'FILE', contract:props.details.contract} + // let reqData={file_size: filesToSend[0].size, file_type: 'image/png', file_data: filesToSend[0], msg_type: 'FILE', contract:props.details.contract} // for(let files of filesToSend){ // reqData[files.name] = files // } - + + const fileToBase64 = async () =>{ + try { + const base64String = await convertFileToBase64(filesToSend[0]); + return base64String; + } catch (error) { + return false; + } + } + + if(await !fileToBase64()){ + return + } + + let reqData={file_name: filesToSend[0].name, file_size: filesToSend[0].size, file_type: 'image/png', file_data: await fileToBase64(), msg_type: 'FILE', contract:props.details.contract} + + console.log(reqData) ApiCall.sendFiles(reqData).then((res)=>{ if(res.status != 200 || res.data.internal_return < 0){ setRequestStatus({loading: false, status: false, message: 'Files(s) could not be sent, try again later'}) @@ -367,3 +383,22 @@ function ActiveJobs(props) { } export default ActiveJobs; + + +function convertFileToBase64(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + + reader.onload = () => { + const base64String = reader.result.split(',')[1]; + resolve(base64String); + }; + + reader.onerror = error => { + reject(error); + }; + + reader.readAsDataURL(file); + }); +} +