import React from 'react';
import MetadataUploadInProgress from 'src/components/fileUpload/metadataFileUpload/metadataUploadInProgress';
import ReadyForMetadataUpload from 'src/components/fileUpload/metadataFileUpload/readyForMetadataUpload';
import { METADATA_UPLOADING_STATUS } from 'src/constants';
import type { FileRejection } from 'react-dropzone';

interface MetadataFileUploadProps {
    onUploadFile: (acceptedFiles: File[]) => void;
    metadataUploadingStatus: METADATA_UPLOADING_STATUS;
    handleFileRejection: (rejectedFile: FileRejection[]) => void;
    isVendorUuidLoading?: boolean;
}

const MetadataFileUpload = (props: MetadataFileUploadProps) => {
    const {
        onUploadFile,
        metadataUploadingStatus,
        handleFileRejection,
        isVendorUuidLoading = false,
    } = props;

    if (
        metadataUploadingStatus === METADATA_UPLOADING_STATUS.READY ||
        metadataUploadingStatus === METADATA_UPLOADING_STATUS.INVALID ||
        metadataUploadingStatus === METADATA_UPLOADING_STATUS.FAILURE
    ) {
        return (
            <ReadyForMetadataUpload
                metadataUploadingStatus={metadataUploadingStatus}
                onUploadFile={onUploadFile}
                handleFileRejection={handleFileRejection}
                isVendorUuidLoading={isVendorUuidLoading}
            />
        );
    } else {
        return (
            <MetadataUploadInProgress
                metadataUploadingStatus={metadataUploadingStatus}
            />
        );
    }
};

export default MetadataFileUpload;
