import { useState, } from 'react'; import { Alert } from 'react-native'; import { launchImageLibraryAsync, requestMediaLibraryPermissionsAsync } from 'expo-image-picker'; export function usePickImage() { const [image, setImage] = useState(null); const pickImage = async () => { try { const permissionResult = await requestMediaLibraryPermissionsAsync(); if (permissionResult.granted === false) { Alert.alert("Permission refusée", "Activez l'accès au stockage ou à la gallerie dans les paramètres."); return; } let result = await launchImageLibraryAsync({ mediaTypes: ['images'], allowsMultipleSelection: false, allowsEditing: true, aspect: [4, 3], quality: 1, }); if (!result.canceled && result) { setImage(result.assets[0]); } else { console.log('Image picker cancelled.'); } } catch (error) { console.error('Error picking image;', error); Alert.alert('Erreur', "Une erreur est survenue lors de la sélection d'une image."); } } function sendImage(location) { if (image) { let data = new FormData(); data.append('file', { uri: image.uri, name: 'photo.jpg', type: 'image/jpeg', }); fetch(location , { method: 'POST', body: data, headers: { 'Content-Type': 'multipart/form-data', }, }); } } return {image, pickImage, sendImage}; }