import React from 'react';
import AssetUploadInProgress from 'src/components/fileUpload/assetFileUpload/assetUploadInProgress';
import ReadyForAssetUpload from 'src/components/fileUpload/assetFileUpload/readyForAssetUpload';
import { ASSET_UPLOADING_STATUS } from 'src/constants';
import type { FileRejection } from 'react-dropzone';

const AssetFileUpload = ({
    onUploadFile,
    assetUploadingStatus,
    assetUploadingPercentage,
    isRetry,
    handleFileRejection,
    bulkSessionId,
    saveUnidentifiedAssets,
    setAssetUploadingStatus,
}: {
    onUploadFile: (acceptedFiles: File[]) => void;
    assetUploadingStatus: ASSET_UPLOADING_STATUS;
    assetUploadingPercentage: number;
    isRetry: boolean;
    handleFileRejection: (rejectedFile: FileRejection[]) => void;
    bulkSessionId: string;
    saveUnidentifiedAssets: (unidentifiedAssets: string[]) => void;
    setAssetUploadingStatus: (status: ASSET_UPLOADING_STATUS) => void;
}) => {
    if (
        assetUploadingStatus === ASSET_UPLOADING_STATUS.READY ||
        assetUploadingStatus === ASSET_UPLOADING_STATUS.INCOMPLETE ||
        assetUploadingStatus === ASSET_UPLOADING_STATUS.COMPLETE
    ) {
        return (
            <ReadyForAssetUpload
                isRetry={isRetry}
                onUploadFile={onUploadFile}
                handleFileRejection={handleFileRejection}
                bulkSessionId={bulkSessionId}
                saveUnidentifiedAssets={saveUnidentifiedAssets}
                setAssetUploadingStatus={setAssetUploadingStatus}
            />
        );
    } else {
        return (
            <AssetUploadInProgress
                assetUploadingStatus={assetUploadingStatus}
                assetUploadingPercentage={assetUploadingPercentage}
                isRetry={isRetry}
            />
        );
    }
};

export default AssetFileUpload;
