diff --git a/src/js/services/core/reducer.js b/src/js/services/core/reducer.js index a5bbf1f2..04877534 100755 --- a/src/js/services/core/reducer.js +++ b/src/js/services/core/reducer.js @@ -206,9 +206,9 @@ export default function reducer(core = {}, action){ return Object.assign({}, core, { library_albums: helpers.removeDuplicates([...library_albums, ...action.uris]), - library_albums_more: action.more, - library_albums_total: action.total, - library_albums_started: true + library_albums_spotify_more: (action.spotify_more ? action.spotify_more : null), + library_albums_total: (action.total ? action.total : null), + library_albums_spotify_started: (action.spotify_started ? action.spotify_started : null), }); case 'ALBUM_LIBRARY_CHECK': diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index 9e5b238f..4a05ace9 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -848,7 +848,7 @@ const MopidyMiddleware = (function(){ }); store.dispatch({ - type: 'LOCAL_ALBUMS_LOADED', + type: 'LIBRARY_ALBUMS_LOADED', uris: uris }); }) diff --git a/src/js/views/library/LibraryAlbums.js b/src/js/views/library/LibraryAlbums.js index d138c8f9..35534a2b 100755 --- a/src/js/views/library/LibraryAlbums.js +++ b/src/js/views/library/LibraryAlbums.js @@ -25,8 +25,22 @@ class LibraryAlbums extends React.Component{ } componentDidMount(){ - if (!this.props.library_albums_started){ - this.props.spotifyActions.getLibraryAlbums(); + if (this.props.spotify_connected && !this.props.library_albums_spotify_started){ + this.props.spotifyActions.getLibraryAlbums() + } + + if (this.props.mopidy_connected && !this.props.local_albums){ + this.props.mopidyActions.getLibraryAlbums() + } + } + + componentWillReceiveProps(newProps){ + if (!this.props.spotify_connected && newProps.spotify_connected && !this.props.library_albums_spotify_started){ + this.props.spotifyActions.getLibraryAlbums() + } + + if (!this.props.mopidy_connected && newProps.mopidy_connected && !newProps.local_albums){ + this.props.mopidyActions.getLibraryAlbums() } } @@ -40,8 +54,30 @@ class LibraryAlbums extends React.Component{ this.props.uiActions.showContextMenu(data) } - loadMore(){ - this.props.spotifyActions.getURL( this.props.library_albums_more, 'SPOTIFY_LIBRARY_ALBUMS_LOADED' ); + moreURIsToLoad(){ + var uris = [] + if (this.props.albums && this.props.library_albums){ + for (var i = 0; i < this.props.library_albums.length; i++){ + var uri = this.props.library_albums[i] + if (!this.props.albums.hasOwnProperty(uri) && helpers.uriSource(uri) == 'local'){ + uris.push(uri) + } + + // limit each lookup to 50 URIs + if (uris.length >= 50) break + } + } + + return uris + } + + loadMoreSpotify(){ + this.props.spotifyActions.getURL( this.props.library_albums_spotify_more, 'SPOTIFY_LIBRARY_ALBUMS_LOADED' ); + } + + loadMoreMopidy(){ + var uris = this.moreURIsToLoad() + this.props.mopidyActions.getAlbums(uris) } setSort(value){ @@ -159,10 +195,6 @@ class LibraryAlbums extends React.Component{ value: 'thumbnails', label: 'Thumbnails' }, - { - value: 'detail', - label: 'Detail' - }, { value: 'list', label: 'List' @@ -203,7 +235,8 @@ class LibraryAlbums extends React.Component{