import React, { useRef, useState } from 'react' import { Modal } from "bootstrap"; import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'; import queryKeys from '../../../services/queryKeys'; import {getMediaFileList, getTemplateConfig, uploadFile} from '../../../services/services'; export default function UploadModal() { const [selectedFiles, setSelectedFiles] = useState([]) const handleSelectedFiles = (file_uid) => { if(selectedFiles.length && selectedFiles.includes(file_uid)){ let indexOfItem = selectedFiles.indexOf(file_uid) let oldFiles = [...selectedFiles] oldFiles.splice(indexOfItem, 1) setSelectedFiles(oldFiles) }else{ setSelectedFiles(prev => [...prev, file_uid]) } } const modalRef = useRef(null) const dismissModal = () => { const body = document.querySelector('body') body.removeAttribute('style') // body.classList.toggle('modal-open') const modalBackdrop = document.querySelectorAll('.modal-backdrop') modalBackdrop.forEach(item => { if (item) { item.remove(); } }) const modal = Modal.getInstance(modalRef.current); modal && modal.hide(); }; const uploadFileMutation = useMutation({ mutationFn: (fields) => { if(!fields.file){ throw({message: 'Please select a file first!'}) } // return uploadFile(fields) // remember to close the modal dismissModal() setTimeout(()=>{ uploadFileMutation.reset() }, 3000) }, onSuccess: (res) => { // console.log('res', res.data) // if(res.data.resultCode != '0' || !res?.data?.pending_uid){ // throw({message: res?.data?.resultDescription}) // } // setSelectedFile({id: '', img: ''}) // queryClient.refetchQueries({ // queryKey: [...queryKeys.my_files], // type: 'active', // exact: true, // }) }, onSettled: () => { setTimeout(()=>{ uploadFileMutation.reset() }, 3000) } }) const handleUpload = () => { let reqData = { token: localStorage.getItem("token"), // USER TOKEN member_uid: localStorage.getItem("uid"), // USER UID // file: selectedFile?.img }; uploadFileMutation.mutate(reqData) } const {data, isFetching, isError, error} = useQuery({ queryKey: queryKeys.my_files, queryFn: () => { let reqData = { token: localStorage.getItem('token'), // USER TOKEN uid: localStorage.getItem('uid') // USER UID } return getMediaFileList(reqData) } }) const mediaFileList = data?.data // console.log('mediaFileList', mediaFileList) //file_list return ( <> {/* Vertical Center Modal */}