import React, { useEffect, useState } from 'react'; import { HelperText, TextInput } from 'react-native-paper'; import { Image } from 'react-native'; import { useDimensions } from '../../contexts'; import LoadingView from '../loadingView'; import { MemeTagSelector } from '.'; import { Tag } from '../../database'; import { StringValidationResult, validateMemeDescription, validateMemeTitle, } from '../../utilities'; const MemeEditor = ({ imageUri, memeTitle, setMemeTitle, memeDescription, setMemeDescription, memeTags, setMemeTags, }: { imageUri: string[]; memeTitle: StringValidationResult; setMemeTitle: (name: StringValidationResult) => void; memeDescription: StringValidationResult; setMemeDescription: (description: StringValidationResult) => void; memeTags: Map; setMemeTags: (tags: Map) => void; }) => { const { dimensions, fixed, responsive } = useDimensions(); const [imageWidth, setImageWidth] = useState(); const [imageHeight, setImageHeight] = useState(); useEffect(() => { Image.getSize(imageUri[0], (width, height) => { const paddedWidth = dimensions.width - dimensions.width * 0.08; setImageWidth(paddedWidth); setImageHeight((paddedWidth / width) * height); }); }, [dimensions.width, imageUri]); if (!imageWidth || !imageHeight) return ; return ( <> setMemeTitle(validateMemeTitle(title))} error={!memeTitle.valid} selectTextOnFocus /> {memeTitle.error} setMemeDescription(validateMemeDescription(description)) } /> ); }; export default MemeEditor;