import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/Button'; import { HeaderInputList } from '@/components/ui/HeaderInputList'; import { Input } from '@/components/ui/Input'; import { Modal } from '@/components/ui/Modal'; import { ModelInputList } from '@/components/ui/ModelInputList'; import { modelsToEntries } from '@/components/ui/modelInputListUtils'; import type { ProviderKeyConfig } from '@/types'; import { headersToEntries } from '@/utils/headers'; import type { ProviderModalProps, VertexFormState } from '../types'; interface VertexModalProps extends ProviderModalProps { isSaving: boolean; } const buildEmptyForm = (): VertexFormState => ({ apiKey: '', prefix: '', baseUrl: '', proxyUrl: '', headers: [], models: [], modelEntries: [{ name: '', alias: '' }], }); export function VertexModal({ isOpen, editIndex, initialData, onClose, onSave, isSaving, }: VertexModalProps) { const { t } = useTranslation(); const [form, setForm] = useState(buildEmptyForm); useEffect(() => { if (!isOpen) return; if (initialData) { // eslint-disable-next-line react-hooks/set-state-in-effect setForm({ ...initialData, headers: headersToEntries(initialData.headers), modelEntries: modelsToEntries(initialData.models), }); return; } setForm(buildEmptyForm()); }, [initialData, isOpen]); return ( } > setForm((prev) => ({ ...prev, apiKey: e.target.value }))} /> setForm((prev) => ({ ...prev, prefix: e.target.value }))} hint={t('ai_providers.prefix_hint')} /> setForm((prev) => ({ ...prev, baseUrl: e.target.value }))} /> setForm((prev) => ({ ...prev, proxyUrl: e.target.value }))} /> setForm((prev) => ({ ...prev, headers: entries }))} addLabel={t('common.custom_headers_add')} keyPlaceholder={t('common.custom_headers_key_placeholder')} valuePlaceholder={t('common.custom_headers_value_placeholder')} />
setForm((prev) => ({ ...prev, modelEntries: entries }))} addLabel={t('ai_providers.vertex_models_add_btn')} namePlaceholder={t('common.model_name_placeholder')} aliasPlaceholder={t('common.model_alias_placeholder')} disabled={isSaving} />
{t('ai_providers.vertex_models_hint')}
); }