import React, {useCallback, useState} from 'react' import {StyleSheet, View, TouchableOpacity, Alert, Image} from 'react-native' import Svg, {Rect, Defs, LinearGradient, Stop} from 'react-native-svg' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {getGradient} from '../../lib/asset-gen' import {colors} from '../../lib/styles' import { openCamera, openCropper, openPicker, } from 'react-native-image-crop-picker' import {IMAGES_ENABLED} from '../../../build-flags' export function UserBanner({ handle, isEditable = false, }: { handle: string isEditable?: boolean }) { const gradient = getGradient(handle) const [uploadedImage, setUploadedImage] = useState(null) const handleEditBanner = useCallback(() => { Alert.alert('Select upload method', '', [ { text: 'Take a new photo', onPress: () => { openCamera({ mediaType: 'photo', cropping: true, width: 1500, height: 500, }).then(item => { setUploadedImage(item.path) console.log(item) }) }, }, { text: 'Select from gallery', onPress: () => { openPicker({ mediaType: 'photo', }).then(async item => { await openCropper({ mediaType: 'photo', path: item.path, width: 1500, height: 500, }).then(croppedItem => { setUploadedImage(croppedItem.path) console.log(croppedItem) }) }) }, }, ]) }, []) const renderSvg = () => ( ) return isEditable && IMAGES_ENABLED ? ( {/* Added a react state temporary photo white the protocol does not support imagery */} {uploadedImage != null ? ( ) : ( renderSvg() )} ) : ( renderSvg() ) } const styles = StyleSheet.create({ editButtonContainer: { position: 'absolute', width: 50, height: 50, top: '50%', left: '50%', borderRadius: 25, alignItems: 'center', justifyContent: 'center', backgroundColor: colors.gray5 + '99', transform: [{translateX: -25}, {translateY: -25}], }, bannerImage: { width: '100%', height: 120, }, })