diff --git a/frontend/src/Album/Details/AlbumDetails.js b/frontend/src/Album/Details/AlbumDetails.js index 75cfcb7a8..36fd795f7 100644 --- a/frontend/src/Album/Details/AlbumDetails.js +++ b/frontend/src/Album/Details/AlbumDetails.js @@ -192,6 +192,7 @@ class AlbumDetails extends Component { isPopulated, albumsError, trackFilesError, + hasTrackFiles, shortDateFormat, artist, previousAlbum, @@ -243,18 +244,21 @@ class AlbumDetails extends Component { @@ -576,6 +580,7 @@ AlbumDetails.propTypes = { albumsError: PropTypes.object, tracksError: PropTypes.object, trackFilesError: PropTypes.object, + hasTrackFiles: PropTypes.bool.isRequired, artist: PropTypes.object, previousAlbum: PropTypes.object, nextAlbum: PropTypes.object, diff --git a/frontend/src/Album/Details/AlbumDetailsConnector.js b/frontend/src/Album/Details/AlbumDetailsConnector.js index 9005d6528..3bcbfd06b 100644 --- a/frontend/src/Album/Details/AlbumDetailsConnector.js +++ b/frontend/src/Album/Details/AlbumDetailsConnector.js @@ -16,11 +16,32 @@ import AlbumDetails from './AlbumDetails'; import createAllArtistSelector from 'Store/Selectors/createAllArtistSelector'; 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() { return createSelector( (state, { foreignAlbumId }) => foreignAlbumId, (state) => state.tracks, - (state) => state.trackFiles, + selectTrackFiles, (state) => state.albums, createAllArtistSelector(), createCommandsSelector(), @@ -35,14 +56,20 @@ function createMapStateToProps() { return {}; } + const { + isTrackFilesFetching, + isTrackFilesPopulated, + trackFilesError, + hasTrackFiles + } = trackFiles; + const previousAlbum = sortedAlbums[albumIndex - 1] || _.last(sortedAlbums); const nextAlbum = sortedAlbums[albumIndex + 1] || _.first(sortedAlbums); const isSearching = !!findCommand(commands, { name: commandNames.ALBUM_SEARCH }); - const isFetching = tracks.isFetching || trackFiles.isFetching; - const isPopulated = tracks.isPopulated && trackFiles.isPopulated; + const isFetching = tracks.isFetching || isTrackFilesFetching; + const isPopulated = tracks.isPopulated && isTrackFilesPopulated; const tracksError = tracks.error; - const trackFilesError = trackFiles.error; return { ...album, @@ -53,6 +80,7 @@ function createMapStateToProps() { isPopulated, tracksError, trackFilesError, + hasTrackFiles, previousAlbum, nextAlbum };