import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import TagList from 'Components/TagList'; import { icons, kinds } from 'Helpers/Props'; import titleCase from 'Utilities/String/titleCase'; import translate from 'Utilities/String/translate'; import EditDelayProfileModalConnector from './EditDelayProfileModalConnector'; import styles from './DelayProfile.css'; function getDelay(enabled, delay) { if (!enabled) { return '-'; } if (!delay) { return 'No Delay'; } if (delay === 1) { return '1 Minute'; } // TODO: use better units of time than just minutes return `${delay} Minutes`; } class DelayProfile extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isEditDelayProfileModalOpen: false, isDeleteDelayProfileModalOpen: false }; } // // Listeners onEditDelayProfilePress = () => { this.setState({ isEditDelayProfileModalOpen: true }); }; onEditDelayProfileModalClose = () => { this.setState({ isEditDelayProfileModalOpen: false }); }; onDeleteDelayProfilePress = () => { this.setState({ isEditDelayProfileModalOpen: false, isDeleteDelayProfileModalOpen: true }); }; onDeleteDelayProfileModalClose = () => { this.setState({ isDeleteDelayProfileModalOpen: false }); }; onConfirmDeleteDelayProfile = () => { this.props.onConfirmDeleteDelayProfile(this.props.id); }; // // Render render() { const { id, enableUsenet, enableTorrent, preferredProtocol, usenetDelay, torrentDelay, tags, tagList, isDragging, connectDragSource } = this.props; let preferred = titleCase(preferredProtocol); if (!enableUsenet) { preferred = translate('OnlyTorrent'); } else if (!enableTorrent) { preferred = translate('OnlyUsenet'); } return (
{preferred}
{getDelay(enableUsenet, usenetDelay)}
{getDelay(enableTorrent, torrentDelay)}
{ id !== 1 && connectDragSource(
) }
); } } DelayProfile.propTypes = { id: PropTypes.number.isRequired, enableUsenet: PropTypes.bool.isRequired, enableTorrent: PropTypes.bool.isRequired, preferredProtocol: PropTypes.string.isRequired, usenetDelay: PropTypes.number.isRequired, torrentDelay: PropTypes.number.isRequired, tags: PropTypes.arrayOf(PropTypes.number).isRequired, tagList: PropTypes.arrayOf(PropTypes.object).isRequired, isDragging: PropTypes.bool.isRequired, connectDragSource: PropTypes.func, onConfirmDeleteDelayProfile: PropTypes.func.isRequired }; DelayProfile.defaultProps = { // The drag preview will not connect the drag handle. connectDragSource: (node) => node }; export default DelayProfile;