mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-24 22:35:39 -04:00
New: Readarr 0.1
This commit is contained in:
@@ -11,6 +11,7 @@ import FormGroup from 'Components/Form/FormGroup';
|
||||
import FormLabel from 'Components/Form/FormLabel';
|
||||
import FormInputGroup from 'Components/Form/FormInputGroup';
|
||||
import RootFoldersConnector from './RootFolder/RootFoldersConnector';
|
||||
import RemotePathMappingsConnector from 'Settings/DownloadClients/RemotePathMappings/RemotePathMappingsConnector';
|
||||
import NamingConnector from './Naming/NamingConnector';
|
||||
|
||||
const rescanAfterRefreshOptions = [
|
||||
@@ -64,6 +65,7 @@ class MediaManagement extends Component {
|
||||
|
||||
<PageContentBodyConnector>
|
||||
<RootFoldersConnector />
|
||||
<RemotePathMappingsConnector />
|
||||
<NamingConnector />
|
||||
|
||||
{
|
||||
|
||||
@@ -40,18 +40,6 @@ class Naming extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
onMultiDiscNamingModalOpenClick = () => {
|
||||
this.setState({
|
||||
isNamingModalOpen: true,
|
||||
namingModalOptions: {
|
||||
name: 'multiDiscTrackFormat',
|
||||
album: true,
|
||||
track: true,
|
||||
additional: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onArtistFolderNamingModalOpenClick = () => {
|
||||
this.setState({
|
||||
isNamingModalOpen: true,
|
||||
@@ -61,16 +49,6 @@ class Naming extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
onAlbumFolderNamingModalOpenClick = () => {
|
||||
this.setState({
|
||||
isNamingModalOpen: true,
|
||||
namingModalOptions: {
|
||||
name: 'albumFolderFormat',
|
||||
album: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onNamingModalClose = () => {
|
||||
this.setState({ isNamingModalOpen: false });
|
||||
}
|
||||
@@ -99,12 +77,8 @@ class Naming extends Component {
|
||||
|
||||
const standardTrackFormatHelpTexts = [];
|
||||
const standardTrackFormatErrors = [];
|
||||
const multiDiscTrackFormatHelpTexts = [];
|
||||
const multiDiscTrackFormatErrors = [];
|
||||
const artistFolderFormatHelpTexts = [];
|
||||
const artistFolderFormatErrors = [];
|
||||
const albumFolderFormatHelpTexts = [];
|
||||
const albumFolderFormatErrors = [];
|
||||
|
||||
if (examplesPopulated) {
|
||||
if (examples.singleTrackExample) {
|
||||
@@ -113,23 +87,11 @@ class Naming extends Component {
|
||||
standardTrackFormatErrors.push({ message: 'Single Track: Invalid Format' });
|
||||
}
|
||||
|
||||
if (examples.multiDiscTrackExample) {
|
||||
multiDiscTrackFormatHelpTexts.push(`Multi Disc Track: ${examples.multiDiscTrackExample}`);
|
||||
} else {
|
||||
multiDiscTrackFormatErrors.push({ message: 'Single Track: Invalid Format' });
|
||||
}
|
||||
|
||||
if (examples.artistFolderExample) {
|
||||
artistFolderFormatHelpTexts.push(`Example: ${examples.artistFolderExample}`);
|
||||
} else {
|
||||
artistFolderFormatErrors.push({ message: 'Invalid Format' });
|
||||
}
|
||||
|
||||
if (examples.albumFolderExample) {
|
||||
albumFolderFormatHelpTexts.push(`Example: ${examples.albumFolderExample}`);
|
||||
} else {
|
||||
albumFolderFormatErrors.push({ message: 'Invalid Format' });
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -188,22 +150,6 @@ class Naming extends Component {
|
||||
errors={[...standardTrackFormatErrors, ...settings.standardTrackFormat.errors]}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup size={sizes.LARGE}>
|
||||
<FormLabel>Multi Disc Track Format</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
inputClassName={styles.namingInput}
|
||||
type={inputTypes.TEXT}
|
||||
name="multiDiscTrackFormat"
|
||||
buttons={<FormInputButton onPress={this.onMultiDiscNamingModalOpenClick}>?</FormInputButton>}
|
||||
onChange={onInputChange}
|
||||
{...settings.multiDiscTrackFormat}
|
||||
helpTexts={multiDiscTrackFormatHelpTexts}
|
||||
errors={[...multiDiscTrackFormatErrors, ...settings.multiDiscTrackFormat.errors]}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -225,21 +171,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
|
||||
|
||||
@@ -42,7 +42,16 @@ function EditRootFolderModalContent(props) {
|
||||
defaultQualityProfileId,
|
||||
defaultMetadataProfileId,
|
||||
defaultMonitorOption,
|
||||
defaultTags
|
||||
defaultTags,
|
||||
isCalibreLibrary,
|
||||
host,
|
||||
port,
|
||||
urlBase,
|
||||
username,
|
||||
password,
|
||||
outputFormat,
|
||||
outputProfile,
|
||||
useSsl
|
||||
} = item;
|
||||
|
||||
return (
|
||||
@@ -83,13 +92,129 @@ function EditRootFolderModalContent(props) {
|
||||
type={id ? inputTypes.TEXT : inputTypes.PATH}
|
||||
readOnly={!!id}
|
||||
name="path"
|
||||
helpText="Root Folder containing your music library"
|
||||
helpText="Root Folder containing your book library"
|
||||
helpTextWarning="This must be different to the directory where your download client puts files"
|
||||
{...path}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Library</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="isCalibreLibrary"
|
||||
helpText="Use calibre content server to manipulate library"
|
||||
{...isCalibreLibrary}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
{
|
||||
isCalibreLibrary !== undefined && isCalibreLibrary.value &&
|
||||
<div>
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Host</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="host"
|
||||
helpText="Calibre content server host"
|
||||
{...host}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Port</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.NUMBER}
|
||||
name="port"
|
||||
helpText="Calibre content server port"
|
||||
{...port}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup
|
||||
advancedSettings={advancedSettings}
|
||||
isAdvanced={true}
|
||||
>
|
||||
<FormLabel>Calibre Url Base</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="urlBase"
|
||||
helpText="Adds a prefix to the calibre url, e.g. http://[host]:[port]/[urlBase]"
|
||||
{...urlBase}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Username</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="username"
|
||||
helpText="Calibre content server username"
|
||||
{...username}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Password</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.PASSWORD}
|
||||
name="password"
|
||||
helpText="Calibre content server password"
|
||||
{...password}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Convert to format</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.TEXT}
|
||||
name="outputFormat"
|
||||
helpText="Optionally ask calibre to convert to other formats on import. Comma separated list."
|
||||
{...outputFormat}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Calibre Output Profile</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.NUMBER}
|
||||
name="outputProfile"
|
||||
helpText="Output profile for conversion"
|
||||
{...outputProfile}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>Use SSL</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="useSsl"
|
||||
helpText="Use SSL to connect to calibre content server"
|
||||
{...useSsl}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</FormGroup>
|
||||
</div>
|
||||
}
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>
|
||||
Monitor
|
||||
@@ -112,7 +237,7 @@ function EditRootFolderModalContent(props) {
|
||||
name="defaultMonitorOption"
|
||||
onChange={onInputChange}
|
||||
{...defaultMonitorOption}
|
||||
helpText="Default Monitoring Options for albums by artists detected in this folder"
|
||||
helpText="Default Monitoring Options for books by authors detected in this folder"
|
||||
/>
|
||||
|
||||
</FormGroup>
|
||||
@@ -123,7 +248,7 @@ function EditRootFolderModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.QUALITY_PROFILE_SELECT}
|
||||
name="defaultQualityProfileId"
|
||||
helpText="Default Quality Profile for artists detected in this folder"
|
||||
helpText="Default Quality Profile for authors detected in this folder"
|
||||
{...defaultQualityProfileId}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
@@ -148,7 +273,7 @@ function EditRootFolderModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.METADATA_PROFILE_SELECT}
|
||||
name="defaultMetadataProfileId"
|
||||
helpText="Default Metadata Profile for artists detected in this folder"
|
||||
helpText="Default Metadata Profile for authors detected in this folder"
|
||||
{...defaultMetadataProfileId}
|
||||
includeNone={true}
|
||||
onChange={onInputChange}
|
||||
@@ -161,7 +286,7 @@ function EditRootFolderModalContent(props) {
|
||||
<FormInputGroup
|
||||
type={inputTypes.TAG}
|
||||
name="defaultTags"
|
||||
helpText="Default Readarr Tags for artists detected in this folder"
|
||||
helpText="Default Readarr Tags for authors detected in this folder"
|
||||
{...defaultTags}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user