import React, { useContext, useState } from "react"; import { useQuery } from "react-query"; import { AxiosResponse } from "axios"; import { IBootstrapPackageMetadata } from "interfaces/mdm"; import { IApiError } from "interfaces/errors"; import mdmAPI from "services/entities/mdm"; import { NotificationContext } from "context/notification"; import Spinner from "components/Spinner"; import BootstrapPackagePreview from "./components/BootstrapPackagePreview"; import PackageUploader from "./components/BootstrapPackageUploader"; import UploadedPackageView from "./components/UploadedPackageView"; import DeletePackageModal from "./components/DeletePackageModal"; const baseClass = "bootstrap-package"; interface IBootstrapPackageProps { currentTeamId: number; } const BootstrapPackage = ({ currentTeamId }: IBootstrapPackageProps) => { const { renderFlash } = useContext(NotificationContext); const [showDeletePackageModal, setShowDeletePackageModal] = useState(false); const { data: bootstrapMetadata, isLoading, error, refetch: refretchBootstrapMetadata, } = useQuery< IBootstrapPackageMetadata, AxiosResponse, IBootstrapPackageMetadata >( ["bootstrap-metadata", currentTeamId], () => mdmAPI.getBootstrapPackageMetadata(currentTeamId), { retry: false, refetchOnWindowFocus: false, cacheTime: 0, } ); const onUpload = () => { refretchBootstrapMetadata(); }; const onDelete = async () => { try { await mdmAPI.deleteBootstrapPackage(currentTeamId); renderFlash("success", "Successfully deleted!"); } catch { renderFlash("error", "Couldn’t delete. Please try again."); } finally { setShowDeletePackageModal(false); refretchBootstrapMetadata(); } }; // we are relying on the API to tell us this resource does not exist to // determine if the user has uploaded a bootstrap package. const noPackageUploaded = (error && error.status === 404) || !bootstrapMetadata; return (

Bootstrap package

{isLoading ? ( ) : (
{noPackageUploaded ? ( <>
) : ( <> setShowDeletePackageModal(true)} />
)}
)} {showDeletePackageModal && ( setShowDeletePackageModal(false)} /> )}
); }; export default BootstrapPackage;