fix: allow deleting desktop providers

This commit is contained in:
boos
2026-06-29 15:22:40 +08:00
parent 7dd099b2e9
commit 0515b90b6c
4 changed files with 122 additions and 17 deletions
@@ -1107,20 +1107,25 @@ export function ProviderDetail({ providerId }: ProviderDetailProps) {
checkedChildren={t('common.enabled')}
unCheckedChildren={t('common.disabled')}
/>
{!provider.builtin_id && (
<Popconfirm
title={t('settings.deleteProviderConfirm')}
onConfirm={async () => {
await deleteProvider(providerId);
setSelectedProviderId(null);
}}
okText={t('common.confirm')}
cancelText={t('common.cancel')}
okButtonProps={{ danger: true }}
>
<Button type="text" size="small" danger icon={<Trash2 size={14} />} />
</Popconfirm>
)}
<Popconfirm
title={t('settings.deleteProviderConfirm')}
onConfirm={async () => {
await deleteProvider(providerId);
setSelectedProviderId(null);
}}
okText={t('common.confirm')}
cancelText={t('common.cancel')}
okButtonProps={{ danger: true }}
>
<Button
type="text"
size="small"
danger
aria-label={t('settings.deleteProvider')}
title={t('settings.deleteProvider')}
icon={<Trash2 size={14} />}
/>
</Popconfirm>
</Space>
</div>
@@ -231,6 +231,23 @@ describe('ProviderDetail', () => {
expect(screen.getByText('settings.urlPreviewLabelhttps://open.bigmodel.cn/api/paas/v4/chat/completions')).toBeInTheDocument();
});
it('allows deleting built-in providers from the detail header', async () => {
provider.builtin_id = 'boosapi';
mocks.deleteProvider.mockResolvedValue(undefined);
render(
<App>
<ProviderDetail providerId="provider-1" />
</App>,
);
await userEvent.click(screen.getByRole('button', { name: 'settings.deleteProvider' }));
await userEvent.click(await screen.findByText('common.confirm'));
await waitFor(() => expect(mocks.deleteProvider).toHaveBeenCalledWith('provider-1'));
expect(mocks.setSelectedProviderId).toHaveBeenCalledWith(null);
});
it('adds a model from the card-level action and derives the default group from the model id', async () => {
render(
<App>