diff --git a/components/settings/image-settings.tsx b/components/settings/image-settings.tsx
index 172bd7493..0931cb2b1 100644
--- a/components/settings/image-settings.tsx
+++ b/components/settings/image-settings.tsx
@@ -334,10 +334,10 @@ export function ImageSettings({ selectedProviderId }: ImageSettingsProps) {
diff --git a/components/settings/index.tsx b/components/settings/index.tsx
index d841b3eaf..5f122e2e5 100644
--- a/components/settings/index.tsx
+++ b/components/settings/index.tsx
@@ -1034,6 +1034,7 @@ export function SettingsDialog({ open, onOpenChange, initialSection }: SettingsD
baseUrl={providersConfig[selectedProviderId]?.baseUrl}
providerType={providersConfig[selectedProviderId]?.type}
requiresApiKey={providersConfig[selectedProviderId]?.requiresApiKey}
+ isServerConfigured={providersConfig[selectedProviderId]?.isServerConfigured}
/>
{/* Add Provider Dialog */}
diff --git a/components/settings/model-edit-dialog.tsx b/components/settings/model-edit-dialog.tsx
index aae60a091..d2f9cb3e0 100644
--- a/components/settings/model-edit-dialog.tsx
+++ b/components/settings/model-edit-dialog.tsx
@@ -24,6 +24,7 @@ interface ModelEditDialogProps {
baseUrl?: string;
providerType?: string;
requiresApiKey?: boolean;
+ isServerConfigured?: boolean;
}
export function ModelEditDialog({
@@ -38,6 +39,7 @@ export function ModelEditDialog({
baseUrl,
providerType,
requiresApiKey,
+ isServerConfigured,
}: ModelEditDialogProps) {
const { t } = useI18n();
const [testStatus, setTestStatus] = useState<'idle' | 'testing' | 'success' | 'error'>('idle');
@@ -59,9 +61,7 @@ export function ModelEditDialog({
};
const handleTestModel = useCallback(async () => {
- if (!editingModel || !apiKey) {
- setTestStatus('error');
- setTestMessage(t('settings.apiKeyRequired') || 'API Key is required');
+ if (!editingModel) {
return;
}
@@ -305,7 +305,11 @@ export function ModelEditDialog({
variant="outline"
size="sm"
onClick={handleTestModel}
- disabled={!editingModel.model.id || testStatus === 'testing'}
+ disabled={
+ !editingModel.model.id ||
+ testStatus === 'testing' ||
+ (requiresApiKey && !apiKey && !isServerConfigured)
+ }
className={cn(
testStatus === 'success' && 'border-green-600 text-green-600 hover:bg-green-50',
testStatus === 'error' && 'border-red-600 text-red-600 hover:bg-red-50',
diff --git a/components/settings/video-settings.tsx b/components/settings/video-settings.tsx
index ffe3506e9..0260c165a 100644
--- a/components/settings/video-settings.tsx
+++ b/components/settings/video-settings.tsx
@@ -337,10 +337,10 @@ export function VideoSettings({ selectedProviderId }: VideoSettingsProps) {