Skip to content

Commit f9243a1

Browse files
committed
Don't debouce afterRender, debounce the preview refreshing mechanism.
1 parent 9a24d26 commit f9243a1

1 file changed

Lines changed: 18 additions & 16 deletions

File tree

app/assets/javascripts/discourse/views/composer/composer_view.js

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,24 @@ Discourse.ComposerView = Discourse.View.extend(Ember.Evented, {
4848
return this.present('controller.createdPost') ? 'created-post' : null;
4949
}.property('model.createdPost'),
5050

51-
observeReplyChanges: function() {
52-
var self = this;
53-
if (this.get('model.hidePreview')) return;
54-
Ember.run.next(function() {
55-
if (self.editor) {
56-
self.editor.refreshPreview();
57-
// if the caret is on the last line ensure preview scrolled to bottom
58-
var caretPosition = Discourse.Utilities.caretPosition(self.wmdInput[0]);
59-
if (!self.wmdInput.val().substring(caretPosition).match(/\n/)) {
60-
var $wmdPreview = $('#wmd-preview');
61-
if ($wmdPreview.is(':visible')) {
62-
$wmdPreview.scrollTop($wmdPreview[0].scrollHeight);
63-
}
51+
52+
refreshPreview: Discourse.debounce(function() {
53+
if (this.editor) {
54+
this.editor.refreshPreview();
55+
// if the caret is on the last line ensure preview scrolled to bottom
56+
var caretPosition = Discourse.Utilities.caretPosition(this.wmdInput[0]);
57+
if (!this.wmdInput.val().substring(caretPosition).match(/\n/)) {
58+
var $wmdPreview = $('#wmd-preview');
59+
if ($wmdPreview.is(':visible')) {
60+
$wmdPreview.scrollTop($wmdPreview[0].scrollHeight);
6461
}
6562
}
66-
});
63+
}
64+
}, 30),
65+
66+
observeReplyChanges: function() {
67+
if (this.get('model.hidePreview')) return;
68+
Ember.run.scheduleOnce('afterRender', this, 'refreshPreview');
6769
}.observes('model.reply', 'model.hidePreview'),
6870

6971
movePanels: function(sizePx) {
@@ -131,7 +133,7 @@ Discourse.ComposerView = Discourse.View.extend(Ember.Evented, {
131133
},
132134

133135
// Called after the preview renders. Debounced for performance
134-
afterRender: Discourse.debounce(function() {
136+
afterRender: function() {
135137
var $wmdPreview = $('#wmd-preview');
136138
if ($wmdPreview.length === 0) return;
137139

@@ -156,7 +158,7 @@ Discourse.ComposerView = Discourse.View.extend(Ember.Evented, {
156158
});
157159

158160
this.trigger('previewRefreshed', $wmdPreview);
159-
}, 100),
161+
},
160162

161163
initEditor: function() {
162164
// not quite right, need a callback to pass in, meaning this gets called once,

0 commit comments

Comments
 (0)