diff --git a/app/assets/javascripts/discourse/models/post-stream.js.es6 b/app/assets/javascripts/discourse/models/post-stream.js.es6 index a426fc2c3b0..51e536965e7 100644 --- a/app/assets/javascripts/discourse/models/post-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/post-stream.js.es6 @@ -609,9 +609,14 @@ export default RestModel.extend({ this.set("loadingLastPost", true); return this.findPostsByIds([postId]) .then(posts => { - const ignoredUsers = this.get("currentUser.ignored_users"); + const ignoredUsers = + Discourse.User.current() && + Discourse.User.current().get("ignored_users"); posts.forEach(p => { - if (ignoredUsers && ignoredUsers.includes(p.username)) return; + if (ignoredUsers && ignoredUsers.includes(p.username)) { + this.stream.removeObject(postId); + return; + } this.appendPost(p); }); }) diff --git a/test/javascripts/models/post-stream-test.js.es6 b/test/javascripts/models/post-stream-test.js.es6 index c5153f1dac1..eb99d811afb 100644 --- a/test/javascripts/models/post-stream-test.js.es6 +++ b/test/javascripts/models/post-stream-test.js.es6 @@ -803,12 +803,14 @@ QUnit.test("comitting and triggerNewPostInStream race condition", assert => { QUnit.test("triggerNewPostInStream for ignored posts", async assert => { const postStream = buildStream(280, [1]); const store = postStream.store; - postStream.currentUser = Discourse.User.create({ - username: "eviltrout", - name: "eviltrout", - id: 321, - ignored_users: ["ignoreduser"] - }); + Discourse.User.resetCurrent( + Discourse.User.create({ + username: "eviltrout", + name: "eviltrout", + id: 321, + ignored_users: ["ignoreduser"] + }) + ); postStream.appendPost(store.createRecord("post", { id: 1, post_number: 1 })); @@ -829,13 +831,31 @@ QUnit.test("triggerNewPostInStream for ignored posts", async assert => { .returns(Promise.resolve([post2])); await postStream.triggerNewPostInStream(101); - assert.equal(postStream.get("posts.length"), 2, "it added the regular post"); + assert.equal( + postStream.posts.length, + 2, + "it added the regular post to the posts" + ); + assert.equal( + postStream.get("stream.length"), + 2, + "it added the regular post to the stream" + ); stub.restore(); sandbox.stub(postStream, "findPostsByIds").returns(Promise.resolve([post3])); - postStream.triggerNewPostInStream(102); - assert.equal(postStream.posts.length, 2, "it does not add the ignored post"); + await postStream.triggerNewPostInStream(102); + assert.equal( + postStream.posts.length, + 2, + "it does not add the ignored post to the posts" + ); + assert.equal( + postStream.stream.length, + 2, + "it does not add the ignored post to the stream" + ); }); QUnit.test("postsWithPlaceholders", assert => {