Skip to content
Snippets Groups Projects
use-add-formalizations.ts 1.03 KiB
Newer Older
brunoravera's avatar
brunoravera committed
import React from 'react'

import { DropzoneState, useDropzone } from 'react-dropzone'

export const MAX_FILE_SIZE = 250 * 1024 * 1024
export const SIZE_TOO_LARGE = 'size-too-large'

export const useAddFormalizations = ({}): {
  dropzoneState: DropzoneState
  formalizations: File[]
brunoravera's avatar
brunoravera committed
  handleRemoveFormalization: (index: number) => void
brunoravera's avatar
brunoravera committed
} => {
  const [files, setFiles] = React.useState<File[]>([])

  const onDrop = React.useCallback((acceptedFiles: File[]) => {
    setFiles((currentFiles) => [...currentFiles, ...acceptedFiles])
  }, [])

  const dropzoneState = useDropzone({
    onDrop,
    noDrag: true,
    validator: (file) => {
      if (file.size > MAX_FILE_SIZE) {
        return {
          code: SIZE_TOO_LARGE,
          message: `Maximo ${MAX_FILE_SIZE} MB.`,
        }
      }
      return null
    },
  })

brunoravera's avatar
brunoravera committed
  const handleRemoveFormalization = (index: number) => {
    const filesCopy = [...files]
    filesCopy.splice(index, 1)
    setFiles(filesCopy)
  }

  return { dropzoneState, formalizations: files, handleRemoveFormalization }
brunoravera's avatar
brunoravera committed
}