import React from 'react'; import { Text, View, StyleSheet, Platform, ViewPropTypes, Image } from 'react-native'; import PropTypes from 'prop-types'; import Avatar from '../containers/Avatar'; import Touch from '../utils/touch'; const styles = StyleSheet.create({ button: { height: 54, backgroundColor: '#fff' }, container: { flexDirection: 'row' }, avatar: { marginHorizontal: 15, marginVertical: 12 }, textContainer: { flex: 1, flexDirection: 'column' }, name: { fontSize: 18, color: '#0C0D0F', marginTop: Platform.OS === 'ios' ? 6 : 3, marginBottom: 1, textAlign: 'left' }, username: { fontSize: 14, color: '#9EA2A8' }, icon: { width: 20, height: 20, marginHorizontal: 15, resizeMode: 'contain', alignSelf: 'center' } }); const UserItem = ({ name, username, onPress, testID, onLongPress, style, icon, baseUrl }) => ( <Touch onPress={onPress} onLongPress={onLongPress} style={styles.button} testID={testID}> <View style={[styles.container, style]}> <Avatar text={username} size={30} type='d' style={styles.avatar} baseUrl={baseUrl} /> <View style={styles.textContainer}> <Text style={styles.name}>{name}</Text> <Text style={styles.username}>@{username}</Text> </View> {icon ? <Image source={{ uri: icon }} style={styles.icon} /> : null} </View> </Touch> ); UserItem.propTypes = { name: PropTypes.string.isRequired, username: PropTypes.string.isRequired, baseUrl: PropTypes.string.isRequired, onPress: PropTypes.func.isRequired, testID: PropTypes.string.isRequired, onLongPress: PropTypes.func, style: ViewPropTypes.style, icon: PropTypes.string }; export default UserItem;