Changed: Remove Language Profiles (#870)

* Changed: Remove Language Profiles

* fixup! Changed: Remove Language Profiles

* fixup! Changed: Remove Language Profiles

* Remove unused method in FileNameBuilder

* Fixed: Cleanup Int Converter Copy/Paste Issues and Grammar
This commit is contained in:
Qstick 2019-08-02 07:50:09 -04:00 committed by GitHub
parent 8f791abbf6
commit 8b860bcb82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
227 changed files with 345 additions and 5873 deletions

View file

@ -56,12 +56,6 @@ const columns = [
isSortable: true,
isVisible: true
},
{
name: 'language',
label: 'Language',
isSortable: true,
isVisible: true
},
{
name: 'size',
label: 'Size',

View file

@ -127,7 +127,6 @@ class InteractiveImportModalContentConnector extends Component {
albumReleaseId,
tracks,
quality,
language,
disableReleaseSwitching
} = item;
@ -151,11 +150,6 @@ class InteractiveImportModalContentConnector extends Component {
return false;
}
if (!language) {
this.setState({ interactiveImportErrorMessage: 'Language must be chosen for each selected file' });
return false;
}
files.push({
path: item.path,
folderName: item.folderName,
@ -164,7 +158,6 @@ class InteractiveImportModalContentConnector extends Component {
albumReleaseId,
trackIds: _.map(tracks, 'id'),
quality,
language,
downloadId: this.props.downloadId,
disableReleaseSwitching
});

View file

@ -4,8 +4,7 @@
word-break: break-all;
}
.quality,
.language {
.quality {
composes: cell from '~Components/Table/Cells/TableRowCell.css';
text-align: center;

View file

@ -11,12 +11,10 @@ import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
import Popover from 'Components/Tooltip/Popover';
import Tooltip from 'Components/Tooltip/Tooltip';
import TrackQuality from 'Album/TrackQuality';
import TrackLanguage from 'Album/TrackLanguage';
import SelectArtistModal from 'InteractiveImport/Artist/SelectArtistModal';
import SelectAlbumModal from 'InteractiveImport/Album/SelectAlbumModal';
import SelectTrackModal from 'InteractiveImport/Track/SelectTrackModal';
import SelectQualityModal from 'InteractiveImport/Quality/SelectQualityModal';
import SelectLanguageModal from 'InteractiveImport/Language/SelectLanguageModal';
import InteractiveImportRowCellPlaceholder from './InteractiveImportRowCellPlaceholder';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import styles from './InteractiveImportRow.css';
@ -33,8 +31,7 @@ class InteractiveImportRow extends Component {
isSelectArtistModalOpen: false,
isSelectAlbumModalOpen: false,
isSelectTrackModalOpen: false,
isSelectQualityModalOpen: false,
isSelectLanguageModalOpen: false
isSelectQualityModalOpen: false
};
}
@ -44,16 +41,14 @@ class InteractiveImportRow extends Component {
artist,
album,
tracks,
quality,
language
quality
} = this.props;
if (
artist &&
album != null &&
tracks.length &&
quality &&
language
quality
) {
this.props.onSelectedChange({ id, value: true });
}
@ -66,7 +61,6 @@ class InteractiveImportRow extends Component {
album,
tracks,
quality,
language,
isSelected,
onValidRowChange
} = this.props;
@ -76,7 +70,6 @@ class InteractiveImportRow extends Component {
prevProps.album === album &&
!hasDifferentItems(prevProps.tracks, tracks) &&
prevProps.quality === quality &&
prevProps.language === language &&
prevProps.isSelected === isSelected
) {
return;
@ -86,8 +79,7 @@ class InteractiveImportRow extends Component {
artist &&
album &&
tracks.length &&
quality &&
language
quality
);
if (isSelected && !isValid) {
@ -130,10 +122,6 @@ class InteractiveImportRow extends Component {
this.setState({ isSelectQualityModalOpen: true });
}
onSelectLanguagePress = () => {
this.setState({ isSelectLanguageModalOpen: true });
}
onSelectArtistModalClose = (changed) => {
this.setState({ isSelectArtistModalOpen: false });
this.selectRowAfterChange(changed);
@ -154,11 +142,6 @@ class InteractiveImportRow extends Component {
this.selectRowAfterChange(changed);
}
onSelectLanguageModalClose = (changed) => {
this.setState({ isSelectLanguageModalOpen: false });
this.selectRowAfterChange(changed);
}
//
// Render
@ -172,7 +155,6 @@ class InteractiveImportRow extends Component {
albumReleaseId,
tracks,
quality,
language,
size,
rejections,
audioTags,
@ -186,8 +168,7 @@ class InteractiveImportRow extends Component {
isSelectArtistModalOpen,
isSelectAlbumModalOpen,
isSelectTrackModalOpen,
isSelectQualityModalOpen,
isSelectLanguageModalOpen
isSelectQualityModalOpen
} = this.state;
const artistName = artist ? artist.artistName : '';
@ -203,7 +184,6 @@ class InteractiveImportRow extends Component {
const showTrackNumbersPlaceholder = !isSaving && isSelected && !!album && !tracks.length;
const showTrackNumbersLoading = isSaving && !tracks.length;
const showQualityPlaceholder = isSelected && !quality;
const showLanguagePlaceholder = isSelected && !language;
const pathCellContents = (
<div>
@ -288,25 +268,6 @@ class InteractiveImportRow extends Component {
}
</TableRowCellButton>
<TableRowCellButton
className={styles.language}
title="Click to change language"
onPress={this.onSelectLanguagePress}
>
{
showLanguagePlaceholder &&
<InteractiveImportRowCellPlaceholder />
}
{
!showLanguagePlaceholder && !!language &&
<TrackLanguage
className={styles.label}
language={language}
/>
}
</TableRowCellButton>
<TableRowCell>
{formatBytes(size)}
</TableRowCell>
@ -376,13 +337,6 @@ class InteractiveImportRow extends Component {
real={quality ? quality.revision.real > 0 : false}
onModalClose={this.onSelectQualityModalClose}
/>
<SelectLanguageModal
isOpen={isSelectLanguageModalOpen}
id={id}
languageId={language ? language.id : 0}
onModalClose={this.onSelectLanguageModalClose}
/>
</TableRow>
);
}
@ -398,7 +352,6 @@ InteractiveImportRow.propTypes = {
albumReleaseId: PropTypes.number,
tracks: PropTypes.arrayOf(PropTypes.object).isRequired,
quality: PropTypes.object,
language: PropTypes.object,
size: PropTypes.number.isRequired,
rejections: PropTypes.arrayOf(PropTypes.object).isRequired,
audioTags: PropTypes.object.isRequired,

View file

@ -1,37 +0,0 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Modal from 'Components/Modal/Modal';
import SelectLanguageModalContentConnector from './SelectLanguageModalContentConnector';
class SelectLanguageModal extends Component {
//
// Render
render() {
const {
isOpen,
onModalClose,
...otherProps
} = this.props;
return (
<Modal
isOpen={isOpen}
onModalClose={onModalClose}
>
<SelectLanguageModalContentConnector
{...otherProps}
onModalClose={onModalClose}
/>
</Modal>
);
}
}
SelectLanguageModal.propTypes = {
isOpen: PropTypes.bool.isRequired,
onModalClose: PropTypes.func.isRequired
};
export default SelectLanguageModal;

View file

@ -1,87 +0,0 @@
import PropTypes from 'prop-types';
import React from 'react';
import { inputTypes } from 'Helpers/Props';
import Button from 'Components/Link/Button';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup';
import ModalContent from 'Components/Modal/ModalContent';
import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter';
function SelectLanguageModalContent(props) {
const {
languageId,
isFetching,
isPopulated,
error,
items,
onModalClose,
onLanguageSelect
} = props;
const languageOptions = items.map(({ language }) => {
return {
key: language.id,
value: language.name
};
});
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Manual Import - Select Language
</ModalHeader>
<ModalBody>
{
isFetching &&
<LoadingIndicator />
}
{
!isFetching && !!error &&
<div>Unable to load languages</div>
}
{
isPopulated && !error &&
<Form>
<FormGroup>
<FormLabel>Language</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
name="language"
value={languageId}
values={languageOptions}
onChange={onLanguageSelect}
/>
</FormGroup>
</Form>
}
</ModalBody>
<ModalFooter>
<Button onPress={onModalClose}>
Cancel
</Button>
</ModalFooter>
</ModalContent>
);
}
SelectLanguageModalContent.propTypes = {
languageId: PropTypes.number.isRequired,
isFetching: PropTypes.bool.isRequired,
isPopulated: PropTypes.bool.isRequired,
error: PropTypes.object,
items: PropTypes.arrayOf(PropTypes.object).isRequired,
onLanguageSelect: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
export default SelectLanguageModalContent;

View file

@ -1,87 +0,0 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { fetchLanguageProfileSchema } from 'Store/Actions/settingsActions';
import { updateInteractiveImportItem } from 'Store/Actions/interactiveImportActions';
import SelectLanguageModalContent from './SelectLanguageModalContent';
function createMapStateToProps() {
return createSelector(
(state) => state.settings.languageProfiles,
(languageProfiles) => {
const {
isSchemaFetching: isFetching,
isSchemaPopulated: isPopulated,
schemaError: error,
schema
} = languageProfiles;
return {
isFetching,
isPopulated,
error,
items: schema.languages ? [...schema.languages].reverse() : []
};
}
);
}
const mapDispatchToProps = {
fetchLanguageProfileSchema,
updateInteractiveImportItem
};
class SelectLanguageModalContentConnector extends Component {
//
// Lifecycle
componentDidMount = () => {
if (!this.props.isPopulated) {
this.props.fetchLanguageProfileSchema();
}
}
//
// Listeners
onLanguageSelect = ({ value }) => {
const languageId = parseInt(value);
const language = _.find(this.props.items,
(item) => item.language.id === languageId).language;
this.props.updateInteractiveImportItem({
id: this.props.id,
language
});
this.props.onModalClose(true);
}
//
// Render
render() {
return (
<SelectLanguageModalContent
{...this.props}
onLanguageSelect={this.onLanguageSelect}
/>
);
}
}
SelectLanguageModalContentConnector.propTypes = {
id: PropTypes.number.isRequired,
isFetching: PropTypes.bool.isRequired,
isPopulated: PropTypes.bool.isRequired,
error: PropTypes.object,
items: PropTypes.arrayOf(PropTypes.object).isRequired,
fetchLanguageProfileSchema: PropTypes.func.isRequired,
updateInteractiveImportItem: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(SelectLanguageModalContentConnector);