FIX: Switching composer action does not refresh composer actions content (#9791)

This commit is contained in:
Alan Guo Xiang Tan 2020-05-16 01:54:44 +08:00 committed by GitHub
parent 6b04760572
commit 7f07c513a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 7 deletions

View File

@ -16,10 +16,12 @@ import { isEmpty } from "@ember/utils";
// Component can get destroyed and lose state
let _topicSnapshot = null;
let _postSnapshot = null;
let _actionSnapshot = null;
export function _clearSnapshots() {
_topicSnapshot = null;
_postSnapshot = null;
_actionSnapshot = null;
}
export default DropdownSelectBoxComponent.extend({
@ -50,6 +52,7 @@ export default DropdownSelectBoxComponent.extend({
didReceiveAttrs() {
this._super(...arguments);
let changeContent = false;
// if we change topic we want to change both snapshots
if (
@ -58,18 +61,25 @@ export default DropdownSelectBoxComponent.extend({
) {
_topicSnapshot = this.topic;
_postSnapshot = this.post;
this.contentChanged();
changeContent = true;
}
// if we hit reply on a different post we want to change postSnapshot
if (this.post && (!_postSnapshot || this.post.id !== _postSnapshot.id)) {
_postSnapshot = this.post;
changeContent = true;
}
if (this.action !== _actionSnapshot) {
_actionSnapshot = this.action;
changeContent = true;
}
if (changeContent) {
this.contentChanged();
}
if (isEmpty(this.content)) {
this.set("selectKit.isHidden", true);
}
this.set("selectKit.isHidden", isEmpty(this.content));
},
modifySelection() {

View File

@ -148,12 +148,18 @@ QUnit.test("reply_as_new_topic without a new_topic draft", async assert => {
});
QUnit.test("hide component if no content", async assert => {
const composerActions = selectKit(".composer-actions");
await visit("/");
await click("button#create-topic");
await visit("/u/eviltrout/messages");
await click(".new-private-message");
const composerActions = selectKit(".composer-actions");
await composerActions.expand();
await composerActions.selectRowByValue("reply_as_private_message");
assert.ok(composerActions.el().hasClass("is-hidden"));
await click("button#create-topic");
await composerActions.expand();
assert.equal(composerActions.rows().length, 2);
});
QUnit.test("interactions", async assert => {