mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-25 22:36:59 -04:00
Renames in Frontend
This commit is contained in:
+6
-6
@@ -31,7 +31,7 @@ function EditImportListExclusionModalContent(props) {
|
||||
} = props;
|
||||
|
||||
const {
|
||||
artistName,
|
||||
authorName,
|
||||
foreignId
|
||||
} = item;
|
||||
|
||||
@@ -62,9 +62,9 @@ function EditImportListExclusionModalContent(props) {
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="artistName"
|
||||
helpText="The name of the artist/album to exclude (can be anything meaningful)"
|
||||
{...artistName}
|
||||
name="authorName"
|
||||
helpText="The name of the author/book to exclude (can be anything meaningful)"
|
||||
{...authorName}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
@@ -75,7 +75,7 @@ function EditImportListExclusionModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="foreignId"
|
||||
helpText="The Musicbrainz Id of the artist/album to exclude"
|
||||
helpText="The Musicbrainz Id of the author/book to exclude"
|
||||
{...foreignId}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
@@ -115,7 +115,7 @@ function EditImportListExclusionModalContent(props) {
|
||||
}
|
||||
|
||||
const ImportListExclusionShape = {
|
||||
artistName: PropTypes.shape(stringSettingShape).isRequired,
|
||||
authorName: PropTypes.shape(stringSettingShape).isRequired,
|
||||
foreignId: PropTypes.shape(stringSettingShape).isRequired
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import { setImportListExclusionValue, saveImportListExclusion } from 'Store/Acti
|
||||
import EditImportListExclusionModalContent from './EditImportListExclusionModalContent';
|
||||
|
||||
const newImportListExclusion = {
|
||||
artistName: '',
|
||||
authorName: '',
|
||||
foreignId: ''
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.artistName {
|
||||
.authorName {
|
||||
flex: 0 0 300px;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class ImportListExclusion extends Component {
|
||||
render() {
|
||||
const {
|
||||
id,
|
||||
artistName,
|
||||
authorName,
|
||||
foreignId
|
||||
} = this.props;
|
||||
|
||||
@@ -64,7 +64,7 @@ class ImportListExclusion extends Component {
|
||||
styles.importListExclusion
|
||||
)}
|
||||
>
|
||||
<div className={styles.artistName}>{artistName}</div>
|
||||
<div className={styles.authorName}>{authorName}</div>
|
||||
<div className={styles.foreignId}>{foreignId}</div>
|
||||
|
||||
<div className={styles.actions}>
|
||||
@@ -98,7 +98,7 @@ class ImportListExclusion extends Component {
|
||||
|
||||
ImportListExclusion.propTypes = {
|
||||
id: PropTypes.number.isRequired,
|
||||
artistName: PropTypes.string.isRequired,
|
||||
authorName: PropTypes.string.isRequired,
|
||||
foreignId: PropTypes.string.isRequired,
|
||||
onConfirmDeleteImportListExclusion: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
@@ -50,7 +50,7 @@ class AddImportListModalContent extends Component {
|
||||
<div>
|
||||
|
||||
<Alert kind={kinds.INFO}>
|
||||
<div>Readarr supports multiple lists for importing Albums and Artists into the database.</div>
|
||||
<div>Readarr supports multiple lists for importing Books and Authors into the database.</div>
|
||||
<div>For more information on the individual lists, click on the info buttons.</div>
|
||||
</Alert>
|
||||
{
|
||||
|
||||
@@ -44,8 +44,8 @@ function EditImportListModalContent(props) {
|
||||
|
||||
const monitorOptions = [
|
||||
{ key: 'none', value: 'None' },
|
||||
{ key: 'specificAlbum', value: 'Specific Book' },
|
||||
{ key: 'entireArtist', value: 'All Author Books' }
|
||||
{ key: 'specificBook', value: 'Specific Book' },
|
||||
{ key: 'entireAuthor', value: 'All Author Books' }
|
||||
];
|
||||
|
||||
const {
|
||||
|
||||
@@ -34,7 +34,7 @@ const downloadPropersAndRepacksOptions = [
|
||||
|
||||
const fileDateOptions = [
|
||||
{ key: 'none', value: 'None' },
|
||||
{ key: 'albumReleaseDate', value: 'Album Release Date' }
|
||||
{ key: 'bookReleaseDate', value: 'Book Release Date' }
|
||||
];
|
||||
|
||||
class MediaManagement extends Component {
|
||||
@@ -96,14 +96,14 @@ class MediaManagement extends Component {
|
||||
isAdvanced={true}
|
||||
size={sizes.MEDIUM}
|
||||
>
|
||||
<FormLabel>Create empty artist folders</FormLabel>
|
||||
<FormLabel>Create empty author folders</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="createEmptyArtistFolders"
|
||||
helpText="Create missing artist folders during disk scan"
|
||||
name="createEmptyAuthorFolders"
|
||||
helpText="Create missing author folders during disk scan"
|
||||
onChange={onInputChange}
|
||||
{...settings.createEmptyArtistFolders}
|
||||
{...settings.createEmptyAuthorFolders}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
@@ -117,7 +117,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="deleteEmptyFolders"
|
||||
helpText="Delete empty artist and album folders during disk scan and when track files are deleted"
|
||||
helpText="Delete empty author folders during disk scan and when book files are deleted"
|
||||
onChange={onInputChange}
|
||||
{...settings.deleteEmptyFolders}
|
||||
/>
|
||||
@@ -142,7 +142,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="skipFreeSpaceCheckWhenImporting"
|
||||
helpText="Use when Readarr is unable to detect free space from your artist root folder"
|
||||
helpText="Use when Readarr is unable to detect free space from your author root folder"
|
||||
onChange={onInputChange}
|
||||
{...settings.skipFreeSpaceCheckWhenImporting}
|
||||
/>
|
||||
@@ -189,7 +189,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="importExtraFiles"
|
||||
helpText="Import matching extra files (subtitles, nfo, etc) after importing an track file"
|
||||
helpText="Import matching extra files (subtitles, nfo, etc) after importing an book file"
|
||||
onChange={onInputChange}
|
||||
{...settings.importExtraFiles}
|
||||
/>
|
||||
@@ -222,14 +222,14 @@ class MediaManagement extends Component {
|
||||
legend="File Management"
|
||||
>
|
||||
<FormGroup size={sizes.MEDIUM}>
|
||||
<FormLabel>Ignore Deleted Tracks</FormLabel>
|
||||
<FormLabel>Ignore Deleted Books</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="autoUnmonitorPreviouslyDownloadedTracks"
|
||||
helpText="Tracks deleted from disk are automatically unmonitored in Readarr"
|
||||
name="autoUnmonitorPreviouslyDownloadedBooks"
|
||||
helpText="Books deleted from disk are automatically unmonitored in Readarr"
|
||||
onChange={onInputChange}
|
||||
{...settings.autoUnmonitorPreviouslyDownloadedTracks}
|
||||
{...settings.autoUnmonitorPreviouslyDownloadedBooks}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
@@ -278,12 +278,12 @@ class MediaManagement extends Component {
|
||||
advancedSettings={advancedSettings}
|
||||
isAdvanced={true}
|
||||
>
|
||||
<FormLabel>Rescan Artist Folder after Refresh</FormLabel>
|
||||
<FormLabel>Rescan Author Folder after Refresh</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.SELECT}
|
||||
name="rescanAfterRefresh"
|
||||
helpText="Rescan the artist folder after refreshing the artist"
|
||||
helpText="Rescan the author folder after refreshing the author"
|
||||
helpTextWarning="Readarr will not automatically detect changes to files when not set to 'Always'"
|
||||
values={rescanAfterRefreshOptions}
|
||||
onChange={onInputChange}
|
||||
@@ -300,7 +300,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.SELECT}
|
||||
name="allowFingerprinting"
|
||||
helpText="Use fingerprinting to improve accuracy of track matching"
|
||||
helpText="Use fingerprinting to improve accuracy of book matching"
|
||||
helpTextWarning="This requires Readarr to read parts of the file which will slow down scans and may cause high disk or network activity."
|
||||
values={allowFingerprintingOptions}
|
||||
onChange={onInputChange}
|
||||
@@ -333,7 +333,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.PATH}
|
||||
name="recycleBin"
|
||||
helpText="Track files will go here when deleted instead of being permanently deleted"
|
||||
helpText="Book files will go here when deleted instead of being permanently deleted"
|
||||
onChange={onInputChange}
|
||||
{...settings.recycleBin}
|
||||
/>
|
||||
@@ -403,7 +403,7 @@ class MediaManagement extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="folderChmod"
|
||||
helpText="Octal, applied to artist/album folders created by Readarr"
|
||||
helpText="Octal, applied to author/book folders created by Readarr"
|
||||
values={fileDateOptions}
|
||||
onChange={onInputChange}
|
||||
{...settings.folderChmod}
|
||||
|
||||
@@ -33,8 +33,7 @@ class Naming extends Component {
|
||||
isNamingModalOpen: true,
|
||||
namingModalOptions: {
|
||||
name: 'standardBookFormat',
|
||||
album: true,
|
||||
track: true,
|
||||
book: true,
|
||||
additional: true
|
||||
}
|
||||
});
|
||||
@@ -81,21 +80,21 @@ class Naming extends Component {
|
||||
const authorFolderFormatErrors = [];
|
||||
|
||||
if (examplesPopulated) {
|
||||
if (examples.singleTrackExample) {
|
||||
standardBookFormatHelpTexts.push(`Single Track: ${examples.singleTrackExample}`);
|
||||
if (examples.singleBookExample) {
|
||||
standardBookFormatHelpTexts.push(`Single Book: ${examples.singleBookExample}`);
|
||||
} else {
|
||||
standardBookFormatErrors.push({ message: 'Single Track: Invalid Format' });
|
||||
standardBookFormatErrors.push({ message: 'Single Book: Invalid Format' });
|
||||
}
|
||||
|
||||
if (examples.artistFolderExample) {
|
||||
authorFolderFormatHelpTexts.push(`Example: ${examples.artistFolderExample}`);
|
||||
if (examples.authorFolderExample) {
|
||||
authorFolderFormatHelpTexts.push(`Example: ${examples.authorFolderExample}`);
|
||||
} else {
|
||||
authorFolderFormatErrors.push({ message: 'Invalid Format' });
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<FieldSet legend="Track Naming">
|
||||
<FieldSet legend="Book Naming">
|
||||
{
|
||||
isFetching &&
|
||||
<LoadingIndicator />
|
||||
@@ -110,7 +109,7 @@ class Naming extends Component {
|
||||
hasSettings && !isFetching && !error &&
|
||||
<Form>
|
||||
<FormGroup size={sizes.MEDIUM}>
|
||||
<FormLabel>Rename Tracks</FormLabel>
|
||||
<FormLabel>Rename Books</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
@@ -157,7 +156,7 @@ class Naming extends Component {
|
||||
advancedSettings={advancedSettings}
|
||||
isAdvanced={true}
|
||||
>
|
||||
<FormLabel>Artist Folder Format</FormLabel>
|
||||
<FormLabel>Author Folder Format</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
inputClassName={styles.namingInput}
|
||||
@@ -166,7 +165,7 @@ class Naming extends Component {
|
||||
buttons={<FormInputButton onPress={this.onAuthorFolderNamingModalOpenClick}>?</FormInputButton>}
|
||||
onChange={onInputChange}
|
||||
{...settings.authorFolderFormat}
|
||||
helpTexts={['Used when adding a new artist or moving an author via the author editor', ...authorFolderFormatHelpTexts]}
|
||||
helpTexts={['Used when adding a new author or moving an author via the author editor', ...authorFolderFormatHelpTexts]}
|
||||
errors={[...authorFolderFormatErrors, ...settings.authorFolderFormat.errors]}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
@@ -28,16 +28,16 @@ const caseOptions = [
|
||||
|
||||
const fileNameTokens = [
|
||||
{
|
||||
token: '{Author Name} - {Book Title} - {track:00} - {Track Title} {Quality Full}',
|
||||
example: 'Author Name - Book Title - 01 - Track Title MP3-320 Proper'
|
||||
token: '{Author Name} - {Book Title} - {Quality Full}',
|
||||
example: 'Author Name - Book Title - MP3-320 Proper'
|
||||
},
|
||||
{
|
||||
token: '{Author.Name}.{Book.Title}.{track:00}.{TrackClean.Title}.{Quality.Full}',
|
||||
example: 'Author.Name.Book.Title.01.Track.Title.MP3-320'
|
||||
token: '{Author.Name}.{Book.Title}.{Quality.Full}',
|
||||
example: 'Author.Name.Book.Title.MP3-320'
|
||||
}
|
||||
];
|
||||
|
||||
const artistTokens = [
|
||||
const authorTokens = [
|
||||
{ token: '{Author Name}', example: 'Author Name' },
|
||||
|
||||
{ token: '{Author NameThe}', example: 'Author Name, The' },
|
||||
@@ -47,7 +47,7 @@ const artistTokens = [
|
||||
{ token: '{Author Disambiguation}', example: 'Disambiguation' }
|
||||
];
|
||||
|
||||
const albumTokens = [
|
||||
const bookTokens = [
|
||||
{ token: '{Book Title}', example: 'Book Title' },
|
||||
|
||||
{ token: '{Book TitleThe}', example: 'Book Title, The' },
|
||||
@@ -68,20 +68,10 @@ const mediumFormatTokens = [
|
||||
{ token: '{Medium Format}', example: 'CD' }
|
||||
];
|
||||
|
||||
const trackTokens = [
|
||||
{ token: '{track:0}', example: '1' },
|
||||
{ token: '{track:00}', example: '01' }
|
||||
];
|
||||
|
||||
const releaseDateTokens = [
|
||||
{ token: '{Release Year}', example: '2016' }
|
||||
];
|
||||
|
||||
const trackTitleTokens = [
|
||||
{ token: '{Track Title}', example: 'Track Title' },
|
||||
{ token: '{Track CleanTitle}', example: 'Track Title' }
|
||||
];
|
||||
|
||||
const qualityTokens = [
|
||||
{ token: '{Quality Full}', example: 'FLAC Proper' },
|
||||
{ token: '{Quality Title}', example: 'FLAC' }
|
||||
@@ -102,7 +92,7 @@ const otherTokens = [
|
||||
|
||||
const originalTokens = [
|
||||
{ token: '{Original Title}', example: 'Author.Name.Book.Name.2018.FLAC-EVOLVE' },
|
||||
{ token: '{Original Filename}', example: '01 - track name' }
|
||||
{ token: '{Original Filename}', example: '01 - book name' }
|
||||
];
|
||||
|
||||
class NamingModal extends Component {
|
||||
@@ -175,8 +165,7 @@ class NamingModal extends Component {
|
||||
value,
|
||||
isOpen,
|
||||
advancedSettings,
|
||||
album,
|
||||
track,
|
||||
book,
|
||||
additional,
|
||||
onInputChange,
|
||||
onModalClose
|
||||
@@ -246,7 +235,7 @@ class NamingModal extends Component {
|
||||
<FieldSet legend="Author">
|
||||
<div className={styles.groups}>
|
||||
{
|
||||
artistTokens.map(({ token, example }) => {
|
||||
authorTokens.map(({ token, example }) => {
|
||||
return (
|
||||
<NamingOption
|
||||
key={token}
|
||||
@@ -266,12 +255,12 @@ class NamingModal extends Component {
|
||||
</FieldSet>
|
||||
|
||||
{
|
||||
album &&
|
||||
book &&
|
||||
<div>
|
||||
<FieldSet legend="Book">
|
||||
<div className={styles.groups}>
|
||||
{
|
||||
albumTokens.map(({ token, example }) => {
|
||||
bookTokens.map(({ token, example }) => {
|
||||
return (
|
||||
<NamingOption
|
||||
key={token}
|
||||
@@ -315,7 +304,7 @@ class NamingModal extends Component {
|
||||
}
|
||||
|
||||
{
|
||||
track &&
|
||||
book &&
|
||||
<div>
|
||||
<FieldSet legend="Medium">
|
||||
<div className={styles.groups}>
|
||||
@@ -361,56 +350,12 @@ class NamingModal extends Component {
|
||||
</div>
|
||||
</FieldSet>
|
||||
|
||||
<FieldSet legend="Track">
|
||||
<div className={styles.groups}>
|
||||
{
|
||||
trackTokens.map(({ token, example }) => {
|
||||
return (
|
||||
<NamingOption
|
||||
key={token}
|
||||
name={name}
|
||||
value={value}
|
||||
token={token}
|
||||
example={example}
|
||||
tokenSeparator={tokenSeparator}
|
||||
tokenCase={tokenCase}
|
||||
onPress={this.onOptionPress}
|
||||
/>
|
||||
);
|
||||
}
|
||||
)
|
||||
}
|
||||
</div>
|
||||
</FieldSet>
|
||||
|
||||
</div>
|
||||
}
|
||||
|
||||
{
|
||||
additional &&
|
||||
<div>
|
||||
<FieldSet legend="Track Title">
|
||||
<div className={styles.groups}>
|
||||
{
|
||||
trackTitleTokens.map(({ token, example }) => {
|
||||
return (
|
||||
<NamingOption
|
||||
key={token}
|
||||
name={name}
|
||||
value={value}
|
||||
token={token}
|
||||
example={example}
|
||||
tokenSeparator={tokenSeparator}
|
||||
tokenCase={tokenCase}
|
||||
onPress={this.onOptionPress}
|
||||
/>
|
||||
);
|
||||
}
|
||||
)
|
||||
}
|
||||
</div>
|
||||
</FieldSet>
|
||||
|
||||
<FieldSet legend="Quality">
|
||||
<div className={styles.groups}>
|
||||
{
|
||||
@@ -525,16 +470,14 @@ NamingModal.propTypes = {
|
||||
value: PropTypes.string.isRequired,
|
||||
isOpen: PropTypes.bool.isRequired,
|
||||
advancedSettings: PropTypes.bool.isRequired,
|
||||
album: PropTypes.bool.isRequired,
|
||||
track: PropTypes.bool.isRequired,
|
||||
book: PropTypes.bool.isRequired,
|
||||
additional: PropTypes.bool.isRequired,
|
||||
onInputChange: PropTypes.func.isRequired,
|
||||
onModalClose: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
NamingModal.defaultProps = {
|
||||
album: false,
|
||||
track: false,
|
||||
book: false,
|
||||
additional: false
|
||||
};
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ import FormGroup from 'Components/Form/FormGroup';
|
||||
import FormLabel from 'Components/Form/FormLabel';
|
||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||
import Popover from 'Components/Tooltip/Popover';
|
||||
import ArtistMonitoringOptionsPopoverContent from 'AddArtist/ArtistMonitoringOptionsPopoverContent';
|
||||
import ArtistMetadataProfilePopoverContent from 'AddArtist/ArtistMetadataProfilePopoverContent';
|
||||
import AuthorMonitoringOptionsPopoverContent from 'AddAuthor/AuthorMonitoringOptionsPopoverContent';
|
||||
import AuthorMetadataProfilePopoverContent from 'AddAuthor/AuthorMetadataProfilePopoverContent';
|
||||
import styles from './EditRootFolderModalContent.css';
|
||||
|
||||
function EditRootFolderModalContent(props) {
|
||||
@@ -227,13 +227,13 @@ function EditRootFolderModalContent(props) {
|
||||
/>
|
||||
}
|
||||
title="Monitoring Options"
|
||||
body={<ArtistMonitoringOptionsPopoverContent />}
|
||||
body={<AuthorMonitoringOptionsPopoverContent />}
|
||||
position={tooltipPositions.RIGHT}
|
||||
/>
|
||||
</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.MONITOR_ALBUMS_SELECT}
|
||||
type={inputTypes.MONITOR_BOOKS_SELECT}
|
||||
name="defaultMonitorOption"
|
||||
onChange={onInputChange}
|
||||
{...defaultMonitorOption}
|
||||
@@ -265,7 +265,7 @@ function EditRootFolderModalContent(props) {
|
||||
/>
|
||||
}
|
||||
title="Metadata Profile"
|
||||
body={<ArtistMetadataProfilePopoverContent />}
|
||||
body={<AuthorMetadataProfilePopoverContent />}
|
||||
position={tooltipPositions.RIGHT}
|
||||
/>
|
||||
</FormLabel>
|
||||
|
||||
@@ -96,7 +96,7 @@ function EditNotificationModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.TAG}
|
||||
name="tags"
|
||||
helpText="Only send notifications for artist with at least one matching tag"
|
||||
helpText="Only send notifications for author with at least one matching tag"
|
||||
{...tags}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
|
||||
@@ -110,7 +110,7 @@ function EditDelayProfileModalContent(props) {
|
||||
{
|
||||
id === 1 ?
|
||||
<Alert>
|
||||
This is the default profile. It applies to all artist that don't have an explicit profile.
|
||||
This is the default profile. It applies to all author that don't have an explicit profile.
|
||||
</Alert> :
|
||||
|
||||
<FormGroup>
|
||||
@@ -120,7 +120,7 @@ function EditDelayProfileModalContent(props) {
|
||||
type={inputTypes.TAG}
|
||||
name="tags"
|
||||
{...tags}
|
||||
helpText="Applies to artist with at least one matching tag"
|
||||
helpText="Applies to author with at least one matching tag"
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
@@ -161,7 +161,7 @@ function EditMetadataProfileModalContent(props) {
|
||||
id &&
|
||||
<div
|
||||
className={styles.deleteButtonContainer}
|
||||
title={isInUse ? 'Can\'t delete a metadata profile that is attached to an artist or import list' : undefined}
|
||||
title={isInUse ? 'Can\'t delete a metadata profile that is attached to an author or import list' : undefined}
|
||||
>
|
||||
<Button
|
||||
kind={kinds.DANGER}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.albumTypes {
|
||||
.bookTypes {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 5px;
|
||||
|
||||
@@ -182,7 +182,7 @@ class EditQualityProfileModalContent extends Component {
|
||||
name="cutoff"
|
||||
{...cutoff}
|
||||
values={qualities}
|
||||
helpText="Once this quality is reached Readarr will no longer download albums"
|
||||
helpText="Once this quality is reached Readarr will no longer download books"
|
||||
onChange={onCutoffChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
@@ -216,7 +216,7 @@ class EditQualityProfileModalContent extends Component {
|
||||
id &&
|
||||
<div
|
||||
className={styles.deleteButtonContainer}
|
||||
title={isInUse ? 'Can\'t delete a quality profile that is attached to an artist or import list' : undefined}
|
||||
title={isInUse ? 'Can\'t delete a quality profile that is attached to an author or import list' : undefined}
|
||||
>
|
||||
<Button
|
||||
kind={kinds.DANGER}
|
||||
|
||||
@@ -111,7 +111,7 @@ function EditReleaseProfileModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.TAG}
|
||||
name="tags"
|
||||
helpText="Release profiles will apply to artists with at least one matching tag. Leave blank to apply to all artists"
|
||||
helpText="Release profiles will apply to authors with at least one matching tag. Leave blank to apply to all authors"
|
||||
{...tags}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
|
||||
@@ -52,7 +52,7 @@ class QualityDefinitions extends Component {
|
||||
|
||||
<div className={styles.sizeLimitHelpTextContainer}>
|
||||
<div className={styles.sizeLimitHelpText}>
|
||||
Limits are automatically adjusted for the album duration.
|
||||
Limits are automatically adjusted for the book duration.
|
||||
</div>
|
||||
</div>
|
||||
</PageSectionContent>
|
||||
|
||||
@@ -98,7 +98,7 @@ function Settings() {
|
||||
</Link>
|
||||
|
||||
<div className={styles.summary}>
|
||||
Create metadata files when tracks are imported or artist are refreshed
|
||||
Create metadata files when books are imported or author are refreshed
|
||||
</div>
|
||||
|
||||
<Link
|
||||
@@ -109,7 +109,7 @@ function Settings() {
|
||||
</Link>
|
||||
|
||||
<div className={styles.summary}>
|
||||
Manage artist, profile, restriction, and notification tags
|
||||
Manage author, profile, restriction, and notification tags
|
||||
</div>
|
||||
|
||||
<Link
|
||||
|
||||
@@ -16,7 +16,7 @@ function TagDetailsModalContent(props) {
|
||||
const {
|
||||
label,
|
||||
isTagUsed,
|
||||
artist,
|
||||
author,
|
||||
delayProfiles,
|
||||
importLists,
|
||||
notifications,
|
||||
@@ -38,13 +38,13 @@ function TagDetailsModalContent(props) {
|
||||
}
|
||||
|
||||
{
|
||||
!!artist.length &&
|
||||
<FieldSet legend="Artists">
|
||||
!!author.length &&
|
||||
<FieldSet legend="Authors">
|
||||
{
|
||||
artist.map((item) => {
|
||||
author.map((item) => {
|
||||
return (
|
||||
<div key={item.id}>
|
||||
{item.artistName}
|
||||
{item.authorName}
|
||||
</div>
|
||||
);
|
||||
})
|
||||
@@ -184,7 +184,7 @@ function TagDetailsModalContent(props) {
|
||||
TagDetailsModalContent.propTypes = {
|
||||
label: PropTypes.string.isRequired,
|
||||
isTagUsed: PropTypes.bool.isRequired,
|
||||
artist: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
author: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
delayProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
importLists: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
notifications: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector';
|
||||
import createAllAuthorSelector from 'Store/Selectors/createAllAuthorsSelector';
|
||||
import TagDetailsModalContent from './TagDetailsModalContent';
|
||||
|
||||
function findMatchingItems(ids, items) {
|
||||
@@ -9,10 +9,10 @@ function findMatchingItems(ids, items) {
|
||||
});
|
||||
}
|
||||
|
||||
function createMatchingArtistSelector() {
|
||||
function createMatchingAuthorSelector() {
|
||||
return createSelector(
|
||||
(state, { authorIds }) => authorIds,
|
||||
createAllArtistSelector(),
|
||||
createAllAuthorSelector(),
|
||||
findMatchingItems
|
||||
);
|
||||
}
|
||||
@@ -51,14 +51,14 @@ function createMatchingReleaseProfilesSelector() {
|
||||
|
||||
function createMapStateToProps() {
|
||||
return createSelector(
|
||||
createMatchingArtistSelector(),
|
||||
createMatchingAuthorSelector(),
|
||||
createMatchingDelayProfilesSelector(),
|
||||
createMatchingImportListsSelector(),
|
||||
createMatchingNotificationsSelector(),
|
||||
createMatchingReleaseProfilesSelector(),
|
||||
(artist, delayProfiles, importLists, notifications, releaseProfiles) => {
|
||||
(author, delayProfiles, importLists, notifications, releaseProfiles) => {
|
||||
return {
|
||||
artist,
|
||||
author,
|
||||
delayProfiles,
|
||||
importLists,
|
||||
notifications,
|
||||
|
||||
@@ -88,7 +88,7 @@ class Tag extends Component {
|
||||
{
|
||||
!!authorIds.length &&
|
||||
<div>
|
||||
{authorIds.length} artists
|
||||
{authorIds.length} authors
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ function Tags(props) {
|
||||
|
||||
if (!items.length) {
|
||||
return (
|
||||
<div>No tags have been added yet. Add tags to link artists with delay profiles, restrictions, or notifications. Click <Link to='https://github.com/readarr/Readarr/wiki/Tags'>here</Link> to find out more about tags in Readarr.</div>
|
||||
<div>No tags have been added yet. Add tags to link authors with delay profiles, restrictions, or notifications. Click <Link to='https://github.com/readarr/Readarr/wiki/Tags'>here</Link> to find out more about tags in Readarr.</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -180,10 +180,10 @@ class UISettings extends Component {
|
||||
<div className={styles.columnGroup}>
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="expandAlbumByDefault"
|
||||
helpText="Albums"
|
||||
name="expandBookByDefault"
|
||||
helpText="Books"
|
||||
onChange={onInputChange}
|
||||
{...settings.expandAlbumByDefault}
|
||||
{...settings.expandBookByDefault}
|
||||
/>
|
||||
|
||||
<FormInputGroup
|
||||
|
||||
Reference in New Issue
Block a user