mirror of https://github.com/lidarr/Lidarr
Fixed: Toolbar buttons enabled when no tracks exist for Album
This commit is contained in:
parent
98b610b12e
commit
3cd58d5866
|
@ -192,6 +192,7 @@ class AlbumDetails extends Component {
|
||||||
isPopulated,
|
isPopulated,
|
||||||
albumsError,
|
albumsError,
|
||||||
trackFilesError,
|
trackFilesError,
|
||||||
|
hasTrackFiles,
|
||||||
shortDateFormat,
|
shortDateFormat,
|
||||||
artist,
|
artist,
|
||||||
previousAlbum,
|
previousAlbum,
|
||||||
|
@ -243,18 +244,21 @@ class AlbumDetails extends Component {
|
||||||
<PageToolbarButton
|
<PageToolbarButton
|
||||||
label="Preview Rename"
|
label="Preview Rename"
|
||||||
iconName={icons.ORGANIZE}
|
iconName={icons.ORGANIZE}
|
||||||
|
isDisabled={!hasTrackFiles}
|
||||||
onPress={this.onOrganizePress}
|
onPress={this.onOrganizePress}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<PageToolbarButton
|
<PageToolbarButton
|
||||||
label="Preview Retag"
|
label="Preview Retag"
|
||||||
iconName={icons.RETAG}
|
iconName={icons.RETAG}
|
||||||
|
isDisabled={!hasTrackFiles}
|
||||||
onPress={this.onRetagPress}
|
onPress={this.onRetagPress}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<PageToolbarButton
|
<PageToolbarButton
|
||||||
label="Manage Tracks"
|
label="Manage Tracks"
|
||||||
iconName={icons.TRACK_FILE}
|
iconName={icons.TRACK_FILE}
|
||||||
|
isDisabled={!hasTrackFiles}
|
||||||
onPress={this.onManageTracksPress}
|
onPress={this.onManageTracksPress}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
@ -576,6 +580,7 @@ AlbumDetails.propTypes = {
|
||||||
albumsError: PropTypes.object,
|
albumsError: PropTypes.object,
|
||||||
tracksError: PropTypes.object,
|
tracksError: PropTypes.object,
|
||||||
trackFilesError: PropTypes.object,
|
trackFilesError: PropTypes.object,
|
||||||
|
hasTrackFiles: PropTypes.bool.isRequired,
|
||||||
artist: PropTypes.object,
|
artist: PropTypes.object,
|
||||||
previousAlbum: PropTypes.object,
|
previousAlbum: PropTypes.object,
|
||||||
nextAlbum: PropTypes.object,
|
nextAlbum: PropTypes.object,
|
||||||
|
|
|
@ -16,11 +16,32 @@ import AlbumDetails from './AlbumDetails';
|
||||||
import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector';
|
import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector';
|
||||||
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
|
||||||
|
|
||||||
|
const selectTrackFiles = createSelector(
|
||||||
|
(state) => state.trackFiles,
|
||||||
|
(trackFiles) => {
|
||||||
|
const {
|
||||||
|
items,
|
||||||
|
isFetching,
|
||||||
|
isPopulated,
|
||||||
|
error
|
||||||
|
} = trackFiles;
|
||||||
|
|
||||||
|
const hasTrackFiles = !!items.length;
|
||||||
|
|
||||||
|
return {
|
||||||
|
isTrackFilesFetching: isFetching,
|
||||||
|
isTrackFilesPopulated: isPopulated,
|
||||||
|
trackFilesError: error,
|
||||||
|
hasTrackFiles
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
(state, { foreignAlbumId }) => foreignAlbumId,
|
(state, { foreignAlbumId }) => foreignAlbumId,
|
||||||
(state) => state.tracks,
|
(state) => state.tracks,
|
||||||
(state) => state.trackFiles,
|
selectTrackFiles,
|
||||||
(state) => state.albums,
|
(state) => state.albums,
|
||||||
createAllArtistSelector(),
|
createAllArtistSelector(),
|
||||||
createCommandsSelector(),
|
createCommandsSelector(),
|
||||||
|
@ -35,14 +56,20 @@ function createMapStateToProps() {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
isTrackFilesFetching,
|
||||||
|
isTrackFilesPopulated,
|
||||||
|
trackFilesError,
|
||||||
|
hasTrackFiles
|
||||||
|
} = trackFiles;
|
||||||
|
|
||||||
const previousAlbum = sortedAlbums[albumIndex - 1] || _.last(sortedAlbums);
|
const previousAlbum = sortedAlbums[albumIndex - 1] || _.last(sortedAlbums);
|
||||||
const nextAlbum = sortedAlbums[albumIndex + 1] || _.first(sortedAlbums);
|
const nextAlbum = sortedAlbums[albumIndex + 1] || _.first(sortedAlbums);
|
||||||
const isSearching = !!findCommand(commands, { name: commandNames.ALBUM_SEARCH });
|
const isSearching = !!findCommand(commands, { name: commandNames.ALBUM_SEARCH });
|
||||||
|
|
||||||
const isFetching = tracks.isFetching || trackFiles.isFetching;
|
const isFetching = tracks.isFetching || isTrackFilesFetching;
|
||||||
const isPopulated = tracks.isPopulated && trackFiles.isPopulated;
|
const isPopulated = tracks.isPopulated && isTrackFilesPopulated;
|
||||||
const tracksError = tracks.error;
|
const tracksError = tracks.error;
|
||||||
const trackFilesError = trackFiles.error;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...album,
|
...album,
|
||||||
|
@ -53,6 +80,7 @@ function createMapStateToProps() {
|
||||||
isPopulated,
|
isPopulated,
|
||||||
tracksError,
|
tracksError,
|
||||||
trackFilesError,
|
trackFilesError,
|
||||||
|
hasTrackFiles,
|
||||||
previousAlbum,
|
previousAlbum,
|
||||||
nextAlbum
|
nextAlbum
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue