UX: Don't reload page after saving settings when editing category.

This commit is contained in:
Guo Xiang Tan 2019-03-19 16:07:50 +08:00
parent bc81f64a64
commit dd142eec03
2 changed files with 38 additions and 20 deletions

View File

@ -64,29 +64,33 @@ export default Ember.Controller.extend(ModalFunctionality, {
actions: {
saveCategory() {
const self = this,
model = this.get("model"),
parentCategory = this.site
.get("categories")
.findBy("id", parseInt(model.get("parent_category_id"), 10));
const model = this.get("model");
const parentCategory = this.site
.get("categories")
.findBy("id", parseInt(model.get("parent_category_id"), 10));
this.set("saving", true);
model.set("parentCategory", parentCategory);
this.get("model")
model
.save()
.then(function(result) {
self.set("saving", false);
self.send("closeModal");
.then(result => {
this.set("saving", false);
model.setProperties({
slug: result.category.slug,
id: result.category.id
});
DiscourseURL.redirectTo("/c/" + Discourse.Category.slugFor(model));
if (this.get("selectedTab") !== "settings") {
this.send("closeModal");
DiscourseURL.redirectTo("/c/" + Discourse.Category.slugFor(model));
}
})
.catch(function(error) {
self.flash(extractError(error), "error");
self.set("saving", false);
.catch(error => {
this.flash(extractError(error), "error");
this.set("saving", false);
});
},

View File

@ -3,7 +3,17 @@ import { acceptance } from "helpers/qunit-helpers";
acceptance("Category Edit", {
loggedIn: true,
settings: { email_in: true }
settings: { email_in: true },
pretend(server, helper) {
server.post("/categories", () => {
return helper.response({
category: {
slug: "bug",
id: 999
}
});
});
}
});
QUnit.test("Can open the category modal", async assert => {
@ -18,21 +28,25 @@ QUnit.test("Can open the category modal", async assert => {
QUnit.test("Editing the category", async assert => {
await visit("/c/bug");
await click(".edit-category");
await fillIn("#edit-text-color", "#ff0000");
await click(".edit-category-topic-template");
await fillIn(".d-editor-input", "this is the new topic template");
await click(".edit-category-settings");
await click(".edit-category-settings a");
const searchPriorityChooser = selectKit("#category-search-priority");
await searchPriorityChooser.expand();
await searchPriorityChooser.selectRowByValue(1);
await click("#save-category");
assert.ok(visible(".d-modal"), "it does not close the modal");
await click(".edit-category-general a");
await fillIn("#edit-text-color", "#ff0000");
await click(".edit-category-topic-template a");
await fillIn(".d-editor-input", "this is the new topic template");
await click("#save-category");
assert.ok(!visible(".d-modal"), "it closes the modal");
assert.equal(
DiscourseURL.redirectedTo,
"/c/bug",