Upgrade Ember.js, fix swallowing of template errors, report unresolved promises in development mode.

This commit is contained in:
Robin Ward
2013-12-02 13:15:31 -05:00
parent 79f1055164
commit 48bfcfadd9
13 changed files with 10620 additions and 7859 deletions

View File

@@ -64,8 +64,8 @@ gem 'html_truncator'
# we had issues with latest, stick to the rev till we figure this out # we had issues with latest, stick to the rev till we figure this out
# PR that makes it all hang together welcome # PR that makes it all hang together welcome
gem 'ember-rails' gem 'ember-rails'
gem 'ember-source', '1.0.0.rc6.2' gem 'ember-source', '~> 1.2.0.1'
gem 'handlebars-source', '1.0.12' gem 'handlebars-source', '~> 1.1.2'
gem 'barber' gem 'barber'
gem 'vestal_versions', git: 'https://github.com/SamSaffron/vestal_versions' gem 'vestal_versions', git: 'https://github.com/SamSaffron/vestal_versions'

View File

@@ -160,16 +160,17 @@ GEM
diffy (3.0.1) diffy (3.0.1)
ember-data-source (0.14) ember-data-source (0.14)
ember-source ember-source
ember-rails (0.13.0) ember-rails (0.14.1)
active_model_serializers active_model_serializers
barber (>= 0.4.1) barber (>= 0.4.1)
ember-data-source ember-data-source
ember-source ember-source
execjs (>= 1.2) execjs (>= 1.2)
handlebars-source handlebars-source
jquery-rails (>= 1.0.17)
railties (>= 3.1) railties (>= 3.1)
ember-source (1.0.0.rc6.2) ember-source (1.2.0.1)
handlebars-source (= 1.0.12) handlebars-source (~> 1.1.2)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.0.3) eventmachine (1.0.3)
excon (0.28.0) excon (0.28.0)
@@ -202,7 +203,7 @@ GEM
fspath (2.0.5) fspath (2.0.5)
given_core (3.1.1) given_core (3.1.1)
sorcerer (>= 0.3.7) sorcerer (>= 0.3.7)
handlebars-source (1.0.12) handlebars-source (1.1.2)
hashie (2.0.5) hashie (2.0.5)
highline (1.6.20) highline (1.6.20)
hike (1.2.3) hike (1.2.3)
@@ -221,6 +222,9 @@ GEM
image_size (1.1.3) image_size (1.1.3)
image_sorcery (1.1.0) image_sorcery (1.1.0)
in_threads (1.2.0) in_threads (1.2.0)
jquery-rails (3.0.4)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.1) json (1.8.1)
jwt (0.1.8) jwt (0.1.8)
multi_json (>= 1.5) multi_json (>= 1.5)
@@ -471,7 +475,7 @@ DEPENDENCIES
discourse_plugin! discourse_plugin!
email_reply_parser! email_reply_parser!
ember-rails ember-rails
ember-source (= 1.0.0.rc6.2) ember-source (~> 1.2.0.1)
eventmachine eventmachine
fabrication fabrication
fakeweb (~> 1.3.0) fakeweb (~> 1.3.0)
@@ -481,7 +485,7 @@ DEPENDENCIES
fastimage fastimage
flamegraph! flamegraph!
fog (= 1.18.0) fog (= 1.18.0)
handlebars-source (= 1.0.12) handlebars-source (~> 1.1.2)
highline highline
hiredis hiredis
html_truncator html_truncator

View File

