diff --git a/client/src/components/media-upload.tsx b/client/src/components/media-upload.tsx index 219bbdf..9340414 100644 --- a/client/src/components/media-upload.tsx +++ b/client/src/components/media-upload.tsx @@ -4,7 +4,7 @@ import { Button } from "@/components/ui/button"; import { Dialog, DialogContent } from "@/components/ui/dialog"; import { useMutation, useQuery } from "@tanstack/react-query"; import { apiRequest, queryClient } from "@/lib/queryClient"; -import { CloudUpload, Image as ImageIcon, Video, X, Upload, Loader2, ZoomIn } from "lucide-react"; +import { CloudUpload, Image as ImageIcon, Video, X, Upload, Loader2, ZoomIn, Camera } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; import { SiFacebook, SiInstagram } from "react-icons/si"; @@ -14,6 +14,7 @@ export default function MediaUpload() { const [visibleCount, setVisibleCount] = useState(5); const [zoomImage, setZoomImage] = useState(null); const loadMoreRef = useRef(null); + const cameraInputRef = useRef(null); const { data: mediaList } = useQuery({ queryKey: ["/api/media"], @@ -111,6 +112,15 @@ export default function MediaUpload() { }, }); + const handleCameraCapture = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (file) { + uploadMutation.mutate(file); + // Réinitialiser l'input pour permettre de capturer la même photo à nouveau + e.target.value = ''; + } + }; + // Scroll infini - IntersectionObserver useEffect(() => { const observer = new IntersectionObserver( @@ -146,14 +156,25 @@ export default function MediaUpload() {

Téléchargement et recadrage automatique

- +
+ + +
@@ -170,6 +191,14 @@ export default function MediaUpload() { data-testid="dropzone-upload" > +
{uploadingCount > 0 ? (