Solve - NPWP
This commit is contained in:
parent
a2bbd88df7
commit
5a23d77b23
@ -568,7 +568,7 @@ const Verify = () => {
|
|||||||
<p>Or</p>
|
<p>Or</p>
|
||||||
<a href="#" onClick={() => fileInputRef.current.click()} style={styles.browseLink}>Browse</a>
|
<a href="#" onClick={() => fileInputRef.current.click()} style={styles.browseLink}>Browse</a>
|
||||||
<p className="text-muted" style={styles.uploadText}>Recommended size: 320x200 (Max File Size: 2MB)</p>
|
<p className="text-muted" style={styles.uploadText}>Recommended size: 320x200 (Max File Size: 2MB)</p>
|
||||||
<p className="text-muted" style={styles.uploadText}>Supported file types: JPG, JPEG, PNG</p>
|
<p className="text-muted" style={styles.uploadText}>Supported file types: JPG, JPEG</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* File Input */}
|
{/* File Input */}
|
||||||
|
@ -12,7 +12,7 @@ const CustomLabel = ({ overRide, children, ...props }) => {
|
|||||||
const Verify = () => {
|
const Verify = () => {
|
||||||
const BASE_URL = process.env.REACT_APP_BASE_URL;
|
const BASE_URL = process.env.REACT_APP_BASE_URL;
|
||||||
const API_KEY = process.env.REACT_APP_API_KEY;
|
const API_KEY = process.env.REACT_APP_API_KEY;
|
||||||
const fileTypes = ["image/jpeg", "image/png"];
|
const fileTypes = ["image/jpeg", "image/jpg"];
|
||||||
const fileInputRef = useRef(null);
|
const fileInputRef = useRef(null);
|
||||||
|
|
||||||
const [isMobile, setIsMobile] = useState(false);
|
const [isMobile, setIsMobile] = useState(false);
|
||||||
@ -112,10 +112,10 @@ const Verify = () => {
|
|||||||
|
|
||||||
// Handle file upload
|
// Handle file upload
|
||||||
const handleFileDrop = (files) => {
|
const handleFileDrop = (files) => {
|
||||||
if (files && files[0]) {
|
if (files?.[0]) {
|
||||||
handleImageUpload(files[0]);
|
handleImageUpload(files[0]);
|
||||||
} else {
|
} else {
|
||||||
console.error('No valid files dropped');
|
setImageError('No valid files dropped');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -124,15 +124,6 @@ const Verify = () => {
|
|||||||
const img = new Image();
|
const img = new Image();
|
||||||
img.src = URL.createObjectURL(file);
|
img.src = URL.createObjectURL(file);
|
||||||
|
|
||||||
// img.onload = () => {
|
|
||||||
// URL.revokeObjectURL(img.src);
|
|
||||||
// if (img.width > 320 || img.height > 200) {
|
|
||||||
// reject('Image dimensions must not exceed 320x200 pixels');
|
|
||||||
// } else {
|
|
||||||
// resolve(true);
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
|
|
||||||
img.onerror = () => {
|
img.onerror = () => {
|
||||||
URL.revokeObjectURL(img.src);
|
URL.revokeObjectURL(img.src);
|
||||||
reject('Failed to load image');
|
reject('Failed to load image');
|
||||||
@ -141,29 +132,34 @@ const Verify = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleImageUpload = async (file) => {
|
const handleImageUpload = async (file) => {
|
||||||
|
// Clear previous states
|
||||||
setErrorMessage('');
|
setErrorMessage('');
|
||||||
setFile(file);
|
setImageError('');
|
||||||
setSelectedImageName(file.name);
|
|
||||||
|
// Check if file exists
|
||||||
|
if (!file) {
|
||||||
|
setImageError(<span className="text-danger small">Please select a file</span>);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Set file states only after confirming file exists
|
||||||
|
setFile(file);
|
||||||
|
setSelectedImageName(file.name);
|
||||||
|
|
||||||
// Check if file is PNG
|
// Check if file is PNG
|
||||||
if (file.type === 'image/png') {
|
if (file.type === 'image/png') {
|
||||||
setImageError('The image format is not suitable. Only JPG and JPEG files are allowed.');
|
throw new Error('The image format is not suitable. Only JPG and JPEG files are allowed.');
|
||||||
setFile(null);
|
|
||||||
setSelectedImageName('');
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate file type
|
// Validate file type
|
||||||
if (!fileTypes.includes(file.type)) {
|
if (!fileTypes.includes(file.type)) {
|
||||||
setImageError('Invalid file type. Only JPG and JPEG are allowed.');
|
throw new Error('Invalid file type. Only JPG and JPEG are allowed.');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate file size
|
// Validate file size
|
||||||
if (file.size > 2 * 1024 * 1024) {
|
if (file.size > 2 * 1024 * 1024) {
|
||||||
setImageError('File size exceeds 2MB.');
|
throw new Error('File size exceeds 2MB.');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate image dimensions
|
// Validate image dimensions
|
||||||
@ -171,12 +167,20 @@ const Verify = () => {
|
|||||||
setImageError('');
|
setImageError('');
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setImageError(error);
|
// Clear states on error
|
||||||
setFile(null);
|
setFile(null);
|
||||||
setSelectedImageName('');
|
setSelectedImageName('');
|
||||||
|
setImageError(<span className="text-danger small">{error.message || error}</span>);
|
||||||
|
|
||||||
|
// Reset file input
|
||||||
|
if (fileInputRef.current) {
|
||||||
|
fileInputRef.current.value = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const handleImageCancel = () => {
|
const handleImageCancel = () => {
|
||||||
setFile(null);
|
setFile(null);
|
||||||
setSelectedImageName('');
|
setSelectedImageName('');
|
||||||
@ -573,7 +577,7 @@ const Verify = () => {
|
|||||||
<p>Or</p>
|
<p>Or</p>
|
||||||
<a href="#" onClick={() => fileInputRef.current.click()} style={styles.browseLink}>Browse</a>
|
<a href="#" onClick={() => fileInputRef.current.click()} style={styles.browseLink}>Browse</a>
|
||||||
<p className="text-muted" style={styles.uploadText}>Recommended size: 320x200 (Max File Size: 2MB)</p>
|
<p className="text-muted" style={styles.uploadText}>Recommended size: 320x200 (Max File Size: 2MB)</p>
|
||||||
<p className="text-muted" style={styles.uploadText}>Supported file types: JPG, JPEG, PNG</p>
|
<p className="text-muted" style={styles.uploadText}>Supported file types: JPG, JPEG</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* File Input */}
|
{/* File Input */}
|
||||||
@ -584,9 +588,17 @@ const Verify = () => {
|
|||||||
className="form-control"
|
className="form-control"
|
||||||
style={{ display: 'none' }}
|
style={{ display: 'none' }}
|
||||||
accept="image/jpeg, image/jpg"
|
accept="image/jpeg, image/jpg"
|
||||||
onChange={(e) => handleImageUpload(e.target.files[0])}
|
onChange={(e) => {
|
||||||
|
const selectedFile = e.target.files?.[0];
|
||||||
|
if (selectedFile) {
|
||||||
|
handleImageUpload(selectedFile);
|
||||||
|
}
|
||||||
|
// Reset input value
|
||||||
|
e.target.value = '';
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
{selectedImageName && (
|
{selectedImageName && (
|
||||||
<div className="mt-3">
|
<div className="mt-3">
|
||||||
<p><strong>File:</strong> {selectedImageName}</p>
|
<p><strong>File:</strong> {selectedImageName}</p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user