Piggyback lazyloader for track loading

This commit is contained in:
James Barnsley
2018-04-14 13:48:03 +12:00
parent ade54c4445
commit c614482723
7 changed files with 69 additions and 31 deletions

View File

@ -16665,8 +16665,8 @@ var LazyLoadListener = function (_React$Component) {
value: function render() { value: function render() {
return _react2.default.createElement( return _react2.default.createElement(
'div', 'div',
{ className: "lazy-loader body-loader" + (this.state.loading ? ' loading' : '') }, { className: "lazy-loader body-loader" + (this.state.loading || this.props.forceLoader ? ' loading' : '') },
this.state.loading ? _react2.default.createElement('div', { className: 'loader' }) : null this.state.loading || this.props.forceLoader ? _react2.default.createElement('div', { className: 'loader' }) : null
); );
} }
}]); }]);
@ -64500,6 +64500,12 @@ var Album = function (_React$Component) {
} }
} }
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue, ['spotify_albums/' + helpers.getFromUri('albumid', this.props.params.uri)])) {
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return _react2.default.createElement( return _react2.default.createElement(
'div', 'div',
{ className: 'view album-view content-wrapper' }, { className: 'view album-view content-wrapper' },
@ -64573,7 +64579,7 @@ var Album = function (_React$Component) {
'section', 'section',
{ className: 'list-wrapper' }, { className: 'list-wrapper' },
_react2.default.createElement(_TrackList2.default, { className: 'album-track-list', tracks: tracks, uri: this.props.params.uri }), _react2.default.createElement(_TrackList2.default, { className: 'album-track-list', tracks: tracks, uri: this.props.params.uri }),
_react2.default.createElement(_LazyLoadListener2.default, { loading: this.props.album.tracks_more, loadMore: function loadMore() { _react2.default.createElement(_LazyLoadListener2.default, { loading: this.props.album.tracks_more, forceLoader: is_loading_tracks, loadMore: function loadMore() {
return _this2.loadMore(); return _this2.loadMore();
} }) } })
) )
@ -64970,16 +64976,6 @@ var Artist = function (_React$Component) {
default: default:
var tracks = [];
if (this.props.artist.tracks_uris && this.props.tracks) {
for (var i = 0; i < this.props.artist.tracks_uris.length; i++) {
var uri = this.props.artist.tracks_uris[i];
if (this.props.tracks.hasOwnProperty(uri)) {
tracks.push(this.props.tracks[uri]);
}
}
}
var sort_options = [{ var sort_options = [{
value: 'name', value: 'name',
label: 'Name' label: 'Name'
@ -64991,6 +64987,22 @@ var Artist = function (_React$Component) {
label: 'Tracks' label: 'Tracks'
}]; }];
var tracks = [];
if (this.props.artist.tracks_uris && this.props.tracks) {
for (var i = 0; i < this.props.artist.tracks_uris.length; i++) {
var uri = this.props.artist.tracks_uris[i];
if (this.props.tracks.hasOwnProperty(uri)) {
tracks.push(this.props.tracks[uri]);
}
}
}
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue, ['spotify_artists/' + helpers.getFromUri('artistid', this.props.params.uri) + '/top-tracks'])) {
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return _react2.default.createElement( return _react2.default.createElement(
'div', 'div',
{ className: 'body overview' }, { className: 'body overview' },
@ -65005,7 +65017,8 @@ var Artist = function (_React$Component) {
_react2.default.createElement( _react2.default.createElement(
'div', 'div',
{ className: 'list-wrapper' }, { className: 'list-wrapper' },
_react2.default.createElement(_TrackList2.default, { className: 'artist-track-list', uri: this.props.params.uri, tracks: tracks }) _react2.default.createElement(_TrackList2.default, { className: 'artist-track-list', uri: this.props.params.uri, tracks: tracks }),
_react2.default.createElement(_LazyLoadListener2.default, { forceLoader: is_loading_tracks })
) )
), ),
_react2.default.createElement('div', { className: 'col w5' }), _react2.default.createElement('div', { className: 'col w5' }),
@ -65506,6 +65519,12 @@ var Playlist = function (_React$Component) {
} }
} }
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue, ['spotify_users/' + user_id + '/playlists/' + playlist_id, 'spotify_users/' + user_id + '/playlists/' + playlist_id + '/tracks'])) {
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return _react2.default.createElement( return _react2.default.createElement(
'div', 'div',
{ className: 'view playlist-view content-wrapper' }, { className: 'view playlist-view content-wrapper' },
@ -65576,7 +65595,7 @@ var Playlist = function (_React$Component) {
}, reorderTracks: function reorderTracks(indexes, index) { }, reorderTracks: function reorderTracks(indexes, index) {
return _this3.reorderTracks(indexes, index); return _this3.reorderTracks(indexes, index);
} }), } }),
_react2.default.createElement(_LazyLoadListener2.default, { loading: this.props.playlist.tracks_more, loadMore: function loadMore() { _react2.default.createElement(_LazyLoadListener2.default, { loading: this.props.playlist.tracks_more, forceLoader: is_loading_tracks, loadMore: function loadMore() {
return _this3.loadMore(); return _this3.loadMore();
} }) } })
) )

