// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React, {PropTypes} from 'react'; import { StyleSheet, Text, TouchableOpacity, TouchableWithoutFeedback, View } from 'react-native'; import Icon from 'react-native-vector-icons/FontAwesome'; import ProfilePicture from 'app/components/profile_picture'; import {makeStyleSheetFromTheme, changeOpacity} from 'app/utils/theme'; function createTouchableComponent(children, action) { return ( {children} ); } function MemberListRow(props) { const {id, displayName, username, onPress, theme, user, disableSelect} = props; const style = getStyleFromTheme(theme); const RowComponent = ( {props.selectable && false : props.onRowSelect}> {props.selected && } } {displayName} {`(@${username})`} ); if (typeof onPress === 'function') { return createTouchableComponent(RowComponent, () => onPress(id)); } else if (typeof props.onRowSelect === 'function') { return createTouchableComponent(RowComponent, disableSelect ? () => false : props.onRowSelect); } return RowComponent; } MemberListRow.propTypes = { id: PropTypes.string.isRequired, displayName: PropTypes.string.isRequired, pictureURL: PropTypes.string, username: PropTypes.string.isRequired, theme: PropTypes.object.isRequired, onPress: PropTypes.func, selectable: PropTypes.bool, onRowSelect: PropTypes.func, selected: PropTypes.bool, disableSelect: PropTypes.bool }; const getStyleFromTheme = makeStyleSheetFromTheme((theme) => { return StyleSheet.create({ container: { flexDirection: 'row', height: 65, paddingHorizontal: 15, alignItems: 'center', backgroundColor: theme.centerChannelBg }, displayName: { fontSize: 16, color: theme.centerChannelColor }, icon: { fontSize: 20, color: theme.centerChannelColor }, textContainer: { flexDirection: 'row', marginLeft: 5 }, username: { marginLeft: 5, fontSize: 16, color: changeOpacity(theme.centerChannelColor, 0.5) }, selector: { height: 28, width: 28, borderRadius: 14, borderWidth: 1, borderColor: '#888', alignItems: 'center', justifyContent: 'center' }, selectorContainer: { height: 50, paddingRight: 15, alignItems: 'center', justifyContent: 'center' }, selectorDisabled: { backgroundColor: '#888' }, selectorFilled: { backgroundColor: '#378FD2', borderWidth: 0 } }); }); export default MemberListRow;