New: Remove AlbumFolder, Support Nested Track Format

This commit is contained in:
Qstick 2021-01-06 21:36:28 +00:00
parent 8063a32acd
commit 774a3597de
31 changed files with 207 additions and 288 deletions

View file

@ -72,7 +72,6 @@ class EditArtistModalContent extends Component {
const {
monitored,
albumFolder,
qualityProfileId,
metadataProfileId,
path,
@ -99,18 +98,6 @@ class EditArtistModalContent extends Component {
/>
</FormGroup>
<FormGroup>
<FormLabel>Use Album Folder</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="albumFolder"
helpText="Sort tracks into album folders"
{...albumFolder}
onChange={onInputChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>Quality Profile</FormLabel>

View file

@ -39,7 +39,6 @@ function createMapStateToProps() {
const artistSettings = _.pick(artist, [
'monitored',
'albumFolder',
'qualityProfileId',
'metadataProfileId',
'path',

View file

@ -27,7 +27,6 @@ class ArtistEditorFooter extends Component {
monitored: NO_CHANGE,
qualityProfileId: NO_CHANGE,
metadataProfileId: NO_CHANGE,
albumFolder: NO_CHANGE,
rootFolderPath: NO_CHANGE,
savingTags: false,
isDeleteArtistModalOpen: false,
@ -48,7 +47,6 @@ class ArtistEditorFooter extends Component {
monitored: NO_CHANGE,
qualityProfileId: NO_CHANGE,
metadataProfileId: NO_CHANGE,
albumFolder: NO_CHANGE,
rootFolderPath: NO_CHANGE,
savingTags: false
});
@ -75,9 +73,6 @@ class ArtistEditorFooter extends Component {
case 'monitored':
this.props.onSaveSelected({ [name]: value === 'monitored' });
break;
case 'albumFolder':
this.props.onSaveSelected({ [name]: value === 'yes' });
break;
default:
this.props.onSaveSelected({ [name]: value });
}
@ -152,7 +147,6 @@ class ArtistEditorFooter extends Component {
monitored,
qualityProfileId,
metadataProfileId,
albumFolder,
rootFolderPath,
savingTags,
isTagsModalOpen,
@ -167,12 +161,6 @@ class ArtistEditorFooter extends Component {
{ key: 'unmonitored', value: 'Unmonitored' }
];
const albumFolderOptions = [
{ key: NO_CHANGE, value: 'No Change', disabled: true },
{ key: 'yes', value: 'Yes' },
{ key: 'no', value: 'No' }
];
return (
<PageContentFooter>
<div className={styles.inputContainer}>
@ -245,28 +233,6 @@ class ArtistEditorFooter extends Component {
);
}
if (name === 'albumFolder') {
return (
<div
key={name}
className={styles.inputContainer}
>
<ArtistEditorFooterLabel
label="Album Folder"
isSaving={isSaving && albumFolder !== NO_CHANGE}
/>
<SelectInput
name="albumFolder"
value={albumFolder}
values={albumFolderOptions}
isDisabled={!selectedCount}
onChange={this.onInputChange}
/>
</div>
);
}
if (name === 'path') {
return (
<div

View file

@ -1,5 +0,0 @@
.albumFolder {
composes: cell from '~Components/Table/Cells/TableRowCell.css';
width: 150px;
}

View file

@ -2,24 +2,14 @@ import PropTypes from 'prop-types';
import React, { Component } from 'react';
import ArtistNameLink from 'Artist/ArtistNameLink';
import ArtistStatusCell from 'Artist/Index/Table/ArtistStatusCell';
import CheckInput from 'Components/Form/CheckInput';
import TableRowCell from 'Components/Table/Cells/TableRowCell';
import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
import TableRow from 'Components/Table/TableRow';
import TagListConnector from 'Components/TagListConnector';
import formatBytes from 'Utilities/Number/formatBytes';
import styles from './ArtistEditorRow.css';
class ArtistEditorRow extends Component {
//
// Listeners
onAlbumFolderChange = () => {
// Mock handler to satisfy `onChange` being required for `CheckInput`.
//
}
//
// Render
@ -33,7 +23,6 @@ class ArtistEditorRow extends Component {
monitored,
metadataProfile,
qualityProfile,
albumFolder,
path,
statistics,
tags,
@ -80,7 +69,6 @@ class ArtistEditorRow extends Component {
return (
<TableRowCell
key={name}
className={styles.title}
>
<ArtistNameLink
foreignArtistId={foreignArtistId}
@ -106,22 +94,6 @@ class ArtistEditorRow extends Component {
);
}
if (name === 'albumFolder') {
return (
<TableRowCell
key={name}
className={styles.albumFolder}
>
<CheckInput
name="albumFolder"
value={albumFolder}
isDisabled={true}
onChange={this.onAlbumFolderChange}
/>
</TableRowCell>
);
}
if (name === 'path') {
return (
<TableRowCell key={name}>
@ -165,7 +137,6 @@ ArtistEditorRow.propTypes = {
monitored: PropTypes.bool.isRequired,
metadataProfile: PropTypes.object.isRequired,
qualityProfile: PropTypes.object.isRequired,
albumFolder: PropTypes.bool.isRequired,
path: PropTypes.string.isRequired,
statistics: PropTypes.object.isRequired,
tags: PropTypes.arrayOf(PropTypes.number).isRequired,

View file

@ -87,7 +87,6 @@ class AddNewAlbumModalContentConnector extends Component {
monitor,
qualityProfileId,
metadataProfileId,
albumFolder,
tags
} = this.props;
@ -97,7 +96,6 @@ class AddNewAlbumModalContentConnector extends Component {
monitor: monitor.value,
qualityProfileId: qualityProfileId.value,
metadataProfileId: metadataProfileId.value,
albumFolder: albumFolder.value,
tags: tags.value,
searchForNewAlbum
});
@ -125,7 +123,6 @@ AddNewAlbumModalContentConnector.propTypes = {
qualityProfileId: PropTypes.object,
metadataProfileId: PropTypes.object,
noneMetadataProfileId: PropTypes.number.isRequired,
albumFolder: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onModalClose: PropTypes.func.isRequired,
setAddDefault: PropTypes.func.isRequired,

View file

@ -59,7 +59,6 @@ class AddNewArtistModalContentConnector extends Component {
monitor,
qualityProfileId,
metadataProfileId,
albumFolder,
tags
} = this.props;
@ -69,7 +68,6 @@ class AddNewArtistModalContentConnector extends Component {
monitor: monitor.value,
qualityProfileId: qualityProfileId.value,
metadataProfileId: metadataProfileId.value,
albumFolder: albumFolder.value,
tags: tags.value,
searchForMissingAlbums
});
@ -95,7 +93,6 @@ AddNewArtistModalContentConnector.propTypes = {
monitor: PropTypes.object.isRequired,
qualityProfileId: PropTypes.object,
metadataProfileId: PropTypes.object,
albumFolder: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onModalClose: PropTypes.func.isRequired,
setAddDefault: PropTypes.func.isRequired,

View file

@ -35,7 +35,6 @@ class AddArtistOptionsForm extends Component {
metadataProfileId,
includeNoneMetadataProfile,
showMetadataProfile,
albumFolder,
tags,
onInputChange,
...otherProps
@ -119,17 +118,6 @@ class AddArtistOptionsForm extends Component {
/>
</FormGroup>
<FormGroup>
<FormLabel>Album Folder</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="albumFolder"
onChange={onInputChange}
{...albumFolder}
/>
</FormGroup>
<FormGroup>
<FormLabel>Tags</FormLabel>
@ -152,7 +140,6 @@ AddArtistOptionsForm.propTypes = {
metadataProfileId: PropTypes.object,
showMetadataProfile: PropTypes.bool.isRequired,
includeNoneMetadataProfile: PropTypes.bool.isRequired,
albumFolder: PropTypes.object.isRequired,
tags: PropTypes.object.isRequired,
onInputChange: PropTypes.func.isRequired
};

View file

@ -61,16 +61,6 @@ class Naming extends Component {
});
}
onAlbumFolderNamingModalOpenClick = () => {
this.setState({
isNamingModalOpen: true,
namingModalOptions: {
name: 'albumFolderFormat',
album: true
}
});
}
onNamingModalClose = () => {
this.setState({ isNamingModalOpen: false });
}
@ -103,8 +93,6 @@ class Naming extends Component {
const multiDiscTrackFormatErrors = [];
const artistFolderFormatHelpTexts = [];
const artistFolderFormatErrors = [];
const albumFolderFormatHelpTexts = [];
const albumFolderFormatErrors = [];
if (examplesPopulated) {
if (examples.singleTrackExample) {
@ -124,12 +112,6 @@ class Naming extends Component {
} else {
artistFolderFormatErrors.push({ message: 'Invalid Format' });
}
if (examples.albumFolderExample) {
albumFolderFormatHelpTexts.push(`Example: ${examples.albumFolderExample}`);
} else {
albumFolderFormatErrors.push({ message: 'Invalid Format' });
}
}
return (
@ -225,21 +207,6 @@ class Naming extends Component {
/>
</FormGroup>
<FormGroup>
<FormLabel>Album Folder Format</FormLabel>
<FormInputGroup
inputClassName={styles.namingInput}
type={inputTypes.TEXT}
name="albumFolderFormat"
buttons={<FormInputButton onPress={this.onAlbumFolderNamingModalOpenClick}>?</FormInputButton>}
onChange={onInputChange}
{...settings.albumFolderFormat}
helpTexts={albumFolderFormatHelpTexts}
errors={[...albumFolderFormatErrors, ...settings.albumFolderFormat.errors]}
/>
</FormGroup>
{
namingModalOptions &&
<NamingModal

View file

@ -34,7 +34,6 @@ export const defaultState = {
monitor: monitorOptions[0].key,
qualityProfileId: 0,
metadataProfileId: 0,
albumFolder: true,
tags: []
}
};

View file

@ -16,7 +16,6 @@ function createImportArtistItemSelector() {
return {
defaultMonitor: addArtist.defaults.monitor,
defaultQualityProfileId: addArtist.defaults.qualityProfileId,
defaultAlbumFolder: addArtist.defaults.albumFolder,
...item,
isExistingArtist
};

View file

@ -6,7 +6,6 @@ function getNewArtist(artist, payload) {
qualityProfileId,
metadataProfileId,
artistType,
albumFolder,
tags,
searchForMissingAlbums = false
} = payload;
@ -22,7 +21,6 @@ function getNewArtist(artist, payload) {
artist.metadataProfileId = metadataProfileId;
artist.rootFolderPath = rootFolderPath;
artist.artistType = artistType;
artist.albumFolder = albumFolder;
artist.tags = tags;
return artist;