mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-16 10:03:51 -07:00
Fixed: UI Selector, Rendering Improvements
This commit is contained in:
parent
38723d0753
commit
7cf39e6a30
14 changed files with 276 additions and 77 deletions
|
@ -0,0 +1,36 @@
|
|||
import { createSelector } from 'reselect';
|
||||
import createDeepEqualSelector from './createDeepEqualSelector';
|
||||
import createClientSideCollectionSelector from './createClientSideCollectionSelector';
|
||||
|
||||
function createUnoptimizedSelector(uiSection) {
|
||||
return createSelector(
|
||||
createClientSideCollectionSelector('artist', uiSection),
|
||||
(artist) => {
|
||||
const items = artist.items.map((s) => {
|
||||
const {
|
||||
id,
|
||||
sortName
|
||||
} = s;
|
||||
|
||||
return {
|
||||
id,
|
||||
sortName
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
...artist,
|
||||
items
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function createArtistClientSideCollectionItemsSelector(uiSection) {
|
||||
return createDeepEqualSelector(
|
||||
createUnoptimizedSelector(uiSection),
|
||||
(artist) => artist
|
||||
);
|
||||
}
|
||||
|
||||
export default createArtistClientSideCollectionItemsSelector;
|
|
@ -0,0 +1,16 @@
|
|||
import { createSelector } from 'reselect';
|
||||
import createArtistSelector from './createArtistSelector';
|
||||
|
||||
function createArtistLanguageProfileSelector() {
|
||||
return createSelector(
|
||||
(state) => state.settings.languageProfiles.items,
|
||||
createArtistSelector(),
|
||||
(languageProfiles, artist) => {
|
||||
return languageProfiles.find((profile) => {
|
||||
return profile.id === artist.languageProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export default createArtistLanguageProfileSelector;
|
|
@ -0,0 +1,16 @@
|
|||
import { createSelector } from 'reselect';
|
||||
import createArtistSelector from './createArtistSelector';
|
||||
|
||||
function createArtistMetadataProfileSelector() {
|
||||
return createSelector(
|
||||
(state) => state.settings.metadataProfiles.items,
|
||||
createArtistSelector(),
|
||||
(metadataProfiles, artist) => {
|
||||
return metadataProfiles.find((profile) => {
|
||||
return profile.id === artist.metadataProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export default createArtistMetadataProfileSelector;
|
|
@ -0,0 +1,16 @@
|
|||
import { createSelector } from 'reselect';
|
||||
import createArtistSelector from './createArtistSelector';
|
||||
|
||||
function createArtistQualityProfileSelector() {
|
||||
return createSelector(
|
||||
(state) => state.settings.qualityProfiles.items,
|
||||
createArtistSelector(),
|
||||
(qualityProfiles, artist) => {
|
||||
return qualityProfiles.find((profile) => {
|
||||
return profile.id === artist.qualityProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export default createArtistQualityProfileSelector;
|
9
frontend/src/Store/Selectors/createDeepEqualSelector.js
Normal file
9
frontend/src/Store/Selectors/createDeepEqualSelector.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import { createSelectorCreator, defaultMemoize } from 'reselect';
|
||||
import _ from 'lodash';
|
||||
|
||||
const createDeepEqualSelector = createSelectorCreator(
|
||||
defaultMemoize,
|
||||
_.isEqual
|
||||
);
|
||||
|
||||
export default createDeepEqualSelector;
|
|
@ -1,4 +1,3 @@
|
|||
import _ from 'lodash';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
function createLanguageProfileSelector() {
|
||||
|
@ -6,7 +5,9 @@ function createLanguageProfileSelector() {
|
|||
(state, { languageProfileId }) => languageProfileId,
|
||||
(state) => state.settings.languageProfiles.items,
|
||||
(languageProfileId, languageProfiles) => {
|
||||
return _.find(languageProfiles, { id: languageProfileId });
|
||||
return languageProfiles.find((profile) => {
|
||||
return profile.id === languageProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import _ from 'lodash';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
function createMetadataProfileSelector() {
|
||||
|
@ -6,7 +5,9 @@ function createMetadataProfileSelector() {
|
|||
(state, { metadataProfileId }) => metadataProfileId,
|
||||
(state) => state.settings.metadataProfiles.items,
|
||||
(metadataProfileId, metadataProfiles) => {
|
||||
return _.find(metadataProfiles, { id: metadataProfileId });
|
||||
return metadataProfiles.find((profile) => {
|
||||
return profile.id === metadataProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import _ from 'lodash';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
function createQualityProfileSelector() {
|
||||
|
@ -6,7 +5,9 @@ function createQualityProfileSelector() {
|
|||
(state, { qualityProfileId }) => qualityProfileId,
|
||||
(state) => state.settings.qualityProfiles.items,
|
||||
(qualityProfileId, qualityProfiles) => {
|
||||
return _.find(qualityProfiles, { id: qualityProfileId });
|
||||
return qualityProfiles.find((profile) => {
|
||||
return profile.id === qualityProfileId;
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue