Merge branch 'master' of github.com:keen-studio/payload into sanitize-filenames
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user