mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Fix a userFields
computed property override (#14988)
in `preferences/profile` controller Co-authored-by: Penar Musaraj <pmusaraj@gmail.com>
This commit is contained in:
parent
439cd68e0d
commit
bf34d3524b
@ -34,21 +34,20 @@ export default Controller.extend({
|
|||||||
|
|
||||||
@discourseComputed("model.user_fields.@each.value")
|
@discourseComputed("model.user_fields.@each.value")
|
||||||
userFields() {
|
userFields() {
|
||||||
let siteUserFields = this.site.get("user_fields");
|
let siteUserFields = this.site.user_fields;
|
||||||
if (!isEmpty(siteUserFields)) {
|
if (isEmpty(siteUserFields)) {
|
||||||
const userFields = this.get("model.user_fields");
|
return;
|
||||||
|
|
||||||
// Staff can edit fields that are not `editable`
|
|
||||||
if (!this.get("currentUser.staff")) {
|
|
||||||
siteUserFields = siteUserFields.filterBy("editable", true);
|
|
||||||
}
|
|
||||||
return siteUserFields.sortBy("position").map(function (field) {
|
|
||||||
const value = userFields
|
|
||||||
? userFields[field.get("id").toString()]
|
|
||||||
: null;
|
|
||||||
return EmberObject.create({ value, field });
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Staff can edit fields that are not `editable`
|
||||||
|
if (!this.currentUser.staff) {
|
||||||
|
siteUserFields = siteUserFields.filterBy("editable", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return siteUserFields.sortBy("position").map((field) => {
|
||||||
|
const value = this.model.user_fields?.[field.id.toString()];
|
||||||
|
return EmberObject.create({ field, value });
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@discourseComputed("model.default_calendar")
|
@discourseComputed("model.default_calendar")
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { discourseModule } from "discourse/tests/helpers/qunit-helpers";
|
import { discourseModule } from "discourse/tests/helpers/qunit-helpers";
|
||||||
import { test } from "qunit";
|
import { test } from "qunit";
|
||||||
import EmberObject from "@ember/object";
|
|
||||||
import User from "discourse/models/user";
|
import User from "discourse/models/user";
|
||||||
|
import Site from "discourse/models/site";
|
||||||
|
|
||||||
discourseModule("Unit | Controller | preferences/profile", function () {
|
discourseModule("Unit | Controller | preferences/profile", function () {
|
||||||
test("prepare custom field data", function (assert) {
|
test("prepare custom field data", function (assert) {
|
||||||
@ -11,35 +11,30 @@ discourseModule("Unit | Controller | preferences/profile", function () {
|
|||||||
second_factor_enabled: true,
|
second_factor_enabled: true,
|
||||||
is_anonymous: true,
|
is_anonymous: true,
|
||||||
user_fields: {
|
user_fields: {
|
||||||
field_1: "1",
|
1: "2",
|
||||||
field_2: "2",
|
2: null,
|
||||||
field_3: "3",
|
3: [],
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
currentUser: {
|
currentUser: {
|
||||||
id: 1234,
|
id: 1234,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
controller.set("userFields", [
|
|
||||||
EmberObject.create({ value: "2", field: { id: "field_1" } }),
|
Site.currentProp("user_fields", [
|
||||||
EmberObject.create({ value: null, field: { id: "field_2" } }),
|
{ position: 1, id: 1, editable: true },
|
||||||
EmberObject.create({ value: [], field: { id: "field_3" } }),
|
{ position: 2, id: 2, editable: true },
|
||||||
|
{ position: 3, id: 3, editable: true },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Since there are no injections in unit tests
|
||||||
|
controller.set("site", Site.current());
|
||||||
|
|
||||||
controller.send("_updateUserFields");
|
controller.send("_updateUserFields");
|
||||||
assert.strictEqual(
|
|
||||||
controller.model.user_fields.field_1,
|
const fields = controller.model.user_fields;
|
||||||
"2",
|
assert.strictEqual(fields[1], "2", "updates string value");
|
||||||
"updates string value"
|
assert.strictEqual(fields[2], null, "updates null");
|
||||||
);
|
assert.strictEqual(fields[3], null, "updates empty array as null");
|
||||||
assert.strictEqual(
|
|
||||||
controller.model.user_fields.field_2,
|
|
||||||
null,
|
|
||||||
"updates null"
|
|
||||||
);
|
|
||||||
assert.strictEqual(
|
|
||||||
controller.model.user_fields.field_3,
|
|
||||||
null,
|
|
||||||
"updates empty array as null"
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user