parent
87b435c01e
commit
c7f45c53db
@ -1,33 +1,35 @@ |
||||
RocketChat.saveCustomFieldsWithoutValidation = function(userId, formData) { |
||||
if (s.trim(RocketChat.settings.get('Accounts_CustomFields')) !== '') { |
||||
let customFieldsMeta; |
||||
try { |
||||
customFieldsMeta = JSON.parse(RocketChat.settings.get('Accounts_CustomFields')); |
||||
} catch (e) { |
||||
throw new Meteor.Error('error-invalid-customfield-json', 'Invalid JSON for Custom Fields'); |
||||
} |
||||
|
||||
const customFields = formData; |
||||
|
||||
// for fieldName, field of customFieldsMeta
|
||||
RocketChat.models.Users.setCustomFields(userId, customFields); |
||||
if (s.trim(RocketChat.settings.get('Accounts_CustomFields')) === '') { |
||||
return; |
||||
} |
||||
|
||||
Object.keys(customFields).forEach((fieldName) => { |
||||
if (!customFieldsMeta[fieldName].modifyRecordField) { |
||||
return; |
||||
} |
||||
let customFieldsMeta; |
||||
try { |
||||
customFieldsMeta = JSON.parse(RocketChat.settings.get('Accounts_CustomFields')); |
||||
} catch (e) { |
||||
throw new Meteor.Error('error-invalid-customfield-json', 'Invalid JSON for Custom Fields'); |
||||
} |
||||
|
||||
const modifyRecordField = customFieldsMeta[fieldName].modifyRecordField; |
||||
const update = {}; |
||||
if (modifyRecordField.array) { |
||||
update.$addToSet = {}; |
||||
update.$addToSet[modifyRecordField.field] = customFields[fieldName]; |
||||
} else { |
||||
update.$set = {}; |
||||
update.$set[modifyRecordField.field] = customFields[fieldName]; |
||||
} |
||||
const customFields = Object.keys(customFieldsMeta).filter(fieldName => !customFieldsMeta[fieldName].modifyRecordField). |
||||
reduce((update, key) => { |
||||
update[key] = formData[key]; |
||||
return update; |
||||
}, {}); |
||||
|
||||
RocketChat.models.Users.update(userId, update); |
||||
}); |
||||
} |
||||
RocketChat.models.Users.setCustomFields(userId, customFields); |
||||
const update = Object.keys(customFieldsMeta). |
||||
filter(fieldName => customFieldsMeta[fieldName].modifyRecordField). |
||||
reduce((update, fieldName) => { |
||||
const modifyRecordField = customFieldsMeta[fieldName].modifyRecordField; |
||||
if (modifyRecordField.array) { |
||||
update.$addToSet[modifyRecordField.field] = formData[fieldName]; |
||||
} else { |
||||
update.$set[modifyRecordField.field] = formData[fieldName]; |
||||
} |
||||
return update; |
||||
}, { |
||||
$addToSet: {}, |
||||
$set: {} |
||||
}); |
||||
RocketChat.models.Users.update(userId, update); |
||||
}; |
||||
|
Loading…
Reference in new issue