import React, { 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 memeEditorStyles = { image: { marginBottom: 15, borderRadius: 5, }, memeTagSelector: { marginBottom: 10, }, description: { marginBottom: 10, }, }; 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 } = useDimensions(); const [imageWidth, setImageWidth] = useState(); const [imageHeight, setImageHeight] = useState(); Image.getSize(imageUri, (width, height) => { const paddedWidth = dimensions.width * 0.92; setImageWidth(paddedWidth); setImageHeight((paddedWidth / width) * height); }); if (!imageWidth || !imageHeight) return ; return ( <> setMemeTitle(validateMemeTitle(title))} error={!memeTitle.valid} selectTextOnFocus /> {memeTitle.error} setMemeDescription(validateMemeDescription(description)) } error={!memeDescription.valid} /> ); }; export default MemeEditor;