42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import InputValidation from "discourse/models/input-validation";
|
|
import {
|
|
on,
|
|
default as computed
|
|
} from "ember-addons/ember-computed-decorators";
|
|
|
|
export default Ember.Mixin.create({
|
|
@on("init")
|
|
_createUserFields() {
|
|
if (!this.site) {
|
|
return;
|
|
}
|
|
|
|
let userFields = this.site.get("user_fields");
|
|
if (userFields) {
|
|
userFields = _.sortBy(userFields, "position").map(function(f) {
|
|
return Ember.Object.create({ value: null, field: f });
|
|
});
|
|
}
|
|
this.set("userFields", userFields);
|
|
},
|
|
|
|
// Validate required fields
|
|
@computed("userFields.@each.value")
|
|
userFieldsValidation() {
|
|
let userFields = this.userFields;
|
|
if (userFields) {
|
|
userFields = userFields.filterBy("field.required");
|
|
}
|
|
if (!Ember.isEmpty(userFields)) {
|
|
const anyEmpty = userFields.any(uf => {
|
|
const val = uf.get("value");
|
|
return !val || Ember.isEmpty(val);
|
|
});
|
|
if (anyEmpty) {
|
|
return InputValidation.create({ failed: true });
|
|
}
|
|
}
|
|
return InputValidation.create({ ok: true });
|
|
}
|
|
});
|