mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-30 19:50:15 -07:00
New: Remove AlbumFolder, Support Nested Track Format
This commit is contained in:
parent
8063a32acd
commit
774a3597de
31 changed files with 207 additions and 288 deletions
|
@ -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>
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ function createMapStateToProps() {
|
|||
|
||||
const artistSettings = _.pick(artist, [
|
||||
'monitored',
|
||||
'albumFolder',
|
||||
'qualityProfileId',
|
||||
'metadataProfileId',
|
||||
'path',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
.albumFolder {
|
||||
composes: cell from '~Components/Table/Cells/TableRowCell.css';
|
||||
|
||||
width: 150px;
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -34,7 +34,6 @@ export const defaultState = {
|
|||
monitor: monitorOptions[0].key,
|
||||
qualityProfileId: 0,
|
||||
metadataProfileId: 0,
|
||||
albumFolder: true,
|
||||
tags: []
|
||||
}
|
||||
};
|
||||
|
|
|
@ -16,7 +16,6 @@ function createImportArtistItemSelector() {
|
|||
return {
|
||||
defaultMonitor: addArtist.defaults.monitor,
|
||||
defaultQualityProfileId: addArtist.defaults.qualityProfileId,
|
||||
defaultAlbumFolder: addArtist.defaults.albumFolder,
|
||||
...item,
|
||||
isExistingArtist
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue