Replaced `Em.run.next` with the more proper `Em.run.schedule('afterRender')`
when we are waiting for rendering to finish.
This commit is contained in:
parent
a3dce9afd7
commit
b794830a25
|
@ -128,9 +128,9 @@ Discourse.Development = {
|
|||
if (this.get('templateName') === templateName) {
|
||||
this.set('templateName', 'empty');
|
||||
this.rerender();
|
||||
return Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
_this.set('templateName', templateName);
|
||||
return _this.rerender();
|
||||
_this.rerender();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -20,7 +20,7 @@ Discourse.ApplicationController = Discourse.Controller.extend({
|
|||
if (window._gaq === undefined) { return; }
|
||||
|
||||
if(this.afterFirstHit) {
|
||||
Em.run.next(function(){
|
||||
Em.run.schedule('afterRender', function() {
|
||||
_gaq.push(['_trackPageview']);
|
||||
});
|
||||
} else {
|
||||
|
|
|
@ -84,7 +84,8 @@ Discourse.QuoteButtonController = Discourse.Controller.extend({
|
|||
var markerOffset = $(markerElement).offset(),
|
||||
$quoteButton = $('.quote-button');
|
||||
|
||||
Em.run.next(function(){
|
||||
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$quoteButton.offset({
|
||||
top: markerOffset.top - $quoteButton.outerHeight() - 5,
|
||||
left: markerOffset.left
|
||||
|
|
|
@ -246,7 +246,7 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
|
|||
loadPosts: function(opts) {
|
||||
var topicController = this;
|
||||
this.get('content').loadPosts(opts).then(function () {
|
||||
Em.run.next(function () { topicController.updateBottomBar(); });
|
||||
Em.run.scheduleOnce('afterRender', topicController, 'updateBottomBar');
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -276,7 +276,7 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected
|
|||
posts.pushObject(Discourse.Post.create(p, topic));
|
||||
});
|
||||
|
||||
Em.run.next(function () { topicController.updateBottomBar(); });
|
||||
Em.run.scheduleOnce('afterRender', topicController, 'updateBottomBar');
|
||||
|
||||
topicController.set('filtered_posts_count', result.filtered_posts_count);
|
||||
topicController.set('loadingBelow', false);
|
||||
|
|
|
@ -40,7 +40,7 @@ Discourse.ChooseTopicView = Discourse.View.extend({
|
|||
var topicId = Em.get(topic, 'id');
|
||||
this.set('selectedTopicId', topicId);
|
||||
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function () {
|
||||
$('#choose-topic-' + topicId).prop('checked', 'true');
|
||||
});
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ Discourse.ComposerView = Discourse.View.extend({
|
|||
|
||||
resize: function() {
|
||||
// this still needs to wait on animations, need a clean way to do that
|
||||
return Em.run.next(null, function() {
|
||||
return Em.run.schedule('afterRender', function() {
|
||||
var replyControl = $('#reply-control');
|
||||
var h = replyControl.height() || 0;
|
||||
var sizePx = "" + h + "px";
|
||||
|
@ -263,7 +263,7 @@ Discourse.ComposerView = Discourse.View.extend({
|
|||
// cf. https://github.com/blueimp/jQuery-File-Upload/wiki/API#how-to-cancel-an-upload
|
||||
var jqXHR = data.xhr();
|
||||
// need to wait for the link to show up in the DOM
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
// bind on the click event on the cancel link
|
||||
$('#cancel-image-upload').on('click', function() {
|
||||
// cancel the upload
|
||||
|
@ -334,9 +334,11 @@ Discourse.ComposerView = Discourse.View.extend({
|
|||
caretPosition = Discourse.Utilities.caretPosition(ctrl),
|
||||
current = this.get('content.reply');
|
||||
this.set('content.reply', current.substring(0, caretPosition) + text + current.substring(caretPosition, current.length));
|
||||
return Em.run.next(function() {
|
||||
return Discourse.Utilities.setCaretPosition(ctrl, caretPosition + text.length);
|
||||
|
||||
Em.run.schedule('afterRender', function() {
|
||||
Discourse.Utilities.setCaretPosition(ctrl, caretPosition + text.length);
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// Uses javascript to get the image sizes from the preview, if present
|
||||
|
|
|
@ -17,9 +17,7 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, {
|
|||
insertedCount: (function() {
|
||||
var inserted;
|
||||
inserted = this.get('controller.inserted');
|
||||
if (!inserted) {
|
||||
return 0;
|
||||
}
|
||||
if (!inserted) return 0;
|
||||
return inserted.length;
|
||||
}).property('controller.inserted.@each'),
|
||||
|
||||
|
@ -36,24 +34,26 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, {
|
|||
}).property('loading', 'controller.content.more_topics_url'),
|
||||
|
||||
didInsertElement: function() {
|
||||
var eyeline, scrollPos,
|
||||
_this = this;
|
||||
this.bindScrolling();
|
||||
eyeline = new Discourse.Eyeline('.topic-list-item');
|
||||
var eyeline = new Discourse.Eyeline('.topic-list-item');
|
||||
|
||||
var listTopicsView = this;
|
||||
eyeline.on('sawBottom', function() {
|
||||
return _this.loadMore();
|
||||
listTopicsView.loadMore();
|
||||
});
|
||||
if (scrollPos = Discourse.get('transient.topicListScrollPos')) {
|
||||
Em.run.next(function() {
|
||||
return $('html, body').scrollTop(scrollPos);
|
||||
|
||||
var scrollPos = Discourse.get('transient.topicListScrollPos');
|
||||
if (scrollPos) {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$('html, body').scrollTop(scrollPos);
|
||||
});
|
||||
} else {
|
||||
Em.run.next(function() {
|
||||
return $('html, body').scrollTop(0);
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$('html, body').scrollTop(0);
|
||||
});
|
||||
}
|
||||
this.set('eyeline', eyeline);
|
||||
return this.set('currentTopicId', null);
|
||||
this.set('currentTopicId', null);
|
||||
},
|
||||
|
||||
loadMore: function() {
|
||||
|
@ -66,7 +66,9 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, {
|
|||
promise.then(function(hasMoreResults) {
|
||||
listTopicsView.set('loadedMore', true);
|
||||
listTopicsView.set('loading', false);
|
||||
Em.run.next(function() { listTopicsView.saveScrollPos(); });
|
||||
Em.run.schedule('afterRender', function() {
|
||||
listTopicsView.saveScrollPos();
|
||||
});
|
||||
if (!hasMoreResults) {
|
||||
listTopicsView.get('eyeline').flushRest();
|
||||
}
|
||||
|
|
|
@ -278,11 +278,11 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({
|
|||
didInsertElement: function(e) {
|
||||
// allows the submission the form when pressing 'ENTER' on *any* text input field
|
||||
// but only when the submit button is enabled
|
||||
var _this = this;
|
||||
return Em.run.next(function() {
|
||||
return $("input[type='text'], input[type='password']").keydown(function(e) {
|
||||
if (_this.get('submitDisabled') === false && e.keyCode === 13) {
|
||||
return _this.createAccount();
|
||||
var createAccountView = this;
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$("input[type='text'], input[type='password']").keydown(function(e) {
|
||||
if (createAccountView.get('submitDisabled') === false && e.keyCode === 13) {
|
||||
createAccountView.createAccount();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -35,7 +35,7 @@ Discourse.FlagView = Discourse.ModalBodyView.extend({
|
|||
this.set('postActionTypeId', action.id);
|
||||
this.set('isCustomFlag', action.is_custom_flag);
|
||||
this.set('selected', action);
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$('#radio_' + action.name_key).prop('checked', 'true');
|
||||
});
|
||||
return false;
|
||||
|
@ -45,7 +45,7 @@ Discourse.FlagView = Discourse.ModalBodyView.extend({
|
|||
var _this = this;
|
||||
|
||||
var action = this.get('selected');
|
||||
var postAction = this.get('post.actionByName.' + (action.get('name_key')));
|
||||
var postAction = this.get('post.actionByName.' + (action.get('name_key')));
|
||||
|
||||
var actionType = Discourse.get('site').postActionTypeById(this.get('postActionTypeId'));
|
||||
if (postAction) {
|
||||
|
|
|
@ -33,9 +33,9 @@ Discourse.InviteModalView = Discourse.ModalBodyView.extend({
|
|||
}).property('email'),
|
||||
|
||||
didInsertElement: function() {
|
||||
var _this = this;
|
||||
Em.run.next(function() {
|
||||
_this.$('input').focus();
|
||||
var inviteModalView = this;
|
||||
Em.run.schedule('afterRender', function() {
|
||||
inviteModalView.$('input').focus();
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -25,9 +25,9 @@ Discourse.InvitePrivateModalView = Discourse.ModalBodyView.extend({
|
|||
}).property('saving'),
|
||||
|
||||
didInsertElement: function() {
|
||||
var _this = this;
|
||||
return Em.run.next(function() {
|
||||
return _this.$('input').focus();
|
||||
var invitePrivateModalView = this;
|
||||
Em.run.schedule('afterRender', function() {
|
||||
invitePrivateModalView.$('input').focus();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -39,11 +39,11 @@ Discourse.InvitePrivateModalView = Discourse.ModalBodyView.extend({
|
|||
this.get('topic').inviteUser(this.get('emailOrUsername')).then(function() {
|
||||
// Success
|
||||
_this.set('saving', false);
|
||||
return _this.set('finished', true);
|
||||
_this.set('finished', true);
|
||||
}, function() {
|
||||
// Failure
|
||||
_this.set('error', true);
|
||||
return _this.set('saving', false);
|
||||
_this.set('saving', false);
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ Discourse.LoginView = Discourse.ModalBodyView.extend({
|
|||
this.set('loginPassword', $('#hidden-login-form input[name=password]').val());
|
||||
|
||||
var loginView = this;
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$('#login-account-password').keydown(function(e) {
|
||||
if (e.keyCode === 13) {
|
||||
loginView.login();
|
||||
|
|
|
@ -11,7 +11,9 @@ Discourse.ModalBodyView = Discourse.View.extend({
|
|||
// Focus on first element
|
||||
didInsertElement: function() {
|
||||
var modalBodyView = this;
|
||||
Em.run.next(function() { modalBodyView.$('form input:first').focus(); });
|
||||
Em.run.schedule('afterRender', function() {
|
||||
modalBodyView.$('form input:first').focus();
|
||||
});
|
||||
},
|
||||
|
||||
// Pass the errors to our errors view
|
||||
|
|
|
@ -26,7 +26,7 @@ Discourse.ModalView = Ember.ContainerView.extend({
|
|||
var modalView = this;
|
||||
if (view) {
|
||||
$('#modal-alert').hide();
|
||||
Em.run.next(function() { modalView.$().modal('show'); });
|
||||
Em.run.schedule('afterRender', function() { modalView.$().modal('show'); });
|
||||
}
|
||||
}.observes('controller.currentView')
|
||||
|
||||
|
|
|
@ -35,7 +35,9 @@ Discourse.PostView = Discourse.View.extend({
|
|||
// If the cooked content changed, add the quote controls
|
||||
cookedChanged: function() {
|
||||
var postView = this;
|
||||
Em.run.next(function() { postView.insertQuoteControls(); });
|
||||
Em.run.schedule('afterRender', function() {
|
||||
postView.insertQuoteControls();
|
||||
});
|
||||
}.observes('post.cooked'),
|
||||
|
||||
init: function() {
|
||||
|
|
|
@ -13,14 +13,13 @@ Discourse.RepliesView = Ember.CollectionView.extend({
|
|||
itemViewClass: Discourse.EmbeddedPostView,
|
||||
|
||||
repliesShown: (function() {
|
||||
var $this;
|
||||
$this = this.$();
|
||||
var $this = this.$();
|
||||
if (this.get('parentView.repliesShown')) {
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$this.slideDown();
|
||||
});
|
||||
} else {
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$this.slideUp();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -29,9 +29,9 @@ Discourse.UserStreamView = Discourse.View.extend(Discourse.Scrolling, {
|
|||
this.set('loading', true);
|
||||
|
||||
var userStreamView = this;
|
||||
return this.get('controller.content').loadMoreUserActions().then(function() {
|
||||
this.get('controller.content').loadMoreUserActions().then(function() {
|
||||
userStreamView.set('loading', false);
|
||||
Em.run.next(function() {
|
||||
Em.run.schedule('afterRender', function() {
|
||||
$userStreamBottom.data('loading', null);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue