diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 8ded3a2e858..66fd989154a 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -457,8 +457,7 @@ export default Ember.Controller.extend({ // If we're already open, we don't have to do anything if (composerModel.get('composeState') === Discourse.Composer.OPEN && - composerModel.get('draftKey') === opts.draftKey && - self._isComposerReply(composerModel, opts)) { + composerModel.get('draftKey') === opts.draftKey && !opts.action) { return resolve(); } @@ -466,7 +465,7 @@ export default Ember.Controller.extend({ if (composerModel.get('composeState') === Discourse.Composer.DRAFT && composerModel.get('draftKey') === opts.draftKey) { composerModel.set('composeState', Discourse.Composer.OPEN); - if (self._isComposerReply(composerModel, opts)) return resolve(); + if (!opts.action) return resolve(); } // If it's a different draft, cancel it and try opening again. @@ -489,11 +488,6 @@ export default Ember.Controller.extend({ }); }, - _isComposerReply(composerModel, opts) { - return (composerModel.get('action') === Discourse.Composer.REPLY && - composerModel.get('action') === opts.action); - }, - // Given a potential instance and options, set the model for this composer. _setModel(composerModel, opts) { if (opts.draft) { diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 4d8b126d026..a98323b4a22 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -207,12 +207,21 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { return bootbox.alert(I18n.t('post.controls.edit_anonymous')); } - this.get('controllers.composer').open({ - post: post, - action: Discourse.Composer.EDIT, - draftKey: post.get('topic.draft_key'), - draftSequence: post.get('topic.draft_sequence') - }); + const composer = this.get('controllers.composer'), + composerModel = composer.get('model'), + opts = { + post: post, + action: Discourse.Composer.EDIT, + draftKey: post.get('topic.draft_key'), + draftSequence: post.get('topic.draft_sequence') + }; + + // Cancel and reopen the composer for the first post + if (composerModel && (post.get('firstPost') || composerModel.get('editingPost'))) { + composer.cancelComposer().then(() => composer.open(opts)); + } else { + composer.open(opts); + } }, toggleBookmark(post) {