@@ -283,8 +283,7 @@ Discourse.ComposerController = Discourse.Controller.extend({
} else { } else {
opts.tested = true; opts.tested = true;
if (!opts.ignoreIfChanged) { if (!opts.ignoreIfChanged) {
this.cancelComposer().then(function() { self.open(opts); }, this.cancelComposer().then(function() { self.open(opts); }).fail(function() { return promise.reject(); });
function() { return promise.reject(); });
} }
return promise; return promise;
} }
@@ -341,10 +340,8 @@ Discourse.ComposerController = Discourse.Controller.extend({
self.destroyDraft(); self.destroyDraft();
self.get('model').clearState(); self.get('model').clearState();
self.close(); self.close();
promise.resolve();
} else {
promise.reject();
} }
promise.resolve();
}); });
} else { } else {
// it is possible there is some sort of crazy draft with no body ... just give up on it // it is possible there is some sort of crazy draft with no body ... just give up on it

View File

@@ -284,10 +284,10 @@ Discourse.PostStream = Em.Object.extend({
var self = this; var self = this;
// Make sure we can append more posts // Make sure we can append more posts
if (!self.get('canAppendMore')) { return Ember.RSVP.reject(); } if (!self.get('canAppendMore')) { return Ember.RSVP.resolve(); }
var postIds = self.get('nextWindow'); var postIds = self.get('nextWindow');
if (Ember.isEmpty(postIds)) { return Ember.RSVP.reject(); } if (Ember.isEmpty(postIds)) { return Ember.RSVP.resolve(); }
self.set('loadingBelow', true); self.set('loadingBelow', true);
@@ -310,14 +310,13 @@ Discourse.PostStream = Em.Object.extend({
@returns {Ember.Deferred} a promise that's resolved when the posts have been added. @returns {Ember.Deferred} a promise that's resolved when the posts have been added.
**/ **/
prependMore: function() { prependMore: function() {
var postStream = this, var postStream = this;
rejectedPromise = Ember.RSVP.reject();
// Make sure we can append more posts // Make sure we can append more posts
if (!postStream.get('canPrependMore')) { return rejectedPromise; } if (!postStream.get('canPrependMore')) { return Ember.RSVP.resolve(); }
var postIds = postStream.get('previousWindow'); var postIds = postStream.get('previousWindow');
if (Ember.isEmpty(postIds)) { return rejectedPromise; } if (Ember.isEmpty(postIds)) { return Ember.RSVP.resolve(); }
postStream.set('loadingAbove', true); postStream.set('loadingAbove', true);
return postStream.findPostsByIds(postIds.reverse()).then(function(posts) { return postStream.findPostsByIds(postIds.reverse()).then(function(posts) {

View File

@@ -355,7 +355,7 @@ Discourse.Topic.reopenClass({
data: {destination_topic_id: destinationTopicId} data: {destination_topic_id: destinationTopicId}
}).then(function (result) { }).then(function (result) {
if (result.success) return result; if (result.success) return result;
promise.reject(); promise.reject(new Error("error merging topic"));
}); });
return promise; return promise;
}, },
@@ -366,7 +366,7 @@ Discourse.Topic.reopenClass({
data: opts data: opts
}).then(function (result) { }).then(function (result) {
if (result.success) return result; if (result.success) return result;
promise.reject(); promise.reject(new Error("error moving posts topic"));
}); });
return promise; return promise;
} }

View File

@@ -7,7 +7,6 @@
@module Discourse @module Discourse
**/ **/
Discourse.TopicFromParamsRoute = Discourse.Route.extend({ Discourse.TopicFromParamsRoute = Discourse.Route.extend({
abc: 'asdfasdf',
setupController: function(controller, params) { setupController: function(controller, params) {
params = params || {}; params = params || {};

View File

@@ -7,8 +7,6 @@
@module Discourse @module Discourse
**/ **/
Discourse.TopicRoute = Discourse.Route.extend({ Discourse.TopicRoute = Discourse.Route.extend({
abc: 'def',
redirect: function() { Discourse.redirectIfLoginRequired(this); }, redirect: function() { Discourse.redirectIfLoginRequired(this); },
actions: { actions: {

View File

@@ -11,6 +11,24 @@
})(); })();
</script> </script>
<% if Rails.env.development? %>
<script>
// Don't swallow promises in development mode. Let's fix those.
Ember.RSVP.configure('onerror', function(e) {
if (e) {
if (e.message || e.stack) {
console.log(e.message);
console.log(e.stack);
} else {
console.log("Uncaught promise: " + e.toString());
}
} else {
console.log("A promise failed but was not caught.");
}
});
</script>
<% end %>
<script> <script>
Discourse.CDN = '<%= Rails.configuration.action_controller.asset_host %>'; Discourse.CDN = '<%= Rails.configuration.action_controller.asset_host %>';
Discourse.BaseUrl = '<%= RailsMultisite::ConnectionManagement.current_hostname %>'; Discourse.BaseUrl = '<%= RailsMultisite::ConnectionManagement.current_hostname %>';

View File

@@ -1,52 +1,49 @@
var view, oldMobileView; var smallLogoUrl = "/assets/logo-single.png",
bigLogoUrl = "/assets/logo.png",
var View = Ember.View.extend({ smallLogoSelector = "img.logo-small",
template: Ember.Handlebars.compile("{{home-logo minimized=view.minimized}}") bigLogoSelector = "img#site-logo.logo-big",
}); homeIconSelector = "i.icon-home",
headerSelector = "h2#site-text-logo.text-logo";
var setSmallLogoUrl = function(url) { function setSmallLogoUrl(url) {
Discourse.SiteSettings.logo_small_url = url; Discourse.SiteSettings.logo_small_url = url;
}; }
var setBigLogoUrl = function(url) { function setBigLogoUrl(url) {
Discourse.SiteSettings.logo_url = url; Discourse.SiteSettings.logo_url = url;
}; }
var setTitle = function(title) { function setTitle(title) {
Discourse.SiteSettings.title = title; Discourse.SiteSettings.title = title;
}; }
var setMobileView = function(value) { function setMobileView(value) {
Discourse.Mobile.mobileView = value; Discourse.Mobile.mobileView = value;
}; }
var setMinimized = function(value) { var view;
function setMinimized(value) {
Ember.run(function() { Ember.run(function() {
view.set("minimized", value); view.set("minimized", value);
}); });
}; }
function appendView() {
var smallLogoUrl = "/assets/logo-single.png";
var bigLogoUrl = "/assets/logo.png";
var smallLogoSelector = "img.logo-small";
var bigLogoSelector = "img#site-logo.logo-big";
var homeIconSelector = "i.icon-home";
var headerSelector = "h2#site-text-logo.text-logo";
var appendView = function() {
Ember.run(function() { Ember.run(function() {
view.appendTo(fixture()); view.appendTo(fixture());
}); });
}; }
var oldMobileView;
module("Discourse.HomeLogoComponent", { module("Discourse.HomeLogoComponent", {
setup: function() { setup: function() {
oldMobileView = Discourse.Mobile.mobileView; oldMobileView = Discourse.Mobile.mobileView;
view = View.create();
view = Ember.View.create({
container: Discourse.__container__,
template: Ember.Handlebars.compile("{{home-logo minimized=view.minimized}}")
});
}, },
teardown: function() { teardown: function() {

File diff suppressed because it is too large Load Diff

View File

@@ -77,6 +77,10 @@ if ((typeof console !== 'undefined') && console.groupCollapsed && !window.QUnit)
after: function(name, timestamp, payload, profileNode) { after: function(name, timestamp, payload, profileNode) {
if (payload.exception) {
throw payload.exception;
}
var parent = profileNode.parent; var parent = profileNode.parent;
profileNode.time = (timestamp - profileNode.start); profileNode.time = (timestamp - profileNode.start);
this.depth = profileNode.parent; this.depth = profileNode.parent;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff