import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useCloudAccounts, useSetAccountProxy } from '@/hooks/useCloudAccounts'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { isValidProxyUrl } from '@/utils/url'; import { Loader2 } from 'lucide-react'; import { CloudAccount } from '@/types/cloudAccount'; function AccountProxyItem({ account }: { account: CloudAccount }) { const { t } = useTranslation(); const setAccountProxy = useSetAccountProxy(); const [proxyUrl, setProxyUrl] = useState(account.proxy_url || ''); const [proxySaved, setProxySaved] = useState(false); return (
{account.avatar_url ? ( {account.name ) : (
{account.name?.[0]?.toUpperCase() || 'A'}
)}
{account.name || t('cloud.card.unknown')} {account.email}
{ setProxyUrl(e.target.value); setProxySaved(false); }} onBlur={() => { const trimmed = proxyUrl.trim(); if (trimmed && !isValidProxyUrl(trimmed)) { setProxyUrl(account.proxy_url || ''); return; } if (trimmed !== (account.proxy_url || '')) { setAccountProxy.mutate({ accountId: account.id, proxyUrl: trimmed || null, }); setProxySaved(true); setTimeout(() => setProxySaved(false), 2000); } }} placeholder={t('cloud.card.proxyPlaceholder') || 'e.g. http://127.0.0.1:7890'} className="h-8 w-48 text-sm" onKeyDown={(e) => { if (e.key === 'Enter') { e.currentTarget.blur(); } }} />
{proxySaved && ( {t('cloud.card.proxySaved')} )}
); } export function AccountProxySettings() { const { t } = useTranslation(); const { data: accounts, isLoading } = useCloudAccounts(); if (isLoading) { return ( {t('settings.proxy.accountProxies.title')} {t('settings.proxy.accountProxies.description')} ); } if (!accounts || accounts.length === 0) { return null; } return ( {t('settings.proxy.accountProxies.title')} {t('settings.proxy.accountProxies.description')} {accounts.map((account) => ( ))} ); }