diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index dea15afa32b..18e9f396974 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -268,19 +268,26 @@ export default Discourse.Controller.extend({ return new Ember.RSVP.Promise(function(resolve, reject) { if (composerModel && composerModel.get('replyDirty')) { + + // If we're already open, we don't have to do anything + if (composerModel.get('composeState') === Discourse.Composer.OPEN && + composerModel.get('draftKey') === opts.draftKey) { + return resolve(); + } + + // If it's the same draft, just open it up again. if (composerModel.get('composeState') === Discourse.Composer.DRAFT && composerModel.get('draftKey') === opts.draftKey && composerModel.action === opts.action) { - // If it's the same draft, just open it up again. composerModel.set('composeState', Discourse.Composer.OPEN); return resolve(); - } else { - // If it's a different draft, cancel it and try opening again. - return self.cancelComposer().then(function() { - return self.open(opts); - }).then(resolve, reject); } + + // If it's a different draft, cancel it and try opening again. + return self.cancelComposer().then(function() { + return self.open(opts); + }).then(resolve, reject); } // we need a draft sequence for the composer to work