102 lines
2.5 KiB
TypeScript
102 lines
2.5 KiB
TypeScript
/* eslint-disable no-param-reassign */
|
|
|
|
import type { GlobalConfig } from 'payload/types'
|
|
|
|
export const dataHooksGlobalSlug = 'data-hooks-global'
|
|
|
|
export const DataHooksGlobal: GlobalConfig = {
|
|
slug: dataHooksGlobalSlug,
|
|
access: {
|
|
read: () => true,
|
|
update: () => true,
|
|
},
|
|
hooks: {
|
|
beforeChange: [
|
|
({ data, global, context }) => {
|
|
context['global_beforeChange_global'] = JSON.stringify(global)
|
|
|
|
return data
|
|
},
|
|
],
|
|
beforeRead: [
|
|
({ context, global }) => {
|
|
context['global_beforeRead_global'] = JSON.stringify(global)
|
|
},
|
|
],
|
|
afterRead: [
|
|
({ context, global, doc }) => {
|
|
context['global_afterRead_global'] = JSON.stringify(global)
|
|
|
|
// Needs to be done for both afterRead (for findOne test) and afterChange (for update test)
|
|
for (const contextKey in context) {
|
|
if (contextKey.startsWith('global_')) {
|
|
doc[contextKey] = context[contextKey]
|
|
}
|
|
}
|
|
return doc
|
|
},
|
|
],
|
|
afterChange: [
|
|
({ context, global, doc }) => {
|
|
context['global_afterChange_global'] = JSON.stringify(global)
|
|
|
|
// Needs to be done for both afterRead (for findOne test) and afterChange (for update test), as afterChange is called after afterRead
|
|
for (const contextKey in context) {
|
|
if (contextKey.startsWith('global_')) {
|
|
doc[contextKey] = context[contextKey]
|
|
}
|
|
}
|
|
|
|
return doc
|
|
},
|
|
],
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'field_globalAndField',
|
|
type: 'text',
|
|
hooks: {
|
|
beforeChange: [
|
|
({ global, field, context, value }) => {
|
|
context['field_beforeChange_GlobalAndField'] =
|
|
JSON.stringify(global) + JSON.stringify(field)
|
|
|
|
return value
|
|
},
|
|
],
|
|
|
|
afterRead: [
|
|
({ global, field, context }) => {
|
|
if (context['field_beforeChange_GlobalAndField_override']) {
|
|
return context['field_beforeChange_GlobalAndField_override']
|
|
}
|
|
|
|
return (
|
|
(context['field_beforeChange_GlobalAndField'] as string) +
|
|
JSON.stringify(global) +
|
|
JSON.stringify(field)
|
|
)
|
|
},
|
|
],
|
|
},
|
|
},
|
|
|
|
{
|
|
name: 'global_beforeChange_global',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'global_afterChange_global',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'global_beforeRead_global',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'global_afterRead_global',
|
|
type: 'text',
|
|
},
|
|
],
|
|
}
|