import type { Provider } from '@/models/common' import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import ProviderInput from '../provider-input' import Link from 'next/link' import { ArrowTopRightOnSquareIcon } from '@heroicons/react/24/outline' import useValidateToken, { ValidatedStatus, ValidatedStatusState } from '../provider-input/useValidateToken' import { ValidatedErrorIcon, ValidatedSuccessIcon, ValidatingTip, ValidatedExceedOnOpenaiTip, ValidatedErrorOnOpenaiTip } from '../provider-input/Validate' interface IOpenaiProviderProps { provider: Provider onValidatedStatus: (status?: ValidatedStatusState) => void onTokenChange: (token: string) => void } const OpenaiProvider = ({ provider, onValidatedStatus, onTokenChange }: IOpenaiProviderProps) => { const { t } = useTranslation() const [token, setToken] = useState(provider.token as string || '') const [ validating, validatedStatus, setValidatedStatus, validate ] = useValidateToken(provider.provider_name) const handleFocus = () => { if (token === provider.token) { setToken('') onTokenChange('') setValidatedStatus({}) } } const handleChange = (v: string) => { setToken(v) onTokenChange(v) validate(v, { beforeValidating: () => { if (!v) { setValidatedStatus({}) return false } return true } }) } useEffect(() => { if (typeof onValidatedStatus === 'function') { onValidatedStatus(validatedStatus) } }, [validatedStatus]) const getValidatedIcon = () => { if (validatedStatus?.status === ValidatedStatus.Error || validatedStatus.status === ValidatedStatus.Exceed) { return } if (validatedStatus.status === ValidatedStatus.Success) { return } } const getValidatedTip = () => { if (validating) { return } if (validatedStatus?.status === ValidatedStatus.Success) { return } if (validatedStatus?.status === ValidatedStatus.Error) { return } } return (
{t('appOverview.welcome.getKeyTip')}
) } export default OpenaiProvider