import type { FormFieldBlock } from '@payloadcms/plugin-form-builder/types'

export const buildInitialFormState = (fields: FormFieldBlock[]) => {
  return fields?.reduce((initialSchema, field) => {
    if (!('name' in field) || !field.name) {
      return initialSchema
    }

    if (field.blockType === 'checkbox') {
      return {
        ...initialSchema,
        [field.name]: field.defaultValue ?? false,
      }
    }

    if (
      field.blockType === 'country' ||
      field.blockType === 'email' ||
      field.blockType === 'select' ||
      field.blockType === 'state' ||
      field.blockType === 'text' ||
      field.blockType === 'textarea'
    ) {
      return {
        ...initialSchema,
        [field.name]: '',
      }
    }

    return initialSchema
  }, {})
}
