Merge pull request #4747 from Raven24/fix_aspect_stream

fix regression caused by updating backbone.js in aspect stream
This commit is contained in:
Jonne Haß 2014-02-09 15:37:13 +01:00
commit 17754f1da8
4 changed files with 41 additions and 9 deletions

View file

@ -10,6 +10,8 @@
## Bug fixes
* Improve time agos by updating the plugin [#4280](https://github.com/diaspora/diaspora/issues/4280)
* Use youtube HTTPS scheme for oEmbed [#4743](https://github.com/diaspora/diaspora/pull/4743)
* Fix infinite scroll on aspect streams [#4729](https://github.com/diaspora/diaspora/issues/4729)
## Features
* You can report a single post by clicking the correct icon in the controler section [#4517](https://github.com/diaspora/diaspora/pull/4517)

View file

@ -15,13 +15,18 @@ app.models.Stream = Backbone.Collection.extend({
return _.any(this.items.models) ? this.timeFilteredPath() : this.basePath()
},
_fetchOpts: function(opts) {
var defaultOpts = {
remove: false // tell backbone to keep existing items in the collection
};
return _.extend({}, defaultOpts, opts);
},
fetch: function() {
if( this.isFetching() ) return false;
var url = this.url();
this.deferred = this.items.fetch({
remove : false,
url : url
}).done(_.bind(this.triggerFetchedEvents, this))
this.deferred = this.items.fetch(this._fetchOpts({url : url}))
.done(_.bind(this.triggerFetchedEvents, this));
},
isFetching : function() {

View file

@ -18,10 +18,7 @@ app.models.StreamAspects = app.models.Stream.extend({
if(this.isFetching()){ return false }
var url = this.url();
var ids = this.aspects_ids;
this.deferred = this.items.fetch({
add : true,
url : url,
data : { 'a_ids': ids }
}).done(_.bind(this.triggerFetchedEvents, this))
this.deferred = this.items.fetch(this._fetchOpts({url : url, data : { 'a_ids': ids }}))
.done(_.bind(this.triggerFetchedEvents, this));
}
});

View file

@ -0,0 +1,28 @@
describe("app.models.StreamAspects", function() {
describe("#fetch", function(){
var fetch,
stream;
beforeEach(function(){
fetch = new $.Deferred();
stream = new app.models.StreamAspects([], {aspects_ids: [1,2]});
spyOn(stream.items, "fetch").andCallFake(function(options){
stream.items.set([{name: 'a'}, {name: 'b'}, {name: 'c'}], options);
fetch.resolve();
return fetch;
});
});
it("fetches some posts", function(){
stream.fetch();
expect(stream.items.length).toEqual(3);
});
it("fetches more posts", function(){
stream.fetch();
expect(stream.items.length).toEqual(3);
stream.fetch();
expect(stream.items.length).toEqual(6);
});
});
});