portainer/app/react/sidebar/UpgradeBEBanner/UpgradeDialog.tsx

52 lines
1.5 KiB
TypeScript
Raw Normal View History

import { useState } from 'react';
import { useUser } from '@/react/hooks/useUser';
import { UploadLicenseDialog } from './UploadLicenseDialog';
import { LoadingDialog } from './LoadingDialog';
import { NonAdminUpgradeDialog } from './NonAdminUpgradeDialog';
import { GetLicenseDialog } from './GetLicenseDialog';
type Step = 'uploadLicense' | 'loading' | 'getLicense';
export function UpgradeDialog({ onDismiss }: { onDismiss: () => void }) {
const { isAdmin } = useUser();
const [currentStep, setCurrentStep] = useState<Step>('uploadLicense');
const [isGetLicenseSubmitted, setIsGetLicenseSubmitted] = useState(false);
const component = getDialog();
return component;
function getDialog() {
if (!isAdmin) {
return <NonAdminUpgradeDialog onDismiss={onDismiss} />;
}
switch (currentStep) {
case 'getLicense':
return (
<GetLicenseDialog
goToUploadLicense={(isSubmitted) => {
setCurrentStep('uploadLicense');
setIsGetLicenseSubmitted(isSubmitted);
}}
onDismiss={onDismiss}
/>
);
case 'uploadLicense':
return (
<UploadLicenseDialog
goToLoading={() => setCurrentStep('loading')}
onDismiss={onDismiss}
goToGetLicense={() => setCurrentStep('getLicense')}
isGetLicenseSubmitted={isGetLicenseSubmitted}
/>
);
case 'loading':
return <LoadingDialog />;
default:
throw new Error('step type not found');
}
}
}