import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Alert from 'Components/Alert'; import TextInput from 'Components/Form/TextInput'; import Button from 'Components/Link/Button'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import Scroller from 'Components/Scroller/Scroller'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import { kinds, scrollDirections } from 'Helpers/Props'; import getErrorMessage from 'Utilities/Object/getErrorMessage'; import translate from 'Utilities/String/translate'; import SelectIndexerRow from './SelectIndexerRow'; import styles from './AddIndexerModalContent.css'; const columns = [ { name: 'protocol', label: 'Protocol', isSortable: true, isVisible: true }, { name: 'name', label: 'Name', isSortable: true, isVisible: true }, { name: 'privacy', label: 'Privacy', isSortable: true, isVisible: true } ]; class AddIndexerModalContent extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { filter: '' }; } // // Listeners onFilterChange = ({ value }) => { this.setState({ filter: value }); } // // Render render() { const { indexers, onIndexerSelect, sortKey, sortDirection, isFetching, isPopulated, error, onSortPress, onModalClose } = this.props; const filter = this.state.filter; const filterLower = filter.toLowerCase(); const errorMessage = getErrorMessage(error, 'Unable to load indexers'); return ( Add Indexer
{translate('ProwlarrSupportsAnyIndexer')}
{ isFetching ? : null } { error ?
{errorMessage}
: null } { isPopulated && !!indexers.length ? { indexers.map((indexer) => { return indexer.name.toLowerCase().includes(filterLower) ? ( ) : null; }) }
: null }
); } } AddIndexerModalContent.propTypes = { isFetching: PropTypes.bool.isRequired, isPopulated: PropTypes.bool.isRequired, error: PropTypes.object, sortKey: PropTypes.string, sortDirection: PropTypes.string, onSortPress: PropTypes.func.isRequired, indexers: PropTypes.arrayOf(PropTypes.object).isRequired, onIndexerSelect: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired }; export default AddIndexerModalContent;