diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 4117b7d39d6..042597354cd 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -194,9 +194,13 @@ export default Ember.Controller.extend({ canUnlistTopic: Em.computed.and("model.creatingTopic", "isStaffUser"), - @computed("canWhisper", "model.whisper") - showWhisperToggle(canWhisper, isWhisper) { - return canWhisper && !isWhisper; + @computed("canWhisper", "model.post") + showWhisperToggle(canWhisper, repliedToPost) { + const replyingToWhisper = + repliedToPost && + repliedToPost.get("post_type") === this.site.post_types.whisper; + + return canWhisper && !replyingToWhisper; }, @computed("isStaffUser", "model.action") @@ -220,7 +224,7 @@ export default Ember.Controller.extend({ return option; }, - @computed("model.composeState", "model.creatingTopic") + @computed("model.composeState", "model.creatingTopic", "model.post") popupMenuOptions(composeState) { if (composeState === "open" || composeState === "fullscreen") { let options = []; diff --git a/test/javascripts/acceptance/composer-test.js.es6 b/test/javascripts/acceptance/composer-test.js.es6 index c1fa34b3471..c878f5c9ce5 100644 --- a/test/javascripts/acceptance/composer-test.js.es6 +++ b/test/javascripts/acceptance/composer-test.js.es6 @@ -366,28 +366,36 @@ QUnit.test("Composer can toggle between edit and reply", async assert => { }); QUnit.test("Composer can toggle whispers", async assert => { + const menu = selectKit(".toolbar-popup-menu-options"); + await visit("/t/this-is-a-test-topic/9"); await click(".topic-post:eq(0) button.reply"); - await selectKit(".toolbar-popup-menu-options").expand(); - await selectKit(".toolbar-popup-menu-options").selectRowByValue( - "toggleWhisper" - ); + await menu.expand(); + await menu.selectRowByValue("toggleWhisper"); assert.ok( find(".composer-fields .whisper .d-icon-eye-slash").length === 1, "it sets the post type to whisper" ); - await selectKit(".toolbar-popup-menu-options").expand(); - await selectKit(".toolbar-popup-menu-options").selectRowByValue( - "toggleWhisper" - ); + await menu.expand(); + await menu.selectRowByValue("toggleWhisper"); assert.ok( find(".composer-fields .whisper .d-icon-eye-slash").length === 0, "it removes the whisper mode" ); + + await menu.expand(); + await menu.selectRowByValue("toggleWhisper"); + + await click(".toggle-fullscreen"); + + assert.ok( + menu.rowByValue("toggleWhisper").exists(), + "whisper toggling is still present when going fullscreen" + ); }); QUnit.test(