import { __ } from "@wordpress/i18n"; import React, { useEffect, useState } from "react"; import { withLabel, validFieldProps } from "quickbuilder"; const SettingsUploader = (props) => { const validProps = validFieldProps(props, [ "is_pro", "visible", "trigger", "disable", "parentIndex", "context", "copyOnClick", ]); const [uploadedFile, setUploadedFile] = useState(null); const handleChange = (e) => { if (!e.target.files.length) { return; } const file = e.target.files[0]; if(file?.size == 0){ props.context.alerts.toast('error', __('File can\'t be empty.', 'betterdocs')); return; } else if(file?.type != 'application/json' && file?.type != 'text/json'){ props.context.alerts.toast('error', __('Invalid file type.', 'betterdocs')); return; } setUploadedFile(file); let reader = new FileReader(); const self = this; reader.onload = (event) => { const json = event?.target?.result; props.onChange({ target: { type: 'jsonuploader', name: props.name, value: json, } }); }; reader.readAsText(file); }; const removeFile = () => { setUploadedFile(null); props.onChange({ target: { type: 'jsonuploader', name: props.name, value: null, } }); } useEffect(() => { if(!props?.value){ setUploadedFile(null); } }, [props?.value]) return (