import _ from 'lodash'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { inputTypes, kinds } from 'Helpers/Props'; import Button from 'Components/Link/Button'; import SpinnerButton from 'Components/Link/SpinnerButton'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import CheckInput from 'Components/Form/CheckInput'; import FormInputGroup from 'Components/Form/FormInputGroup'; import PageContentFooter from 'Components/Page/PageContentFooter'; import styles from './ImportArtistFooter.css'; const MIXED = 'mixed'; class ImportArtistFooter extends Component { // // Lifecycle constructor(props, context) { super(props, context); const { defaultMonitor, defaultQualityProfileId, defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder } = props; this.state = { monitor: defaultMonitor, qualityProfileId: defaultQualityProfileId, languageProfileId: defaultLanguageProfileId, metadataProfileId: defaultMetadataProfileId, albumFolder: defaultAlbumFolder }; } componentDidUpdate(prevProps, prevState) { const { defaultMonitor, defaultQualityProfileId, defaultLanguageProfileId, defaultMetadataProfileId, defaultAlbumFolder, isMonitorMixed, isQualityProfileIdMixed, isLanguageProfileIdMixed, isMetadataProfileIdMixed, isAlbumFolderMixed } = this.props; const { monitor, qualityProfileId, languageProfileId, metadataProfileId, albumFolder } = this.state; const newState = {}; if (isMonitorMixed && monitor !== MIXED) { newState.monitor = MIXED; } else if (!isMonitorMixed && monitor !== defaultMonitor) { newState.monitor = defaultMonitor; } if (isQualityProfileIdMixed && qualityProfileId !== MIXED) { newState.qualityProfileId = MIXED; } else if (!isQualityProfileIdMixed && qualityProfileId !== defaultQualityProfileId) { newState.qualityProfileId = defaultQualityProfileId; } if (isLanguageProfileIdMixed && languageProfileId !== MIXED) { newState.languageProfileId = MIXED; } else if (!isLanguageProfileIdMixed && languageProfileId !== defaultLanguageProfileId) { newState.languageProfileId = defaultLanguageProfileId; } if (isMetadataProfileIdMixed && metadataProfileId !== MIXED) { newState.metadataProfileId = MIXED; } else if (!isMetadataProfileIdMixed && metadataProfileId !== defaultMetadataProfileId) { newState.metadataProfileId = defaultMetadataProfileId; } if (isAlbumFolderMixed && albumFolder != null) { newState.albumFolder = null; } else if (!isAlbumFolderMixed && albumFolder !== defaultAlbumFolder) { newState.albumFolder = defaultAlbumFolder; } if (!_.isEmpty(newState)) { this.setState(newState); } } // // Listeners onInputChange = ({ name, value }) => { this.setState({ [name]: value }); this.props.onInputChange({ name, value }); } // // Render render() { const { selectedCount, isImporting, isLookingUpArtist, isMonitorMixed, isQualityProfileIdMixed, isLanguageProfileIdMixed, isMetadataProfileIdMixed, hasUnsearchedItems, showLanguageProfile, showMetadataProfile, onImportPress, onLookupPress, onCancelLookupPress } = this.props; const { monitor, qualityProfileId, languageProfileId, metadataProfileId, albumFolder } = this.state; return (
Monitor
Quality Profile
{ showLanguageProfile &&
Language Profile
} { showMetadataProfile &&
Metadata Profile
}
Album Folder
 
Import {selectedCount} Artist(s) { isLookingUpArtist && } { hasUnsearchedItems && } { isLookingUpArtist && } { isLookingUpArtist && 'Processing Folders' }
); } } ImportArtistFooter.propTypes = { selectedCount: PropTypes.number.isRequired, isImporting: PropTypes.bool.isRequired, isLookingUpArtist: PropTypes.bool.isRequired, defaultMonitor: PropTypes.string.isRequired, defaultQualityProfileId: PropTypes.number, defaultLanguageProfileId: PropTypes.number, defaultMetadataProfileId: PropTypes.number, defaultAlbumFolder: PropTypes.bool.isRequired, isMonitorMixed: PropTypes.bool.isRequired, isQualityProfileIdMixed: PropTypes.bool.isRequired, isLanguageProfileIdMixed: PropTypes.bool.isRequired, isMetadataProfileIdMixed: PropTypes.bool.isRequired, isAlbumFolderMixed: PropTypes.bool.isRequired, hasUnsearchedItems: PropTypes.bool.isRequired, showLanguageProfile: PropTypes.bool.isRequired, showMetadataProfile: PropTypes.bool.isRequired, onInputChange: PropTypes.func.isRequired, onImportPress: PropTypes.func.isRequired, onLookupPress: PropTypes.func.isRequired, onCancelLookupPress: PropTypes.func.isRequired }; export default ImportArtistFooter;