import { createContext } from 'react';
import { ASSET_UPLOADING_STATUS } from '../../constants';
import type { INGESTION_STATUS } from '../../constants';

interface BulkUploadContextType {
    useCreateModal: boolean;
    setUseCreateModal: (value: boolean) => void;
    assetUploadingStatus: ASSET_UPLOADING_STATUS;
    setAssetUploadingStatus: (value: ASSET_UPLOADING_STATUS) => void;
    isSaveAndExitEnabled: boolean;
    setIsSaveAndExitEnabled: (value: boolean) => void;
    isCancelModalEnabled: boolean;
    setIsCancelModalEnabled: (value: boolean) => void;
    onBulkCreate:
        | ((id: string, assetsRequired: boolean, submit: boolean) => void)
        | null;
    setOnBulkCreate: (
        funct: (id: string, assetsRequired: boolean, submit: boolean) => void
    ) => void;
    bulkSessionId: string | null;
    setBulkSessionId: (value: string | null) => void;
    vendorId: number | null;
    setVendorId: (value: number | null) => void;
    vendorName: string | null;
    setVendorName: (value: string | null) => void;
    vendorUUID: string | null;
    setVendorUUID: (value: string | null) => void;
    subaccountId: number | null;
    setSubaccountId: (value: number | null) => void;
    subaccountName: string | null;
    setSubaccountName: (value: string | null) => void;
    skipIncompleteAssets: boolean;
    setSkipIncompleteAssets: (value: boolean) => void;
    ingestionStatus: INGESTION_STATUS | null;
    setIngestionStatus: (value: INGESTION_STATUS | null) => void;
    setUploadingAssetFiles: (value: { id: string }[]) => void;
    assetUploadInProgress: boolean;
    setAssetUploadInProgress: (value: boolean) => void;
    completeProductCount: number;
    setCompleteProductCount: (value: number) => void;
    totalProductCount: number;
    setTotalProductCount: (value: number) => void;
    sidebarRef: React.RefObject<HTMLDivElement>;
    templateDownloadLink: string | null;
    setTemplateDownloadLink: (value: string | null) => void;
    classicalTemplateDownloadLink: string | null;
    setClassicalTemplateDownloadLink: (value: string | null) => void;
}

const BulkUploadContext = createContext<BulkUploadContextType>({
    useCreateModal: false,
    setUseCreateModal: () => null,
    assetUploadingStatus: ASSET_UPLOADING_STATUS.READY,
    setAssetUploadingStatus: () => null,
    isSaveAndExitEnabled: false,
    setIsSaveAndExitEnabled: () => null,
    isCancelModalEnabled: false,
    setIsCancelModalEnabled: () => null,
    onBulkCreate: () => null,
    setOnBulkCreate: () => null,
    bulkSessionId: null,
    setBulkSessionId: () => null,
    vendorId: null,
    setVendorId: () => null,
    vendorName: null,
    setVendorName: () => null,
    vendorUUID: null,
    setVendorUUID: () => null,
    subaccountId: null,
    setSubaccountId: () => null,
    subaccountName: null,
    setSubaccountName: () => null,
    skipIncompleteAssets: false,
    setSkipIncompleteAssets: () => null,
    ingestionStatus: null,
    setIngestionStatus: () => null,
    setUploadingAssetFiles: () => null,
    assetUploadInProgress: false,
    setAssetUploadInProgress: () => null,
    completeProductCount: 0,
    setCompleteProductCount: () => null,
    totalProductCount: 0,
    setTotalProductCount: () => null,
    sidebarRef: { current: null },
    templateDownloadLink: null,
    setTemplateDownloadLink: () => null,
    classicalTemplateDownloadLink: null,
    setClassicalTemplateDownloadLink: () => null,
});

export default BulkUploadContext;
