From 00572c4f1134f2d717dee41c4d75e5d32afed534 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Fri, 19 Jun 2015 10:32:58 -0400 Subject: [PATCH] FIX: The time gap would disappear after a post was comitted --- .../discourse/models/post-stream.js.es6 | 7 ++++++- test/javascripts/models/post-stream-test.js.es6 | 14 +++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/models/post-stream.js.es6 b/app/assets/javascripts/discourse/models/post-stream.js.es6 index e92f92f41cf..f882b258d1b 100644 --- a/app/assets/javascripts/discourse/models/post-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/post-stream.js.es6 @@ -397,8 +397,13 @@ const PostStream = RestModel.extend({ const stored = this.storePost(post); if (stored) { const posts = this.get('posts'); - calcDayDiff(stored, posts.get('lastObject')); + + calcDayDiff(stored, this.get('lastAppended')); posts.addObject(stored); + + if (stored.get('id') !== -1) { + this.set('lastAppended', stored); + } } return post; }, diff --git a/test/javascripts/models/post-stream-test.js.es6 b/test/javascripts/models/post-stream-test.js.es6 index 74569a03651..9790fcea41b 100644 --- a/test/javascripts/models/post-stream-test.js.es6 +++ b/test/javascripts/models/post-stream-test.js.es6 @@ -349,7 +349,9 @@ test("staging and undoing a new post", function() { const postStream = buildStream(10101, [1]); const store = postStream.store; - postStream.appendPost(store.createRecord('post', {id: 1, post_number: 1, topic_id: 10101})); + const original = store.createRecord('post', {id: 1, post_number: 1, topic_id: 10101}); + postStream.appendPost(original); + ok(postStream.get('lastAppended'), original, "the original post is lastAppended"); const user = Discourse.User.create({username: 'eviltrout', name: 'eviltrout', id: 321}); const stagedPost = store.createRecord('post', { raw: 'hello world this is my new post', topic_id: 10101 }); @@ -365,6 +367,7 @@ test("staging and undoing a new post", function() { equal(result, "staged", "it returns staged"); equal(topic.get('highest_post_number'), 2, "it updates the highest_post_number"); ok(postStream.get('loading'), "it is loading while the post is being staged"); + ok(postStream.get('lastAppended'), original, "it doesn't consider staged posts as the lastAppended"); equal(topic.get('posts_count'), 2, "it increases the post count"); present(topic.get('last_posted_at'), "it updates last_posted_at"); @@ -384,13 +387,17 @@ test("staging and undoing a new post", function() { equal(topic.get('posts_count'), 1, "it reverts the post count"); equal(postStream.get('filteredPostsCount'), 1, "it retains the filteredPostsCount"); ok(!postStream.get('posts').contains(stagedPost), "the post is removed from the stream"); + ok(postStream.get('lastAppended'), original, "it doesn't consider undid post lastAppended"); }); test("staging and committing a post", function() { const postStream = buildStream(10101, [1]); const store = postStream.store; - postStream.appendPost(store.createRecord('post', {id: 1, post_number: 1, topic_id: 10101})); + const original = store.createRecord('post', {id: 1, post_number: 1, topic_id: 10101}); + postStream.appendPost(original); + ok(postStream.get('lastAppended'), original, "the original post is lastAppended"); + const user = Discourse.User.create({username: 'eviltrout', name: 'eviltrout', id: 321}); const stagedPost = store.createRecord('post', { raw: 'hello world this is my new post', topic_id: 10101 }); @@ -406,6 +413,7 @@ test("staging and committing a post", function() { result = postStream.stagePost(stagedPost, user); equal(result, "alreadyStaging", "you can't stage a post while it is currently staging"); + ok(postStream.get('lastAppended'), original, "staging a post doesn't change the lastAppended"); postStream.commitPost(stagedPost); ok(postStream.get('posts').contains(stagedPost), "the post is still in the stream"); @@ -417,7 +425,7 @@ test("staging and committing a post", function() { present(found, "the post is in the identity map"); ok(postStream.indexOf(stagedPost) > -1, "the post is in the stream"); equal(found.get('raw'), 'different raw value', 'it also updated the value in the stream'); - + ok(postStream.get('lastAppended'), found, "comitting a post changes lastAppended"); }); test('triggerNewPostInStream', function() {