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');
|
||||
Discourse.Post.deleteMany(selectedPosts);
|
||||
topicController.get('content.posts').removeObjects(selectedPosts);
|
||||
topicController.get('model.postStream').removePosts(selectedPosts);
|
||||
topicController.toggleMultiSelect();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -407,6 +407,21 @@ Discourse.PostStream = Em.Object.extend({
|
|||
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.
|
||||
|
||||
|
|
|
@ -83,6 +83,27 @@ test('updateFromJson', function() {
|
|||
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() {
|
||||
var postStream = buildStream(1235);
|
||||
|
||||
|
@ -343,7 +364,6 @@ test('triggerNewPostInStream', 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
|
||||
// message bus. If the id of a post changes we should reconsider the lastPostLoaded property.
|
||||
var postStream = buildStream(10101, [1, 2]);
|
||||
|
@ -355,7 +375,6 @@ test("lastPostLoaded when the id changes", function() {
|
|||
|
||||
postWithoutId.set('id', 2);
|
||||
ok(postStream.get('lastPostLoaded'), 'the last post is loaded now that the post has an id');
|
||||
|
||||
});
|
||||
|
||||
test("comitting and triggerNewPostInStream race condition", function() {
|
||||
|
|
Loading…
Reference in a new issue