mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Clear draft modal correctly when switching topics (#12458)
Fixes an issue where the "Keep editing" button in the discard draft
modal wouldn't work when switching to a new topic with an open composer
and clicking Reply.
Followup to d470e4f
This commit is contained in:
parent
4e9d6cb95b
commit
d898e00242
@ -1105,7 +1105,7 @@ export default Controller.extend({
|
|||||||
cancel(this._saveDraftDebounce);
|
cancel(this._saveDraftDebounce);
|
||||||
}
|
}
|
||||||
|
|
||||||
let promise = new Promise((resolve) => {
|
let promise = new Promise((resolve, reject) => {
|
||||||
if (this.get("model.hasMetaData") || this.get("model.replyDirty")) {
|
if (this.get("model.hasMetaData") || this.get("model.replyDirty")) {
|
||||||
const controller = showModal("discard-draft", {
|
const controller = showModal("discard-draft", {
|
||||||
model: this.model,
|
model: this.model,
|
||||||
@ -1132,7 +1132,7 @@ export default Controller.extend({
|
|||||||
resolve();
|
resolve();
|
||||||
},
|
},
|
||||||
// needed to resume saving drafts if composer stays open
|
// needed to resume saving drafts if composer stays open
|
||||||
onDismissModal: () => resolve(),
|
onDismissModal: () => reject(),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// it is possible there is some sort of crazy draft with no body ... just give up on it
|
// it is possible there is some sort of crazy draft with no body ... just give up on it
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{{/d-modal-body}}
|
{{/d-modal-body}}
|
||||||
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
{{d-button icon="far-trash-alt" label="post.cancel_composer.discard" class="btn-danger" action=(action "destroyDraft")}}
|
{{d-button icon="far-trash-alt" label="post.cancel_composer.discard" class="btn-danger discard-draft" action=(action "destroyDraft")}}
|
||||||
{{d-button label="post.cancel_composer.save_draft" class="save-draft" action=(action "saveDraftAndClose")}}
|
{{d-button label="post.cancel_composer.save_draft" class="save-draft" action=(action "saveDraftAndClose")}}
|
||||||
{{d-button label="post.cancel_composer.keep_editing" class="keep-editing" action=(action "dismissModal")}}
|
{{d-button label="post.cancel_composer.keep_editing" class="keep-editing" action=(action "dismissModal")}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -330,6 +330,37 @@ acceptance("Composer", function (needs) {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("Discard draft modal works when switching topics", async function (assert) {
|
||||||
|
await visit("/t/internationalization-localization/280");
|
||||||
|
await click("#topic-footer-buttons .btn.create");
|
||||||
|
await fillIn(".d-editor-input", "this is the content of the first reply");
|
||||||
|
|
||||||
|
await visit("/t/this-is-a-test-topic/9");
|
||||||
|
assert.equal(currentURL(), "/t/this-is-a-test-topic/9");
|
||||||
|
await click("#topic-footer-buttons .btn.create");
|
||||||
|
assert.ok(
|
||||||
|
exists(".discard-draft-modal.modal"),
|
||||||
|
"it pops up the discard drafts modal"
|
||||||
|
);
|
||||||
|
|
||||||
|
await click(".modal-footer button.keep-editing");
|
||||||
|
|
||||||
|
assert.ok(invisible(".discard-draft-modal.modal"));
|
||||||
|
await click("#topic-footer-buttons .btn.create");
|
||||||
|
assert.ok(
|
||||||
|
exists(".discard-draft-modal.modal"),
|
||||||
|
"it pops up the modal again"
|
||||||
|
);
|
||||||
|
|
||||||
|
await click(".modal-footer button.discard-draft");
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
queryAll(".d-editor-input").val(),
|
||||||
|
"",
|
||||||
|
"discards draft and reset composer textarea"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test("Create an enqueued Reply", async function (assert) {
|
test("Create an enqueued Reply", async function (assert) {
|
||||||
await visit("/t/internationalization-localization/280");
|
await visit("/t/internationalization-localization/280");
|
||||||
|
|
||||||
@ -423,7 +454,7 @@ acceptance("Composer", function (needs) {
|
|||||||
"it pops up a confirmation dialog"
|
"it pops up a confirmation dialog"
|
||||||
);
|
);
|
||||||
|
|
||||||
await click(".modal-footer button:nth-of-type(1)");
|
await click(".modal-footer button.discard-draft");
|
||||||
assert.equal(
|
assert.equal(
|
||||||
queryAll(".d-editor-input").val().indexOf("This is the second post."),
|
queryAll(".d-editor-input").val().indexOf("This is the second post."),
|
||||||
0,
|
0,
|
||||||
@ -580,7 +611,7 @@ acceptance("Composer", function (needs) {
|
|||||||
exists(".discard-draft-modal.modal"),
|
exists(".discard-draft-modal.modal"),
|
||||||
"it pops up a confirmation dialog"
|
"it pops up a confirmation dialog"
|
||||||
);
|
);
|
||||||
await click(".modal-footer button:nth-of-type(1)");
|
await click(".modal-footer button.discard-draft");
|
||||||
assert.equal(
|
assert.equal(
|
||||||
queryAll(".d-editor-input").val().indexOf("This is the first post."),
|
queryAll(".d-editor-input").val().indexOf("This is the first post."),
|
||||||
0,
|
0,
|
||||||
|
Loading…
Reference in New Issue
Block a user