File diff suppressed because one or more lines are too long

View File

@ -73,7 +73,7 @@
// Release details // Release details
// These are automatically injected to built HTML // These are automatically injected to built HTML
var build = "1523657295"; var build = "1523668283";
var version = "3.16.3"; var version = "3.16.3";
// Construct the script tag // Construct the script tag

View File

@ -33,8 +33,8 @@ export default class LazyLoadListener extends React.Component{
render(){ render(){
return ( return (
<div className={"lazy-loader body-loader"+(this.state.loading ? ' loading' : '')}> <div className={"lazy-loader body-loader"+(this.state.loading || this.props.forceLoader ? ' loading' : '')}>
{this.state.loading ? <div className="loader"></div> : null} {this.state.loading || this.props.forceLoader ? <div className="loader"></div> : null}
</div> </div>
) )
} }

View File

@ -137,6 +137,12 @@ class Album extends React.Component{
} }
} }
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue,['spotify_albums/'+helpers.getFromUri('albumid',this.props.params.uri)])){
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return ( return (
<div className="view album-view content-wrapper"> <div className="view album-view content-wrapper">
<div className="thumbnail-wrapper"> <div className="thumbnail-wrapper">
@ -165,7 +171,7 @@ class Album extends React.Component{
<section className="list-wrapper"> <section className="list-wrapper">
<TrackList className="album-track-list" tracks={tracks} uri={this.props.params.uri} /> <TrackList className="album-track-list" tracks={tracks} uri={this.props.params.uri} />
<LazyLoadListener loading={this.props.album.tracks_more} loadMore={ () => this.loadMore() }/> <LazyLoadListener loading={this.props.album.tracks_more} forceLoader={is_loading_tracks} loadMore={() => this.loadMore()}/>
</section> </section>
</div> </div>

View File

@ -174,16 +174,6 @@ class Artist extends React.Component{
default: default:
var tracks = [];
if (this.props.artist.tracks_uris && this.props.tracks){
for (var i = 0; i < this.props.artist.tracks_uris.length; i++){
var uri = this.props.artist.tracks_uris[i]
if (this.props.tracks.hasOwnProperty(uri)){
tracks.push(this.props.tracks[uri])
}
}
}
var sort_options = [ var sort_options = [
{ {
value: 'name', value: 'name',
@ -199,12 +189,29 @@ class Artist extends React.Component{
} }
]; ];
var tracks = [];
if (this.props.artist.tracks_uris && this.props.tracks){
for (var i = 0; i < this.props.artist.tracks_uris.length; i++){
var uri = this.props.artist.tracks_uris[i]
if (this.props.tracks.hasOwnProperty(uri)){
tracks.push(this.props.tracks[uri])
}
}
}
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue,['spotify_artists/'+helpers.getFromUri('artistid',this.props.params.uri)+'/top-tracks'])){
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return ( return (
<div className="body overview"> <div className="body overview">
<div className={"top-tracks col w"+(related_artists.length > 0 ? "70" : "100")}> <div className={"top-tracks col w"+(related_artists.length > 0 ? "70" : "100")}>
<h4>Top tracks</h4> <h4>Top tracks</h4>
<div className="list-wrapper"> <div className="list-wrapper">
<TrackList className="artist-track-list" uri={this.props.params.uri} tracks={tracks} /> <TrackList className="artist-track-list" uri={this.props.params.uri} tracks={tracks} />
<LazyLoadListener forceLoader={is_loading_tracks} />
</div> </div>
</div> </div>

View File

@ -190,6 +190,12 @@ class Playlist extends React.Component{
} }
} }
if (tracks.length <= 0 && helpers.isLoading(this.props.load_queue,['spotify_users/'+user_id+'/playlists/'+playlist_id, 'spotify_users/'+user_id+'/playlists/'+playlist_id+'/tracks'])){
var is_loading_tracks = true;
} else {
var is_loading_tracks = false;
}
return ( return (
<div className="view playlist-view content-wrapper"> <div className="view playlist-view content-wrapper">
<div className="thumbnail-wrapper"> <div className="thumbnail-wrapper">
@ -216,7 +222,7 @@ class Playlist extends React.Component{
<section className="list-wrapper"> <section className="list-wrapper">
<TrackList uri={this.props.params.uri} className="playlist-track-list" context={context} tracks={tracks} removeTracks={ tracks_indexes => this.removeTracks(tracks_indexes) } reorderTracks={ (indexes, index) => this.reorderTracks(indexes, index) } /> <TrackList uri={this.props.params.uri} className="playlist-track-list" context={context} tracks={tracks} removeTracks={ tracks_indexes => this.removeTracks(tracks_indexes) } reorderTracks={ (indexes, index) => this.reorderTracks(indexes, index) } />
<LazyLoadListener loading={this.props.playlist.tracks_more} loadMore={ () => this.loadMore() }/> <LazyLoadListener loading={this.props.playlist.tracks_more} forceLoader={is_loading_tracks} loadMore={() => this.loadMore()}/>
</section> </section>
</div> </div>
) )