Theme Installer: Avoid race condition during pagination.
props matveb. see #27055. git-svn-id: https://develop.svn.wordpress.org/trunk@27845 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
33f728034d
commit
3b11bb9e36
@ -269,6 +269,9 @@ themes.Collection = Backbone.Collection.extend({
|
|||||||
self.add( data.themes );
|
self.add( data.themes );
|
||||||
self.trigger( 'query:success' );
|
self.trigger( 'query:success' );
|
||||||
|
|
||||||
|
// We are done loading themes for now.
|
||||||
|
self.loadingThemes = false;
|
||||||
|
|
||||||
}).fail( function() {
|
}).fail( function() {
|
||||||
self.trigger( 'query:fail' );
|
self.trigger( 'query:fail' );
|
||||||
});
|
});
|
||||||
@ -331,7 +334,10 @@ themes.Collection = Backbone.Collection.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
|
|
||||||
|
// Static status controller for when we are loading themes.
|
||||||
|
loadingThemes: false
|
||||||
});
|
});
|
||||||
|
|
||||||
// This is the view that controls each theme item
|
// This is the view that controls each theme item
|
||||||
@ -1148,7 +1154,17 @@ themes.view.Installer = themes.view.Appearance.extend({
|
|||||||
|
|
||||||
// Bump `collection.currentQuery.page` and request more themes if we hit the end of the page.
|
// Bump `collection.currentQuery.page` and request more themes if we hit the end of the page.
|
||||||
this.listenTo( this, 'theme:end', function() {
|
this.listenTo( this, 'theme:end', function() {
|
||||||
|
|
||||||
|
// Make sure we are not already loading
|
||||||
|
if ( self.collection.loadingThemes ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set loadingThemes to true and bump page instance of currentQuery.
|
||||||
|
self.collection.loadingThemes = true;
|
||||||
self.collection.currentQuery.page++;
|
self.collection.currentQuery.page++;
|
||||||
|
|
||||||
|
// Use currentQuery.page to build the themes request.
|
||||||
_.extend( self.collection.currentQuery.request, { page: self.collection.currentQuery.page } );
|
_.extend( self.collection.currentQuery.request, { page: self.collection.currentQuery.page } );
|
||||||
self.collection.query( self.collection.currentQuery.request );
|
self.collection.query( self.collection.currentQuery.request );
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user