import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { icons, kinds } from 'Helpers/Props'; import formatBytes from 'Utilities/Number/formatBytes'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell'; import TrackQuality from 'Album/TrackQuality'; import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal'; import FileDetailsModal from 'TrackFile/FileDetailsModal'; import styles from './UnmappedFilesTableRow.css'; class UnmappedFilesTableRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isDetailsModalOpen: false, isInteractiveImportModalOpen: false, isConfirmDeleteModalOpen: false }; } // // Listeners onDetailsPress = () => { this.setState({ isDetailsModalOpen: true }); } onDetailsModalClose = () => { this.setState({ isDetailsModalOpen: false }); } onInteractiveImportPress = () => { this.setState({ isInteractiveImportModalOpen: true }); } onInteractiveImportModalClose = () => { this.setState({ isInteractiveImportModalOpen: false }); } onDeleteFilePress = () => { this.setState({ isConfirmDeleteModalOpen: true }); } onConfirmDelete = () => { this.setState({ isConfirmDeleteModalOpen: false }); this.props.deleteUnmappedFile(this.props.id); } onConfirmDeleteModalClose = () => { this.setState({ isConfirmDeleteModalOpen: false }); } // // Render render() { const { id, path, size, dateAdded, quality, columns } = this.props; const folder = path.substring(0, Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\'))); const { isInteractiveImportModalOpen, isDetailsModalOpen, isConfirmDeleteModalOpen } = this.state; return ( <> { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (name === 'path') { return ( {path} ); } if (name === 'size') { return ( {formatBytes(size)} ); } if (name === 'dateAdded') { return ( ); } if (name === 'quality') { return ( ); } if (name === 'actions') { return ( ); } return null; }) } ); } } UnmappedFilesTableRow.propTypes = { id: PropTypes.number.isRequired, path: PropTypes.string.isRequired, size: PropTypes.number.isRequired, quality: PropTypes.object.isRequired, dateAdded: PropTypes.string.isRequired, columns: PropTypes.arrayOf(PropTypes.object).isRequired, deleteUnmappedFile: PropTypes.func.isRequired }; export default UnmappedFilesTableRow;