"use client"; import { useCallback, useEffect, useState } from "react"; import { FileWithPath } from "react-dropzone"; import { Icon } from "@iconify/react"; import Dropzone from "../dropzone"; import Camera from "./camera"; import CropPortrait from "./crop-portrait"; interface Props { text: string; forceCrop?: boolean; image?: string | undefined; setImage: React.Dispatch>; } export default function SwitchFileUpload({ text, forceCrop, image, setImage }: Props) { const [isCameraOpen, setIsCameraOpen] = useState(false); const [isCropOpen, setIsCropOpen] = useState(false); const [hasImage, setHasImage] = useState(false); const handleDrop = useCallback( (acceptedFiles: FileWithPath[]) => { const file = acceptedFiles[0]; // Convert to Data URI const reader = new FileReader(); reader.onload = async (event) => { setImage(event.target!.result as string); setHasImage(true); if (forceCrop) setIsCropOpen(true); }; reader.readAsDataURL(file); }, [setImage], ); useEffect(() => { if (!isCameraOpen) return; if (forceCrop) setIsCropOpen(true); }, [isCameraOpen]); return (

{!hasImage ? ( <> Drag and drop {text}
or click to open ) : ( "Uploaded!" )}

or
); }