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
};