import { View, Text, TouchableOpacity, Image, Button, ButtonSize, } from "react-native-ui-lib"; import React, { useState } from "react"; import { Dialog, PanningProvider, Card } from "react-native-ui-lib"; import { StyleSheet } from "react-native"; import { Feather, MaterialIcons } from "@expo/vector-icons"; import * as ImagePicker from "expo-image-picker"; import AddImageIcon from "@/assets/svgs/AddImageIcon"; import CameraIcon from "@/assets/svgs/CameraIcon"; interface IUploadDialogProps { show: boolean; setShow: (value: boolean) => void; } const UploadImageDialog = (uploadDialogProps: IUploadDialogProps) => { const [selectedImage, setSelectedImage] = useState(null); const [imageTitle, setImageTitle] = useState(null); const handleImagePick = async () => { const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync(); if (permissionResult.granted === false) { alert("Permission to access camera roll is required!"); return; } const result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.All, allowsEditing: true, aspect: [4, 3], quality: 1, }); // Check if the user canceled the image picker if (!result.canceled) { setSelectedImage(result.assets[0].uri); setImageTitle(result.assets[0].fileName || "Untitled"); } }; return ( uploadDialogProps.setShow(false)} panDirection={PanningProvider.Directions.DOWN} center > Upload an Image {!selectedImage && ( Click here to upload an image )} {selectedImage && ( <> {imageTitle} { setSelectedImage(null); setImageTitle(""); }} > ); }; export default UploadImageDialog; const styles = StyleSheet.create({ uploadImgBox: { backgroundColor: "#ffe8f2", padding: 35, width: "100%", aspectRatio: 1.8, borderRadius: 20, borderWidth: 2, borderColor: "#fd1775", borderStyle: "dashed", }, btnLbl: { fontFamily: "PlusJakartaSans_500Medium", fontSize: 15, }, uploadTxt: { color: "#b11d5a", fontSize: 15, fontFamily: "PlusJakartaSans_400Regular", marginTop: 12 }, selectedImage: { width: 38.69, aspectRatio: 1, borderRadius: 5, }, imageContainer: { alignItems: "center", width: "80%", borderWidth: 1, borderColor: "#d9d9d9", padding: 10, borderRadius: 10, }, imageInfo: { marginLeft: 10, }, imageTitle: { fontSize: 15, color: "#262627", fontFamily: "PlusJakartaSans_400Regular" }, modalCard: { paddingHorizontal: 25, paddingTop: 30, paddingBottom: 17, justifyContent: "center", alignItems: "center", borderRadius: 20, }, modalTitle: { fontSize: 22, fontFamily: "Manrope_600SemiBold", marginBottom: 20, }, bottomText: { marginTop: 20, color: "#999999", fontSize: 13.53, fontFamily: "Poppins_500Medium", }, });