diff --git a/src/app/components/ImageInput.js b/src/app/components/ImageInput.js index 41f9115..fec7298 100644 --- a/src/app/components/ImageInput.js +++ b/src/app/components/ImageInput.js @@ -14,65 +14,72 @@ import * as ImagePicker from "expo-image-picker"; import * as Permissions from "expo-permissions"; import colors from "../config/colors"; -function ImageInput({ imageUri, onChangeImage }) { - useEffect(() => { - requestPermission(); - //requestPermissionCamera(); - }, []); - /* const [modalVisible, setModalVisible] = useState(false); +const requestPermissionCamera = async () => { + const { granted } = await Permissions.askAsync(Permissions.CAMERA); + if (!granted) + alert("Você precisa habilitar permissão para acessar a câmera."); - const requestPermissionCamera = async () => { - const { granted } = await Permissions.askAsync(Permissions.CAMERA); - if(granted) { - launchCamera(); - } - else if (!granted) alert("Você precisa habilitar permissão para acessar a câmera."); - }; - - const launchCamera = async () => { - setModalVisible(false); - try { - const result = await ImagePicker.launchCameraAsync({ - allowsEditing: false, - }); - if (!result.cancelled) onChangeImage(result.uri) - } catch (error) { - console.log("Erro ao ler imagem", error); - } - };*/ + return granted; +}; + +const requestPermissionGallery = async () => { + const { granted } = await ImagePicker.requestCameraRollPermissionsAsync(); + if (!granted) + alert("Você precisa habilitar permissão para acessar a biblioteca."); - const requestPermission = async () => { - const { granted } = await ImagePicker.requestCameraRollPermissionsAsync(); - if (!granted) - alert("Você precisa habilitar permissão para acessar a biblioteca."); - }; + return granted; +}; - const handlePress = () => { - if (!imageUri) - launchImageLibrary(); - //setModalVisible(true); - else - Alert.alert("Deletar", "Deseja deletar esta imagem?", [ - { text: "Sim", onPress: () => onChangeImage(null) }, - { text: "Não" }, - ]); - }; +const removeImgage = (imageUri, onChangeImage) => { + if (imageUri) { + Alert.alert("Deletar", "Deseja deletar esta imagem?", [ + { text: "Sim", onPress: () => onChangeImage(null) }, + { text: "Não" }, + ]); + } +}; - const launchImageLibrary = async () => { - try { - const result = await ImagePicker.launchImageLibraryAsync({ - mediaTypes: ImagePicker.MediaTypeOptions.Images, - quality: 0.5, - }); - if (!result.cancelled) onChangeImage(result.uri); - } catch (error) { - console.log("Erro ao ler imagem", error); +const launchCamera = async (onChangeImage, callBack) => { + try { + const result = await ImagePicker.launchCameraAsync({ + allowsEditing: false, + }); + if (!result.cancelled) { + onChangeImage(result.uri); } - }; + callBack(); + } catch (error) { + console.log("Erro ao ler imagem", error); + } +}; + +const launchImageLibrary = async (onChangeImage, callBack) => { + try { + const result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, + quality: 0.5, + }); + if (!result.cancelled) { + onChangeImage(result.uri); + } + callBack(); + } catch (error) { + console.log("Erro ao ler imagem", error); + } +}; + +function ImageInput({ imageUri, onChangeImage }) { + const [modalVisible, setModalVisible] = useState(false); return ( - + { + !imageUri + ? setModalVisible(true) + : removeImgage(imageUri, onChangeImage); + }} + > {!imageUri && ( )} - {imageUri && } + {imageUri && ( + + )} - {/* - + - { - setModalVisible(!setModalVisible); - }}> + visible={modalVisible} + > + { + setModalVisible(!modalVisible); + }} + > Selecione uma imagem - + + { + requestPermissionCamera() && + launchCamera(onChangeImage, () => + setModalVisible(false) + ); + }} + > Câmera - + + { + requestPermissionGallery() && + launchImageLibrary(onChangeImage, () => + setModalVisible(false) + ); + }} + > Galeria - { setModalVisible(false) }}> - + + { + setModalVisible(false); + }} + > + Cancelar - + - */} + ); } - const styles = StyleSheet.create({ container: { alignItems: "center",