import React from 'react'; import PropTypes from 'prop-types'; import { View, Text } from 'react-native'; import FastImage from '@rocket.chat/react-native-fast-image'; import Touch from '../../utils/touch'; import Check from '../../containers/Check'; import styles, { ROW_HEIGHT } from './styles'; import { themes } from '../../constants/colors'; export { ROW_HEIGHT }; const ServerItem = React.memo(({ server, item, onPress, hasCheck, theme }) => ( <Touch onPress={onPress} style={[styles.serverItem, { backgroundColor: themes[theme].backgroundColor }]} testID={`rooms-list-header-server-${ item.id }`} theme={theme} > <View style={styles.serverItemContainer}> {item.iconURL ? ( <FastImage source={{ uri: item.iconURL, priority: FastImage.priority.high }} defaultSource={{ uri: 'logo' }} style={styles.serverIcon} onError={() => console.log('err_loading_server_icon')} /> ) : ( <FastImage source={{ uri: 'logo' }} style={styles.serverIcon} /> ) } <View style={styles.serverTextContainer}> <Text style={[styles.serverName, { color: themes[theme].titleText }]}>{item.name || item.id}</Text> <Text style={[styles.serverUrl, { color: themes[theme].auxiliaryText }]}>{item.id}</Text> </View> {item.id === server && hasCheck ? <Check theme={theme} /> : null} </View> </Touch> )); ServerItem.propTypes = { onPress: PropTypes.func.isRequired, item: PropTypes.object.isRequired, hasCheck: PropTypes.bool, server: PropTypes.string, theme: PropTypes.string }; export default ServerItem;