import { Button } from '@/components/ui/button' import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import { useModelProvider } from '@/hooks/useModelProvider' import { deleteModel } from '@/services/models' import { getProviders } from '@/services/providers' import { IconTrash } from '@tabler/icons-react' import { useState, useEffect } from 'react' import { toast } from 'sonner' type DialogDeleteModelProps = { provider: ModelProvider modelId?: string } export const DialogDeleteModel = ({ provider, modelId, }: DialogDeleteModelProps) => { const [selectedModelId, setSelectedModelId] = useState('') const { setProviders, deleteModel: deleteModelCache } = useModelProvider() const removeModel = async () => { deleteModelCache(selectedModelId) deleteModel(selectedModelId).then(() => { getProviders().then(setProviders) toast.success('Delete Model', { id: `delete-model-${selectedModel?.id}`, description: `Model ${selectedModel?.id} has been permanently deleted.`, }) }) } // Initialize with the provided model ID or the first model if available useEffect(() => { if (modelId) { setSelectedModelId(modelId) } else if (provider.models && provider.models.length > 0) { setSelectedModelId(provider.models[0].id) } }, [provider, modelId]) // Get the currently selected model const selectedModel = provider.models.find( // eslint-disable-next-line @typescript-eslint/no-explicit-any (m: any) => m.id === selectedModelId ) if (!selectedModel) { return null } return (
Delete Model: {selectedModel.id} Are you sure you want to delete this model? This action cannot be undone.
) }