import type { GlobalAfterChangeHook } from 'payload'

import { revalidateTag } from 'next/cache'
import { auditLogger } from '@/utilities/auditLogger'

export const revalidateHeader: GlobalAfterChangeHook = async ({ doc, req }) => {
  const { payload, context } = req
  if (!context.disableRevalidate) {
    payload.logger.info(`Revalidating header`)

    revalidateTag('global_header')
  }

  // 記錄 Header 變更
  if (req.user) {
    await auditLogger(req, {
      action: 'update',
      collection: 'global_header',
      userId: req.user.id,
      userName: req.user.name as string,
      userEmail: req.user.email as string,
      userRole: req.user.role as string,
    })
  }

  return doc
}
