FIX: when quoting always ensure we are on a new line

This commit is contained in:
Sam 2017-06-27 13:59:17 -04:00
parent e2f57a154b
commit 91a91d57f0
2 changed files with 33 additions and 2 deletions

View File

@ -247,6 +247,7 @@ export default Ember.Component.extend({
});
if (this.get('composerEvents')) {
this.appEvents.on('composer:insert-block', text => this._addBlock(this._getSelected(), text));
this.appEvents.on('composer:insert-text', text => this._addText(this._getSelected(), text));
this.appEvents.on('composer:replace-text', (oldVal, newVal) => this._replaceText(oldVal, newVal));
}
@ -571,6 +572,36 @@ export default Ember.Component.extend({
this._selectText(newSelection.start, newSelection.end - newSelection.start);
},
_addBlock(sel, text) {
text = (text || '').trim();
if (text.length === 0) {
return;
}
let pre = sel.pre;
let post = sel.value + sel.post;
if (pre.length > 0) {
pre = pre.replace(/\n*$/, "\n\n");
}
if (post.length > 0) {
post = post.replace(/^\n*/, "\n\n");
}
const value = pre + text + post;
const $textarea = this.$('textarea.d-editor-input');
this.set('value', value);
$textarea.val(value);
$textarea.prop("selectionStart", (pre+text).length + 2);
$textarea.prop("selectionEnd", (pre+text).length + 2);
Ember.run.scheduleOnce("afterRender", () => $textarea.focus());
},
_addText(sel, text) {
const $textarea = this.$('textarea.d-editor-input');
const insert = `${sel.pre}${text}`;

View File

@ -196,7 +196,7 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, {
const quotedText = Quote.build(post, buffer);
composerOpts.quote = quotedText;
if (composer.get('model.viewOpen')) {
this.appEvents.trigger('composer:insert-text', quotedText);
this.appEvents.trigger('composer:insert-block', quotedText);
} else if (composer.get('model.viewDraft')) {
const model = composer.get('model');
model.set('reply', model.get('reply') + quotedText);
@ -320,7 +320,7 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, {
composerController.get('content.action') === Composer.REPLY) {
composerController.set('content.post', post);
composerController.set('content.composeState', Composer.OPEN);
this.appEvents.trigger('composer:insert-text', quotedText.trim());
this.appEvents.trigger('composer:insert-block', quotedText.trim());
} else {
const opts = {