FIX: null dates crashed the client app. `last_posted_at` was not updating properly on split topic.

This commit is contained in:
Robin Ward 2013-06-17 13:00:34 -04:00
parent 876a570e3a
commit 3c7eb3a4e8
4 changed files with 15 additions and 6 deletions

View File

@ -18,6 +18,8 @@ Discourse.Formatter = (function(){
}
longDate = function(dt) {
if (!dt) return;
return moment(dt).longDate();
};
@ -30,6 +32,9 @@ Discourse.Formatter = (function(){
};
autoUpdatingRelativeAge = function(date,options) {
if (!date) return "";
options = options || {};
var format = options.format || "tiny";

View File

@ -272,7 +272,7 @@ Handlebars.registerHelper('number', function(property, options) {
@for Handlebars
**/
Handlebars.registerHelper('date', function(property, options) {
var leaveAgo, val;
var leaveAgo;
if (property.hash) {
if (property.hash.leaveAgo) {
leaveAgo = property.hash.leaveAgo === "true";
@ -281,11 +281,11 @@ Handlebars.registerHelper('date', function(property, options) {
property = property.hash.path;
}
}
val = Ember.Handlebars.get(this, property, options);
var date = null;
var val = Ember.Handlebars.get(this, property, options);
if (val) {
date = new Date(val);
}
var date = new Date(val);
return new Handlebars.SafeString(Discourse.Formatter.autoUpdatingRelativeAge(date, {format: 'medium', leaveAgo: leaveAgo}));
}
});

View File

@ -270,7 +270,8 @@ class Topic < ActiveRecord::Base
def self.reset_highest(topic_id)
result = exec_sql "UPDATE topics
SET highest_post_number = (SELECT COALESCE(MAX(post_number), 0) FROM posts WHERE topic_id = :topic_id AND deleted_at IS NULL),
posts_count = (SELECT count(*) FROM posts WHERE deleted_at IS NULL AND topic_id = :topic_id)
posts_count = (SELECT count(*) FROM posts WHERE deleted_at IS NULL AND topic_id = :topic_id),
last_posted_at = (SELECT MAX(created_at) FROM POSTS WHERE topic_id = :topic_id AND deleted_at IS NULL)
WHERE id = :topic_id
RETURNING highest_post_number", topic_id: topic_id
highest_post_number = result.first['highest_post_number'].to_i

View File

@ -276,6 +276,7 @@ describe Topic do
new_topic.should be_present
new_topic.featured_user1_id.should == another_user.id
new_topic.like_count.should == 1
new_topic.category.should == category
topic.featured_user1_id.should be_blank
new_topic.posts.should =~ [p2, p4]
@ -283,6 +284,7 @@ describe Topic do
new_topic.reload
new_topic.posts_count.should == 2
new_topic.highest_post_number.should == 2
expect(new_topic.last_posted_at).to be_present
p2.reload
p2.sort_order.should == 1
@ -298,6 +300,7 @@ describe Topic do
topic.posts_count.should == 2
topic.posts.should =~ [p1, p3]
topic.highest_post_number.should == p3.post_number
end
end