Skip to content

Commit cb9fb2a

Browse files
committed
FIX: A post via the message bus wasn't updating highest_post_number properly.
1 parent 915861a commit cb9fb2a

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

app/assets/javascripts/discourse/controllers/topic_controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
271271
streamPercentage: function() {
272272
if (!this.get('postStream.loaded')) { return 0; }
273273
if (this.get('postStream.highest_post_number') === 0) { return 0; }
274-
return this.get('progressPosition') / this.get('highest_post_number');
274+
var perc = this.get('progressPosition') / this.get('highest_post_number');
275+
return (perc > 1.0) ? 1.0 : perc;
275276
}.property('postStream.loaded', 'progressPosition', 'highest_post_number'),
276277

277278
multiSelectChanged: function() {

app/assets/javascripts/discourse/models/post_stream.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,12 @@ Discourse.PostStream = Em.Object.extend({
563563

564564
post.set('topic', this.get('topic'));
565565
postIdentityMap.set(post.get('id'), post);
566+
567+
// Update the `highest_post_number` if this post is higher.
568+
var postNumber = post.get('post_number');
569+
if (postNumber && postNumber > (this.get('topic.highest_post_number') || 0)) {
570+
this.set('topic.highest_post_number', postNumber);
571+
}
566572
}
567573
return post;
568574
},

test/javascripts/models/post_stream_test.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,16 @@ test("previousWindow", function() {
206206
});
207207

208208
test("storePost", function() {
209-
var postStream = buildStream(1234);
209+
var postStream = buildStream(1234),
210+
post = Discourse.Post.create({id: 1, post_number: 100, raw: 'initial value'});
210211

211-
var post = Discourse.Post.create({id: 1, post_number: 1, raw: 'initial value'});
212+
blank(postStream.get('topic.highest_post_number'), "it has no highest post number yet");
212213
var stored = postStream.storePost(post);
213214
equal(post, stored, "it returns the post it stored");
214215
equal(post.get('topic'), postStream.get('topic'), "it creates the topic reference properly");
216+
equal(postStream.get('topic.highest_post_number'), 100, "it set the highest post number");
215217

216-
var dupePost = Discourse.Post.create({id: 1, post_number: 1, raw: 'updated value'});
218+
var dupePost = Discourse.Post.create({id: 1, post_number: 100, raw: 'updated value'});
217219
var storedDupe = postStream.storePost(dupePost);
218220
equal(storedDupe, post, "it returns the previously stored post instead to avoid dupes");
219221
equal(storedDupe.get('raw'), 'updated value', 'it updates the previously stored post');

0 commit comments

Comments
 (0)