import React, { Component } from "react" import PropTypes from "prop-types" import { StyleSheet, Text, View, Image, TouchableOpacity, Dimensions, ActivityIndicator, } from "react-native" import { Icon } from "." import { reactAutoBind } from "auto-bind2" import { api } from "../API" const photoSpacing = 10 export class PhotoPanel extends Component { static propTypes = { onPhotoPress: PropTypes.func, readOnly: PropTypes.bool, value: PropTypes.arrayOf(PropTypes.string), } constructor(props) { super(props) reactAutoBind(this) this.state = { photoSize: null, } } handleLayout(e) { if (!this.state.photoSize) { const { layout } = e.nativeEvent const ratio = 3 / 4 const width = (layout.width - photoSpacing) / 2 const height = width / ratio this.setState({ photoSize: { width, height } }) } } render() { const { photoSize } = this.state const { value: assetIds, readOnly, onPhotoPress } = this.props const renderPhoto = (index) => { const assetId = assetIds && assetIds[index] return ( onPhotoPress(index)}> {!assetId && ( )} {assetId && ( )} ) } return ( {photoSize && ( {renderPhoto(0)} {renderPhoto(1)} )} {photoSize && ( {renderPhoto(2)} {renderPhoto(3)} )} ) } } const styles = StyleSheet.create({ photoRow: { flexDirection: "row", justifyContent: "space-between", width: "100%", paddingTop: 5, paddingBottom: 5, }, })