import React, { Component } from 'react'; import { isEmpty } from 'lodash'; import { noop } from 'foremanReact/common/helpers'; import { Accordion } from '@patternfly/react-core'; import PropTypes from 'prop-types'; import ListItem from './Components/ListItem'; import EmptyState from './Components/EmptyState'; import ErrorState from './Components/ErrorState'; import EmptyResults from './Components/EmptyResults'; import { filterAccounts } from './AccountListHelper'; import './accountList.scss'; class AccountList extends Component { componentDidMount() { const { fetchAccountsStatus, startAccountStatusPolling } = this.props; fetchAccountsStatus(); const pollingProcessID = setInterval(fetchAccountsStatus, 5000); startAccountStatusPolling(pollingProcessID); } componentWillUnmount() { const { stopAccountStatusPolling, pollingProcessID } = this.props; stopAccountStatusPolling(pollingProcessID); } render() { const { accounts, error, filterTerm } = this.props; const filteredAccount = filterAccounts(accounts, filterTerm); if (error) { return ; } if (isEmpty(accounts)) { return ; } if (isEmpty(filteredAccount)) { return ; } const items = Object.keys(filteredAccount).map((label, index) => { const account = accounts[label]; return ; }); return {items}; } } AccountList.propTypes = { fetchAccountsStatus: PropTypes.func, startAccountStatusPolling: PropTypes.func, stopAccountStatusPolling: PropTypes.func, pollingProcessID: PropTypes.number, account: PropTypes.shape({ generate_report_status: PropTypes.string, upload_report_status: PropTypes.string, }), accounts: PropTypes.object, error: PropTypes.string, filterTerm: PropTypes.string, }; AccountList.defaultProps = { fetchAccountsStatus: noop, startAccountStatusPolling: noop, stopAccountStatusPolling: noop, pollingProcessID: 0, account: { generate_report_status: 'unknown', upload_report_status: 'unknown', }, accounts: {}, error: '', filterTerm: null, }; export default AccountList;