Lidarr/frontend/src/Artist/Delete/DeleteArtistModalContent.js

167 lines
4.3 KiB
JavaScript
Raw Normal View History

2017-09-04 02:20:56 +00:00
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
2020-09-07 01:33:10 +00:00
import FormLabel from 'Components/Form/FormLabel';
import Icon from 'Components/Icon';
import Button from 'Components/Link/Button';
2017-09-04 02:20:56 +00:00
import ModalBody from 'Components/Modal/ModalBody';
2020-09-07 01:33:10 +00:00
import ModalContent from 'Components/Modal/ModalContent';
2017-09-04 02:20:56 +00:00
import ModalFooter from 'Components/Modal/ModalFooter';
2020-09-07 01:33:10 +00:00
import ModalHeader from 'Components/Modal/ModalHeader';
import { icons, inputTypes, kinds } from 'Helpers/Props';
import formatBytes from 'Utilities/Number/formatBytes';
2017-09-04 02:20:56 +00:00
import styles from './DeleteArtistModalContent.css';
class DeleteArtistModalContent extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
deleteFiles: false,
addImportListExclusion: false
2017-09-04 02:20:56 +00:00
};
}
//
// Listeners
onDeleteFilesChange = ({ value }) => {
this.setState({ deleteFiles: value });
}
onAddImportListExclusionChange = ({ value }) => {
this.setState({ addImportListExclusion: value });
}
2017-09-16 20:22:06 +00:00
onDeleteArtistConfirmed = () => {
2017-09-04 02:20:56 +00:00
const deleteFiles = this.state.deleteFiles;
const addImportListExclusion = this.state.addImportListExclusion;
2017-09-04 02:20:56 +00:00
this.setState({ deleteFiles: false });
this.setState({ addImportListExclusion: false });
this.props.onDeletePress(deleteFiles, addImportListExclusion);
2017-09-04 02:20:56 +00:00
}
//
// Render
render() {
const {
artistName,
path,
2018-03-15 01:28:46 +00:00
statistics,
2017-09-04 02:20:56 +00:00
onModalClose
} = this.props;
2018-03-15 01:28:46 +00:00
const {
trackFileCount,
sizeOnDisk
} = statistics;
2017-09-04 02:20:56 +00:00
const deleteFiles = this.state.deleteFiles;
const addImportListExclusion = this.state.addImportListExclusion;
2017-09-04 02:20:56 +00:00
let deleteFilesLabel = `Delete ${trackFileCount} Track Files`;
let deleteFilesHelpText = 'Delete the track files and artist folder';
if (trackFileCount === 0) {
deleteFilesLabel = 'Delete Artist Folder';
deleteFilesHelpText = 'Delete the artist folder and its contents';
2017-09-04 02:20:56 +00:00
}
return (
<ModalContent
onModalClose={onModalClose}
>
<ModalHeader>
Delete - {artistName}
</ModalHeader>
<ModalBody>
<div className={styles.pathContainer}>
<Icon
className={styles.pathIcon}
name={icons.FOLDER}
/>
{path}
</div>
<FormGroup>
<FormLabel>{deleteFilesLabel}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="deleteFiles"
value={deleteFiles}
helpText={deleteFilesHelpText}
kind={kinds.DANGER}
onChange={this.onDeleteFilesChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>Add List Exclusion</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="addImportListExclusion"
value={addImportListExclusion}
helpText="Prevent artist from being added to Lidarr by Import lists"
kind={kinds.DANGER}
onChange={this.onAddImportListExclusionChange}
/>
</FormGroup>
2017-09-04 02:20:56 +00:00
{
deleteFiles &&
<div className={styles.deleteFilesMessage}>
<div>The artist folder <strong>{path}</strong> and all of its content will be deleted.</div>
2017-09-04 02:20:56 +00:00
{
!!trackFileCount &&
<div>{trackFileCount} track files totaling {formatBytes(sizeOnDisk)}</div>
}
</div>
}
</ModalBody>
<ModalFooter>
<Button onPress={onModalClose}>
Close
</Button>
<Button
kind={kinds.DANGER}
2017-09-16 20:22:06 +00:00
onPress={this.onDeleteArtistConfirmed}
2017-09-04 02:20:56 +00:00
>
Delete
</Button>
</ModalFooter>
</ModalContent>
);
}
}
DeleteArtistModalContent.propTypes = {
artistName: PropTypes.string.isRequired,
path: PropTypes.string.isRequired,
2018-03-15 01:28:46 +00:00
statistics: PropTypes.object.isRequired,
2017-09-04 02:20:56 +00:00
onDeletePress: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
DeleteArtistModalContent.defaultProps = {
statistics: {
trackFileCount: 0
}
2017-09-04 02:20:56 +00:00
};
export default DeleteArtistModalContent;