import React from 'react' import { View } from 'react-native' import { Image } from 'expo-image' import Ionicons from '@expo/vector-icons/Ionicons' import { MaterialIcons } from '@expo/vector-icons' import tw from '../lib/tailwind' import MyText from './text' import MyTouchableOpacity from './touchable-opacity' import usePickImage from './use-pick-image' export interface ImageUploaderNeoItem { imgUrl: string mimeType: string | null } export interface ImageUploaderNeoPayload { url: string mimeType: string | null } interface ImageUploaderNeoProps { images: ImageUploaderNeoItem[] onImageAdd: (images: ImageUploaderNeoPayload[]) => void onImageRemove: (image: ImageUploaderNeoPayload) => void allowMultiple?: boolean } const ImageUploaderNeo: React.FC = ({ images, onImageAdd, onImageRemove, allowMultiple = true, }) => { const totalImageCount = images.length const handleAddImages = (files: any) => { if (!files) return const assets = Array.isArray(files) ? files : [files] const payload = assets.map((asset) => ({ url: asset.uri, mimeType: asset.mimeType ?? null, })) onImageAdd(payload) } const handlePickImage = usePickImage({ setFile: handleAddImages, multiple: allowMultiple, }) // console.log({images}) return ( {images.map((image, index) => ( onImageRemove({ url: image.imgUrl, mimeType: image.mimeType ?? null, }) } style={tw`absolute top-0 right-0 bg-red-500 rounded-full p-1`} > ))} = 1} onPress={handlePickImage} style={tw`w-1/3 px-1 mb-2`} > {!allowMultiple && totalImageCount >= 1 ? ( Only one image allowed ) : ( )} ) } export default ImageUploaderNeo