import React, { useState } from "react"; import axios from "axios"; import useShareFileHash from "../hooks/useShareFileHash"; import { configSrore } from "../configSrore"; import { UploadFileIcon } from "../svg"; interface IProps{ userGroupHash: string; page: number; refetch: () => void; } const UploadFile = ({ userGroupHash, page, refetch }: IProps) => { const [processCount, setProcessCount] = useState(0); // const [sizeError, setSizeError] = useState(false); const { mutate } = useShareFileHash(); const onSuccess = (fileHash: string, hash?: string) => { try { mutate({ page, fileHash, userGroupHash: hash || "", callBack: () => { refetch(); setProcessCount(0); }, }); return true; } catch { return false; } }; const onUploadClick = async (e: any) => { await configSrore.onRefresh?.(); e.preventDefault(); const file = e.target.files?.[0]; if (!file) { return; } const formData = new FormData(); formData.append("file", e.target.files[0]); axios .post( `${configSrore.podspaceUrl}usergroups/${configSrore.userGroupHash}/files`, formData, { headers: { "Content-Type": "multipart/form-data;", Authorization: `Bearer ${configSrore.userToken}`, _token_: configSrore.userToken || "", _token_issuer_: "1", }, onUploadProgress(progressEvent: any) { const process = Math.round( (progressEvent.loaded * 100) / progressEvent.total, ); setProcessCount(process); }, }, ) .then(async (res: any) => { if (res.data.result?.hash) { onSuccess(res.data.result.hash, userGroupHash); } }); }; return ( <>
{ onUploadClick(e); }} /> { processCount > 0 ? (
{processCount} % {processCount === 100 && ( آپلود موفق )}
) : null } ); }; export default UploadFile;