Fixed: Correctly set default profiles on import

Fixes: #333
pull/342/head
Qstick 6 years ago
parent 0d7cd8009f
commit 8624ff5c6a

@ -209,7 +209,7 @@
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
"max-depth": ["error", {"maximum": 5}],
"max-nested-callbacks": ["error", 4],
"max-params": ["warn", 4],
"max-params": ["error", 7],
"max-statements": "off",
"max-statements-per-line": ["error", { "max": 1 }],
"new-cap": ["error", {"capIsNewExceptions": ["$.Deferred"]}],

@ -16,9 +16,18 @@ function createMapStateToProps() {
(state) => state.rootFolders,
(state) => state.addArtist,
(state) => state.importArtist,
(state) => state.settings.qualityProfiles,
(state) => state.settings.languageProfiles,
(state) => state.settings.metadataProfiles,
(match, rootFolders, addArtist, importArtistState, languageProfiles, metadataProfiles) => {
(
match,
rootFolders,
addArtist,
importArtistState,
qualityProfiles,
languageProfiles,
metadataProfiles
) => {
const {
isFetching: rootFoldersFetching,
isPopulated: rootFoldersPopulated,
@ -33,8 +42,14 @@ function createMapStateToProps() {
rootFoldersFetching,
rootFoldersPopulated,
rootFoldersError,
qualityProfiles: qualityProfiles.items,
languageProfiles: languageProfiles.items,
metadataProfiles: metadataProfiles.items,
showLanguageProfile: languageProfiles.items.length > 1,
showMetadataProfile: metadataProfiles.items.length > 1
showMetadataProfile: metadataProfiles.items.length > 1,
defaultQualityProfileId: addArtist.defaults.qualityProfileId,
defaultLanguageProfileId: addArtist.defaults.languageProfileId,
defaultMetadataProfileId: addArtist.defaults.metadataProfileId
};
if (items.length) {
@ -53,11 +68,11 @@ function createMapStateToProps() {
}
const mapDispatchToProps = {
setImportArtistValue,
importArtist,
clearImportArtist,
fetchRootFolders,
setAddArtistDefault
dispatchSetImportArtistValue: setImportArtistValue,
dispatchImportArtist: importArtist,
dispatchClearImportArtist: clearImportArtist,
dispatchFetchRootFolders: fetchRootFolders,
dispatchSetAddArtistDefault: setAddArtistDefault
};
class ImportArtistConnector extends Component {
@ -66,23 +81,65 @@ class ImportArtistConnector extends Component {
// Lifecycle
componentDidMount() {
const {
qualityProfiles,
languageProfiles,
metadataProfiles,
defaultQualityProfileId,
defaultLanguageProfileId,
defaultMetadataProfileId,
dispatchFetchRootFolders,
dispatchSetAddArtistDefault
} = this.props;
if (!this.props.rootFoldersPopulated) {
this.props.fetchRootFolders();
dispatchFetchRootFolders();
}
let setDefaults = false;
const setDefaultPayload = {};
if (
!defaultQualityProfileId ||
!qualityProfiles.some((p) => p.id === defaultQualityProfileId)
) {
setDefaults = true;
setDefaultPayload.qualityProfileId = qualityProfiles[0].id;
}
if (
!defaultLanguageProfileId ||
!languageProfiles.some((p) => p.id === defaultLanguageProfileId)
) {
setDefaults = true;
setDefaultPayload.languageProfileId = languageProfiles[0].id;
}
if (
!defaultMetadataProfileId ||
!metadataProfiles.some((p) => p.id === defaultMetadataProfileId)
) {
setDefaults = true;
setDefaultPayload.metadataProfileId = metadataProfiles[0].id;
}
if (setDefaults) {
dispatchSetAddArtistDefault(setDefaultPayload);
}
}
componentWillUnmount() {
this.props.clearImportArtist();
this.props.dispatchClearImportArtist();
}
//
// Listeners
onInputChange = (ids, name, value) => {
this.props.setAddArtistDefault({ [name]: value });
this.props.dispatchSetAddArtistDefault({ [name]: value });
ids.forEach((id) => {
this.props.setImportArtistValue({
this.props.dispatchSetImportArtistValue({
id,
[name]: value
});
@ -90,7 +147,7 @@ class ImportArtistConnector extends Component {
}
onImportPress = (ids) => {
this.props.importArtist({ ids });
this.props.dispatchImportArtist({ ids });
}
//
@ -114,11 +171,17 @@ const routeMatchShape = createRouteMatchShape({
ImportArtistConnector.propTypes = {
match: routeMatchShape.isRequired,
rootFoldersPopulated: PropTypes.bool.isRequired,
setImportArtistValue: PropTypes.func.isRequired,
importArtist: PropTypes.func.isRequired,
clearImportArtist: PropTypes.func.isRequired,
fetchRootFolders: PropTypes.func.isRequired,
setAddArtistDefault: PropTypes.func.isRequired
qualityProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
languageProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
metadataProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
defaultQualityProfileId: PropTypes.number.isRequired,
defaultLanguageProfileId: PropTypes.number.isRequired,
defaultMetadataProfileId: PropTypes.number.isRequired,
dispatchSetImportArtistValue: PropTypes.func.isRequired,
dispatchImportArtist: PropTypes.func.isRequired,
dispatchClearImportArtist: PropTypes.func.isRequired,
dispatchFetchRootFolders: PropTypes.func.isRequired,
dispatchSetAddArtistDefault: PropTypes.func.isRequired
};
export default connect(createMapStateToProps, mapDispatchToProps)(ImportArtistConnector);

@ -35,21 +35,25 @@ function createMapStateToProps() {
(state) => state.app,
createDimensionsSelector(),
(artist, tags, settings, app, dimensions) => {
const isPopulated = artist.isPopulated &&
const isPopulated = (
artist.isPopulated &&
tags.isPopulated &&
settings.qualityProfiles.isPopulated &&
settings.languageProfiles.isPopulated &&
settings.metadataProfiles.isPopulated &&
settings.importLists.isPopulated &&
settings.ui.isPopulated;
const hasError = !!artist.error ||
!!tags.error ||
!!settings.qualityProfiles.error ||
!!settings.languageProfiles.error ||
!!settings.metadataProfiles.error ||
!!settings.importLists.error ||
!!settings.ui.error;
settings.ui.isPopulated
);
const hasError = !!(
artist.error ||
tags.error ||
settings.qualityProfiles.error ||
settings.languageProfiles.error ||
settings.metadataProfiles.error ||
settings.importLists.error ||
settings.ui.error
);
return {
isPopulated,

Loading…
Cancel
Save