New: Release Profiles, Frontend updates (#580)

* New: Release Profiles - UI Updates

* New: Release Profiles - API Changes

* New: Release Profiles - Test Updates

* New: Release Profiles - Backend Updates

* New: Interactive Artist Search

* New: Change Montiored on Album Details Page

* New: Show Duration on Album Details Page

* Fixed: Manual Import not working if no albums are Missing

* Fixed: Sort search input by sortTitle

* Fixed: Queue columnLabel throwing JS error
This commit is contained in:
Qstick 2019-02-23 17:39:11 -05:00 committed by GitHub
parent f126eafd26
commit 3f064c94b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
409 changed files with 6882 additions and 3176 deletions

View file

@ -11,20 +11,45 @@ import { fetchTracks, clearTracks } from 'Store/Actions/trackActions';
import { fetchLanguageProfileSchema, fetchQualityProfileSchema } from 'Store/Actions/settingsActions';
import TrackFileEditorModalContent from './TrackFileEditorModalContent';
function createSchemaSelector() {
return createSelector(
(state) => state.settings.languageProfiles,
(state) => state.settings.qualityProfiles,
(languageProfiles, qualityProfiles) => {
const languages = _.map(languageProfiles.schema.languages, 'language');
const qualities = getQualities(qualityProfiles.schema.items);
let error = null;
if (languageProfiles.schemaError) {
error = 'Unable to load languages';
} else if (qualityProfiles.schemaError) {
error = 'Unable to load qualities';
}
return {
isFetching: languageProfiles.isSchemaFetching || qualityProfiles.isSchemaFetching,
isPopulated: languageProfiles.isSchemaPopulated && qualityProfiles.isSchemaPopulated,
error,
languages,
qualities
};
}
);
}
function createMapStateToProps() {
return createSelector(
(state, { albumId }) => albumId,
(state) => state.tracks,
(state) => state.trackFiles,
(state) => state.settings.languageProfiles.schema,
(state) => state.settings.qualityProfiles.schema,
createSchemaSelector(),
createArtistSelector(),
(
albumId,
tracks,
trackFiles,
languageProfilesSchema,
qualityProfileSchema,
schema,
artist
) => {
const filtered = _.filter(tracks.items, (track) => {
@ -52,17 +77,12 @@ function createMapStateToProps() {
};
});
const languages = _.map(languageProfilesSchema.languages, 'language');
const qualities = getQualities(qualityProfileSchema.items);
return {
...schema,
items,
artistType: artist.artistType,
isDeleting: trackFiles.isDeleting,
isFetching: tracks.isFetching || trackFiles.isFetching,
isSaving: trackFiles.isSaving,
languages,
qualities
isSaving: trackFiles.isSaving
};
}
);
@ -115,9 +135,6 @@ class TrackFileEditorModalContentConnector extends Component {
this.props.dispatchClearTracks();
}
//
// Render
//
// Listeners
@ -139,6 +156,9 @@ class TrackFileEditorModalContentConnector extends Component {
this.props.dispatchUpdateTrackFiles({ trackFileIds, quality });
}
//
// Render
render() {
const {
dispatchFetchLanguageProfileSchema,