12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import { useCallback } from 'react'
- import { useTranslation } from 'react-i18next'
- import type { InputForm } from './type'
- import { useToastContext } from '@/app/components/base/toast'
- import { InputVarType } from '@/app/components/workflow/types'
- import { TransferMethod } from '@/types/app'
- export const useCheckInputsForms = () => {
- const { t } = useTranslation()
- const { notify } = useToastContext()
- const checkInputsForm = useCallback((inputs: Record<string, any>, inputsForm: InputForm[]) => {
- let hasEmptyInput = ''
- let fileIsUploading = false
- const requiredVars = inputsForm.filter(({ required }) => required)
- if (requiredVars?.length) {
- requiredVars.forEach(({ variable, label, type }) => {
- if (hasEmptyInput)
- return
- if (fileIsUploading)
- return
- if (!inputs[variable])
- hasEmptyInput = label as string
- if ((type === InputVarType.singleFile || type === InputVarType.multiFiles) && inputs[variable]) {
- const files = inputs[variable]
- if (Array.isArray(files))
- fileIsUploading = files.find(item => item.transferMethod === TransferMethod.local_file && !item.uploadedId)
- else
- fileIsUploading = files.transferMethod === TransferMethod.local_file && !files.uploadedId
- }
- })
- }
- if (hasEmptyInput) {
- notify({ type: 'error', message: t('appDebug.errorMessage.valueOfVarRequired', { key: hasEmptyInput }) })
- return false
- }
- if (fileIsUploading) {
- notify({ type: 'info', message: t('appDebug.errorMessage.waitForFileUpload') })
- return
- }
- return true
- }, [notify, t])
- return {
- checkInputsForm,
- }
- }
|