1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-20 21:54:58 -04:00

New: Custom Format Language Condition

This commit is contained in:
Qstick
2022-08-14 14:07:26 -05:00
parent 52760e0908
commit 89b0b04e08
243 changed files with 1345 additions and 3956 deletions
@@ -84,8 +84,7 @@ class ImportSeries extends Component {
rootFoldersFetching,
rootFoldersPopulated,
rootFoldersError,
unmappedFolders,
showLanguageProfile
unmappedFolders
} = this.props;
const {
@@ -135,7 +134,6 @@ class ImportSeries extends Component {
allUnselected={allUnselected}
selectedState={selectedState}
scroller={scroller}
showLanguageProfile={showLanguageProfile}
onSelectAllChange={this.onSelectAllChange}
onSelectedChange={this.onSelectedChange}
onRemoveSelectedStateItem={this.onRemoveSelectedStateItem}
@@ -150,7 +148,6 @@ class ImportSeries extends Component {
!!unmappedFolders.length ?
<ImportSeriesFooterConnector
selectedIds={this.getSelectedIds()}
showLanguageProfile={showLanguageProfile}
onInputChange={this.onInputChange}
onImportPress={this.onImportPress}
/> :
@@ -169,7 +166,6 @@ ImportSeries.propTypes = {
rootFoldersError: PropTypes.object,
unmappedFolders: PropTypes.arrayOf(PropTypes.object),
items: PropTypes.arrayOf(PropTypes.object),
showLanguageProfile: PropTypes.bool.isRequired,
onInputChange: PropTypes.func.isRequired,
onImportPress: PropTypes.func.isRequired
};
@@ -16,14 +16,12 @@ function createMapStateToProps() {
(state) => state.addSeries,
(state) => state.importSeries,
(state) => state.settings.qualityProfiles,
(state) => state.settings.languageProfiles,
(
match,
rootFolders,
addSeries,
importSeriesState,
qualityProfiles,
languageProfiles
qualityProfiles
) => {
const {
isFetching: rootFoldersFetching,
@@ -40,10 +38,7 @@ function createMapStateToProps() {
rootFoldersPopulated,
rootFoldersError,
qualityProfiles: qualityProfiles.items,
languageProfiles: languageProfiles.items,
showLanguageProfile: languageProfiles.items.length > 1,
defaultQualityProfileId: addSeries.defaults.qualityProfileId,
defaultLanguageProfileId: addSeries.defaults.languageProfileId
defaultQualityProfileId: addSeries.defaults.qualityProfileId
};
if (items.length) {
@@ -78,9 +73,7 @@ class ImportSeriesConnector extends Component {
const {
rootFolderId,
qualityProfiles,
languageProfiles,
defaultQualityProfileId,
defaultLanguageProfileId,
dispatchFetchRootFolders,
dispatchSetAddSeriesDefault
} = this.props;
@@ -98,14 +91,6 @@ class ImportSeriesConnector extends Component {
setDefaultPayload.qualityProfileId = qualityProfiles[0].id;
}
if (
!defaultLanguageProfileId ||
!languageProfiles.some((p) => p.id === defaultLanguageProfileId)
) {
setDefaults = true;
setDefaultPayload.languageProfileId = languageProfiles[0].id;
}
if (setDefaults) {
dispatchSetAddSeriesDefault(setDefaultPayload);
}
@@ -157,9 +142,7 @@ ImportSeriesConnector.propTypes = {
rootFoldersFetching: PropTypes.bool.isRequired,
rootFoldersPopulated: PropTypes.bool.isRequired,
qualityProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
languageProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
defaultQualityProfileId: PropTypes.number.isRequired,
defaultLanguageProfileId: PropTypes.number.isRequired,
dispatchSetImportSeriesValue: PropTypes.func.isRequired,
dispatchImportSeries: PropTypes.func.isRequired,
dispatchClearImportSeries: PropTypes.func.isRequired,
@@ -25,7 +25,6 @@ class ImportSeriesFooter extends Component {
const {
defaultMonitor,
defaultQualityProfileId,
defaultLanguageProfileId,
defaultSeasonFolder,
defaultSeriesType
} = props;
@@ -33,7 +32,6 @@ class ImportSeriesFooter extends Component {
this.state = {
monitor: defaultMonitor,
qualityProfileId: defaultQualityProfileId,
languageProfileId: defaultLanguageProfileId,
seriesType: defaultSeriesType,
seasonFolder: defaultSeasonFolder
};
@@ -43,12 +41,10 @@ class ImportSeriesFooter extends Component {
const {
defaultMonitor,
defaultQualityProfileId,
defaultLanguageProfileId,
defaultSeriesType,
defaultSeasonFolder,
isMonitorMixed,
isQualityProfileIdMixed,
isLanguageProfileIdMixed,
isSeriesTypeMixed,
isSeasonFolderMixed
} = this.props;
@@ -56,7 +52,6 @@ class ImportSeriesFooter extends Component {
const {
monitor,
qualityProfileId,
languageProfileId,
seriesType,
seasonFolder
} = this.state;
@@ -75,12 +70,6 @@ class ImportSeriesFooter extends Component {
newState.qualityProfileId = defaultQualityProfileId;
}
if (isLanguageProfileIdMixed && languageProfileId !== MIXED) {
newState.languageProfileId = MIXED;
} else if (!isLanguageProfileIdMixed && languageProfileId !== defaultLanguageProfileId) {
newState.languageProfileId = defaultLanguageProfileId;
}
if (isSeriesTypeMixed && seriesType !== MIXED) {
newState.seriesType = MIXED;
} else if (!isSeriesTypeMixed && seriesType !== defaultSeriesType) {
@@ -116,10 +105,8 @@ class ImportSeriesFooter extends Component {
isLookingUpSeries,
isMonitorMixed,
isQualityProfileIdMixed,
isLanguageProfileIdMixed,
isSeriesTypeMixed,
hasUnsearchedItems,
showLanguageProfile,
importError,
onImportPress,
onLookupPress,
@@ -129,7 +116,6 @@ class ImportSeriesFooter extends Component {
const {
monitor,
qualityProfileId,
languageProfileId,
seriesType,
seasonFolder
} = this.state;
@@ -166,24 +152,6 @@ class ImportSeriesFooter extends Component {
/>
</div>
{
showLanguageProfile &&
<div className={styles.inputContainer}>
<div className={styles.label}>
Language Profile
</div>
<FormInputGroup
type={inputTypes.LANGUAGE_PROFILE_SELECT}
name="languageProfileId"
value={languageProfileId}
isDisabled={!selectedCount}
includeMixed={isLanguageProfileIdMixed}
onChange={this.onInputChange}
/>
</div>
}
<div className={styles.inputContainer}>
<div className={styles.label}>
Series Type
@@ -308,16 +276,13 @@ ImportSeriesFooter.propTypes = {
isLookingUpSeries: PropTypes.bool.isRequired,
defaultMonitor: PropTypes.string.isRequired,
defaultQualityProfileId: PropTypes.number,
defaultLanguageProfileId: PropTypes.number,
defaultSeriesType: PropTypes.string.isRequired,
defaultSeasonFolder: PropTypes.bool.isRequired,
isMonitorMixed: PropTypes.bool.isRequired,
isQualityProfileIdMixed: PropTypes.bool.isRequired,
isLanguageProfileIdMixed: PropTypes.bool.isRequired,
isSeriesTypeMixed: PropTypes.bool.isRequired,
isSeasonFolderMixed: PropTypes.bool.isRequired,
hasUnsearchedItems: PropTypes.bool.isRequired,
showLanguageProfile: PropTypes.bool.isRequired,
importError: PropTypes.object,
onInputChange: PropTypes.func.isRequired,
onImportPress: PropTypes.func.isRequired,
@@ -19,7 +19,6 @@ function createMapStateToProps() {
const {
monitor: defaultMonitor,
qualityProfileId: defaultQualityProfileId,
languageProfileId: defaultLanguageProfileId,
seriesType: defaultSeriesType,
seasonFolder: defaultSeasonFolder
} = addSeries.defaults;
@@ -33,7 +32,6 @@ function createMapStateToProps() {
const isMonitorMixed = isMixed(items, selectedIds, defaultMonitor, 'monitor');
const isQualityProfileIdMixed = isMixed(items, selectedIds, defaultQualityProfileId, 'qualityProfileId');
const isLanguageProfileIdMixed = isMixed(items, selectedIds, defaultLanguageProfileId, 'languageProfileId');
const isSeriesTypeMixed = isMixed(items, selectedIds, defaultSeriesType, 'seriesType');
const isSeasonFolderMixed = isMixed(items, selectedIds, defaultSeasonFolder, 'seasonFolder');
const hasUnsearchedItems = !isLookingUpSeries && items.some((item) => !item.isPopulated);
@@ -44,12 +42,10 @@ function createMapStateToProps() {
isImporting,
defaultMonitor,
defaultQualityProfileId,
defaultLanguageProfileId,
defaultSeriesType,
defaultSeasonFolder,
isMonitorMixed,
isQualityProfileIdMixed,
isLanguageProfileIdMixed,
isSeriesTypeMixed,
isSeasonFolderMixed,
importError,
@@ -11,8 +11,7 @@
min-width: 185px;
}
.qualityProfile,
.languageProfile {
.qualityProfile {
composes: headerCell from '~Components/Table/VirtualTableHeaderCell.css';
flex: 0 1 250px;
@@ -12,7 +12,6 @@ import styles from './ImportSeriesHeader.css';
function ImportSeriesHeader(props) {
const {
showLanguageProfile,
allSelected,
allUnselected,
onSelectAllChange
@@ -59,16 +58,6 @@ function ImportSeriesHeader(props) {
Quality Profile
</VirtualTableHeaderCell>
{
showLanguageProfile &&
<VirtualTableHeaderCell
className={styles.languageProfile}
name="languageProfileId"
>
Language Profile
</VirtualTableHeaderCell>
}
<VirtualTableHeaderCell
className={styles.seriesType}
name="seriesType"
@@ -106,7 +95,6 @@ function ImportSeriesHeader(props) {
}
ImportSeriesHeader.propTypes = {
showLanguageProfile: PropTypes.bool.isRequired,
allSelected: PropTypes.bool.isRequired,
allUnselected: PropTypes.bool.isRequired,
onSelectAllChange: PropTypes.func.isRequired
@@ -16,8 +16,7 @@
min-width: 185px;
}
.qualityProfile,
.languageProfile {
.qualityProfile {
composes: cell from '~Components/Table/Cells/VirtualTableRowCell.css';
flex: 0 1 250px;
@@ -44,9 +43,3 @@
flex: 0 1 400px;
min-width: 300px;
}
.hideLanguageProfile {
composes: cell from '~Components/Table/Cells/VirtualTableRowCell.css';
display: none;
}
@@ -12,12 +12,10 @@ function ImportSeriesRow(props) {
id,
monitor,
qualityProfileId,
languageProfileId,
seasonFolder,
seriesType,
selectedSeries,
isExistingSeries,
showLanguageProfile,
isSelected,
onSelectedChange,
onInputChange
@@ -55,17 +53,6 @@ function ImportSeriesRow(props) {
/>
</VirtualTableRowCell>
<VirtualTableRowCell
className={showLanguageProfile ? styles.languageProfile : styles.hideLanguageProfile}
>
<FormInputGroup
type={inputTypes.LANGUAGE_PROFILE_SELECT}
name="languageProfileId"
value={languageProfileId}
onChange={onInputChange}
/>
</VirtualTableRowCell>
<VirtualTableRowCell className={styles.seriesType}>
<FormInputGroup
type={inputTypes.SERIES_TYPE_SELECT}
@@ -99,13 +86,11 @@ ImportSeriesRow.propTypes = {
id: PropTypes.string.isRequired,
monitor: PropTypes.string.isRequired,
qualityProfileId: PropTypes.number.isRequired,
languageProfileId: PropTypes.number.isRequired,
seriesType: PropTypes.string.isRequired,
seasonFolder: PropTypes.bool.isRequired,
selectedSeries: PropTypes.object,
isExistingSeries: PropTypes.bool.isRequired,
items: PropTypes.arrayOf(PropTypes.object).isRequired,
showLanguageProfile: PropTypes.bool.isRequired,
isSelected: PropTypes.bool,
onSelectedChange: PropTypes.func.isRequired,
onInputChange: PropTypes.func.isRequired
@@ -16,7 +16,6 @@ class ImportSeriesTable extends Component {
unmappedFolders,
defaultMonitor,
defaultQualityProfileId,
defaultLanguageProfileId,
defaultSeriesType,
defaultSeasonFolder,
onSeriesLookup,
@@ -26,7 +25,6 @@ class ImportSeriesTable extends Component {
const values = {
monitor: defaultMonitor,
qualityProfileId: defaultQualityProfileId,
languageProfileId: defaultLanguageProfileId,
seriesType: defaultSeriesType,
seasonFolder: defaultSeasonFolder
};
@@ -106,7 +104,6 @@ class ImportSeriesTable extends Component {
rootFolderId,
items,
selectedState,
showLanguageProfile,
onSelectedChange
} = this.props;
@@ -120,7 +117,6 @@ class ImportSeriesTable extends Component {
<ImportSeriesRowConnector
key={item.id}
rootFolderId={rootFolderId}
showLanguageProfile={showLanguageProfile}
isSelected={selectedState[item.id]}
onSelectedChange={onSelectedChange}
id={item.id}
@@ -139,7 +135,6 @@ class ImportSeriesTable extends Component {
allUnselected,
isSmallScreen,
scroller,
showLanguageProfile,
selectedState,
onSelectAllChange
} = this.props;
@@ -158,7 +153,6 @@ class ImportSeriesTable extends Component {
rowRenderer={this.rowRenderer}
header={
<ImportSeriesHeader
showLanguageProfile={showLanguageProfile}
allSelected={allSelected}
allUnselected={allUnselected}
onSelectAllChange={onSelectAllChange}
@@ -176,7 +170,6 @@ ImportSeriesTable.propTypes = {
unmappedFolders: PropTypes.arrayOf(PropTypes.object),
defaultMonitor: PropTypes.string.isRequired,
defaultQualityProfileId: PropTypes.number,
defaultLanguageProfileId: PropTypes.number,
defaultSeriesType: PropTypes.string.isRequired,
defaultSeasonFolder: PropTypes.bool.isRequired,
allSelected: PropTypes.bool.isRequired,
@@ -185,7 +178,6 @@ ImportSeriesTable.propTypes = {
isSmallScreen: PropTypes.bool.isRequired,
allSeries: PropTypes.arrayOf(PropTypes.object),
scroller: PropTypes.instanceOf(Element).isRequired,
showLanguageProfile: PropTypes.bool.isRequired,
onSelectAllChange: PropTypes.func.isRequired,
onSelectedChange: PropTypes.func.isRequired,
onRemoveSelectedStateItem: PropTypes.func.isRequired,
@@ -14,7 +14,6 @@ function createMapStateToProps() {
return {
defaultMonitor: addSeries.defaults.monitor,
defaultQualityProfileId: addSeries.defaults.qualityProfileId,
defaultLanguageProfileId: addSeries.defaults.languageProfileId,
defaultSeriesType: addSeries.defaults.seriesType,
defaultSeasonFolder: addSeries.defaults.seasonFolder,
items: importSeries.items,