import {
Button,
ConfirmationAlertDialog,
Divider,
Flex,
ListItem,
Text,
UnorderedList,
useDisclosure,
} from '@invoke-ai/ui-library';
import { toast } from 'features/toast/toast';
import { memo, useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { useConvertModelMutation } from 'services/api/endpoints/models';
import type { CheckpointModelConfig } from 'services/api/types';
interface ModelConvertProps {
modelConfig: CheckpointModelConfig;
}
export const ModelConvertButton = memo(({ modelConfig }: ModelConvertProps) => {
const { t } = useTranslation();
const [convertModel, { isLoading }] = useConvertModelMutation();
const { isOpen, onOpen, onClose } = useDisclosure();
const modelConvertHandler = useCallback(() => {
if (!modelConfig || isLoading) {
return;
}
const toastId = `CONVERTING_MODEL_${modelConfig.key}`;
toast({
id: toastId,
title: `${t('modelManager.convertingModelBegin')}: ${modelConfig.name}`,
status: 'info',
});
convertModel(modelConfig.key)
.unwrap()
.then(() => {
toast({ id: toastId, title: `${t('modelManager.modelConverted')}: ${modelConfig.name}`, status: 'success' });
})
.catch(() => {
toast({
id: toastId,
title: `${t('modelManager.modelConversionFailed')}: ${modelConfig.name}`,
status: 'error',
});
});
}, [modelConfig, isLoading, t, convertModel]);
return (
<>
{t('modelManager.convertToDiffusersHelpText1')}
{t('modelManager.convertToDiffusersHelpText2')}
{t('modelManager.convertToDiffusersHelpText3')}
{t('modelManager.convertToDiffusersHelpText4')}
{t('modelManager.convertToDiffusersHelpText5')}
{t('modelManager.convertToDiffusersHelpText6')}
>
);
});
ModelConvertButton.displayName = 'ModelConvertButton';