Merge branch 'master' of github.com:keen-studio/payload into sanitize-filenames

This commit is contained in:
James
2020-05-06 11:55:12 -04:00
23 changed files with 89 additions and 73 deletions

View File

@@ -1,20 +1,21 @@
const executeFieldHooks = async (fields, data, hookName) => {
const executeFieldHooks = async (operation, fields, value, hookName, data = null) => {
const fullData = value || data;
if (Array.isArray(data)) {
const postHookData = await Promise.all(data.map(async (row) => {
const rowData = await executeFieldHooks(fields, row, hookName);
return rowData;
return Promise.all(data.map(async (row) => {
return executeFieldHooks(operation, fields, fullData, row, hookName);
}));
return postHookData;
}
const postHookData = Object.create(data);
const hookPromises = [];
fields.forEach((field) => {
if (typeof field.hooks[hookName] === 'function' && data[field.name]) {
if (typeof field.hooks[hookName] === 'function' && fullData[field.name]) {
const hookPromise = async () => {
postHookData[field.name] = await field.hooks[hookName](data[field.name]);
fullData[field.name] = await field.hooks[hookName]({
...operation,
data: fullData,
value: data[field.name],
});
};
hookPromises.push(hookPromise());
@@ -22,7 +23,7 @@ const executeFieldHooks = async (fields, data, hookName) => {
if (field.fields && data[field.name]) {
const hookPromise = async () => {
postHookData[field.name] = await executeFieldHooks(field.fields, data[field.name], hookName);
fullData[field.name] = await executeFieldHooks(operation, field.fields, fullData[field.name], hookName, data[field.name]);
};
hookPromises.push(hookPromise());
@@ -31,7 +32,7 @@ const executeFieldHooks = async (fields, data, hookName) => {
await Promise.all(hookPromises);
return postHookData;
return fullData;
};
module.exports = executeFieldHooks;

View File

@@ -3,6 +3,7 @@ const { Schema } = require('mongoose');
const formatBaseSchema = (field) => {
return {
hidden: field.hidden || false,
hide: field.hidden === 'api' || field.hidden === true,
localized: field.localized || false,
unique: field.unique || false,
required: (field.required && !field.localized) || false,