refactor: remove providerUuid prop from model components and enhance provider deletion confirmation UI

This commit is contained in:
Junyan Qin
2026-01-01 15:07:37 +08:00
parent b4773c4e48
commit 75c2a063cc
7 changed files with 62 additions and 22 deletions

View File

@@ -17,7 +17,6 @@ import { ExtraArg, ModelType, TestResult } from '../types';
import ExtraArgsEditor from './ExtraArgsEditor';
interface AddModelPopoverProps {
providerUuid: string;
isOpen: boolean;
onOpen: () => void;
onClose: () => void;
@@ -40,7 +39,6 @@ interface AddModelPopoverProps {
}
export default function AddModelPopover({
providerUuid,
isOpen,
onOpen,
onClose,

View File

@@ -20,7 +20,6 @@ import ExtraArgsEditor from './ExtraArgsEditor';
interface ModelItemProps {
model: LLMModel | EmbeddingModel;
modelType: ModelType;
providerUuid: string;
isLangBotModels: boolean;
editModelPopoverOpen: string | null;
deleteConfirmOpen: string | null;
@@ -58,7 +57,6 @@ function convertExtraArgsToArray(extraArgs?: object): ExtraArg[] {
export default function ModelItem({
model,
modelType,
providerUuid,
isLangBotModels,
editModelPopoverOpen,
deleteConfirmOpen,

View File

@@ -1,5 +1,6 @@
'use client';
import { useState } from 'react';
import {
Plus,
ChevronDown,
@@ -9,17 +10,18 @@ import {
LogIn,
} from 'lucide-react';
import { httpClient, systemInfo } from '@/app/infra/http/HttpClient';
import {
ModelProvider,
LLMModel,
EmbeddingModel,
} from '@/app/infra/entities/api';
import { ModelProvider } from '@/app/infra/entities/api';
import { Button } from '@/components/ui/button';
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from '@/components/ui/collapsible';
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '@/components/ui/popover';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
import { useTranslation } from 'react-i18next';
@@ -116,6 +118,8 @@ export default function ProviderCard({
onResetTestResult,
}: ProviderCardProps) {
const { t } = useTranslation();
const [deleteProviderConfirmOpen, setDeleteProviderConfirmOpen] =
useState(false);
const canDelete =
!isLangBotModels &&
@@ -231,17 +235,55 @@ export default function ProviderCard({
<Settings className="h-4 w-4" />
</Button>
{canDelete && (
<Button
variant="ghost"
size="icon"
className="h-8 w-8"
onClick={(e) => {
e.stopPropagation();
onDeleteProvider();
}}
<Popover
open={deleteProviderConfirmOpen}
onOpenChange={setDeleteProviderConfirmOpen}
>
<Trash2 className="h-4 w-4 text-destructive" />
</Button>
<PopoverTrigger asChild>
<Button
variant="ghost"
size="icon"
className="h-8 w-8"
onClick={(e) => {
e.stopPropagation();
}}
>
<Trash2 className="h-4 w-4 text-destructive" />
</Button>
</PopoverTrigger>
<PopoverContent
className="w-64"
align="end"
onClick={(e) => e.stopPropagation()}
>
<div className="space-y-3">
<p className="text-sm">
{t('models.deleteProviderConfirmation')}
</p>
<div className="flex gap-2 justify-end">
<Button
variant="outline"
size="sm"
onClick={() =>
setDeleteProviderConfirmOpen(false)
}
>
{t('common.cancel')}
</Button>
<Button
variant="destructive"
size="sm"
onClick={() => {
onDeleteProvider();
setDeleteProviderConfirmOpen(false);
}}
>
{t('common.delete')}
</Button>
</div>
</div>
</PopoverContent>
</Popover>
)}
</>
)}
@@ -266,7 +308,6 @@ export default function ProviderCard({
)}
{!isLangBotModels && (
<AddModelPopover
providerUuid={provider.uuid}
isOpen={addModelPopoverOpen === provider.uuid}
onOpen={onOpenAddModel}
onClose={onCloseAddModel}
@@ -293,7 +334,6 @@ export default function ProviderCard({
key={model.uuid}
model={model}
modelType="llm"
providerUuid={provider.uuid}
isLangBotModels={isLangBotModels}
editModelPopoverOpen={editModelPopoverOpen}
deleteConfirmOpen={deleteConfirmOpen}
@@ -325,7 +365,6 @@ export default function ProviderCard({
key={model.uuid}
model={model}
modelType="embedding"
providerUuid={provider.uuid}
isLangBotModels={isLangBotModels}
editModelPopoverOpen={editModelPopoverOpen}
deleteConfirmOpen={deleteConfirmOpen}