mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 23:58:31 -05:00
FIX: Deleting posts in bulk was broken.
This commit is contained in:
parent
6237a155e7
commit
96af490d7c
3 changed files with 37 additions and 3 deletions
|
@ -184,7 +184,7 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
|
||||||
|
|
||||||
var selectedPosts = topicController.get('selectedPosts');
|
var selectedPosts = topicController.get('selectedPosts');
|
||||||
Discourse.Post.deleteMany(selectedPosts);
|
Discourse.Post.deleteMany(selectedPosts);
|
||||||
topicController.get('content.posts').removeObjects(selectedPosts);
|
topicController.get('model.postStream').removePosts(selectedPosts);
|
||||||
topicController.toggleMultiSelect();
|
topicController.toggleMultiSelect();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -407,6 +407,21 @@ Discourse.PostStream = Em.Object.extend({
|
||||||
return post;
|
return post;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
Removes posts from the stream.
|
||||||
|
|
||||||
|
@method removePosts
|
||||||
|
@param {Array} posts the collection of posts to remove
|
||||||
|
**/
|
||||||
|
removePosts: function(posts) {
|
||||||
|
if (Em.isEmpty(posts)) { return; }
|
||||||
|
|
||||||
|
var postIds = posts.map(function (p) { return p.get('id'); });
|
||||||
|
|
||||||
|
this.get('stream').removeObjects(postIds);
|
||||||
|
this.get('posts').removeObjects(posts);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns a post from the identity map if it's been inserted.
|
Returns a post from the identity map if it's been inserted.
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,27 @@ test('updateFromJson', function() {
|
||||||
equal(postStream.get('extra_property'), 12);
|
equal(postStream.get('extra_property'), 12);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("removePosts", function() {
|
||||||
|
var postStream = buildStream(10000001, [1,2,3]);
|
||||||
|
|
||||||
|
var p1 = Discourse.Post.create({id: 1, post_number: 2}),
|
||||||
|
p2 = Discourse.Post.create({id: 2, post_number: 3}),
|
||||||
|
p3 = Discourse.Post.create({id: 3, post_number: 4});
|
||||||
|
|
||||||
|
postStream.appendPost(p1);
|
||||||
|
postStream.appendPost(p2);
|
||||||
|
postStream.appendPost(p3);
|
||||||
|
|
||||||
|
// Removing nothing does nothing
|
||||||
|
postStream.removePosts();
|
||||||
|
equal(postStream.get('posts.length'), 3);
|
||||||
|
|
||||||
|
postStream.removePosts([p1, p3]);
|
||||||
|
equal(postStream.get('posts.length'), 1);
|
||||||
|
deepEqual(postStream.get('stream'), [2]);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
test("cancelFilter", function() {
|
test("cancelFilter", function() {
|
||||||
var postStream = buildStream(1235);
|
var postStream = buildStream(1235);
|
||||||
|
|
||||||
|
@ -343,7 +364,6 @@ test('triggerNewPostInStream', function() {
|
||||||
|
|
||||||
|
|
||||||
test("lastPostLoaded when the id changes", function() {
|
test("lastPostLoaded when the id changes", function() {
|
||||||
|
|
||||||
// This can happen in a race condition between staging a post and it coming through on the
|
// This can happen in a race condition between staging a post and it coming through on the
|
||||||
// message bus. If the id of a post changes we should reconsider the lastPostLoaded property.
|
// message bus. If the id of a post changes we should reconsider the lastPostLoaded property.
|
||||||
var postStream = buildStream(10101, [1, 2]);
|
var postStream = buildStream(10101, [1, 2]);
|
||||||
|
@ -355,7 +375,6 @@ test("lastPostLoaded when the id changes", function() {
|
||||||
|
|
||||||
postWithoutId.set('id', 2);
|
postWithoutId.set('id', 2);
|
||||||
ok(postStream.get('lastPostLoaded'), 'the last post is loaded now that the post has an id');
|
ok(postStream.get('lastPostLoaded'), 'the last post is loaded now that the post has an id');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("comitting and triggerNewPostInStream race condition", function() {
|
test("comitting and triggerNewPostInStream race condition", function() {
|
||||||
|
|
Loading…
Reference in a new issue