import type { FormEvent } from 'react'; import { useState, useEffect } from 'react'; import { toast } from 'sonner'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { useClient } from 'hooks/useClient'; import { useTranslation } from '@/lib/i18n'; type ApifyConfigData = { apiToken: string; }; type ApifyStatus = { configured: boolean; }; export const ApifyConfig = () => { const { t } = useTranslation(); const client = useClient(); const [isLoading, setIsLoading] = useState(true); const [isSaving, setIsSaving] = useState(false); const [apiToken, setApiToken] = useState(''); const [status, setStatus] = useState(null); useEffect(() => { Promise.all([ client.get('/integrations/apify/config').then((data) => { if (data?.apiToken) setApiToken(data.apiToken); }), client.get('/integrations/apify/status').then(setStatus), ]) .catch(() => {}) .finally(() => setIsLoading(false)); }, []); const handleSave = async (ev?: FormEvent) => { ev?.preventDefault(); if (isSaving) return; setIsSaving(true); try { await client.put('/integrations/apify/config', { apiToken: apiToken.trim() }); toast.success(t('settings.apify.saved')); setStatus({ configured: !!apiToken.trim() }); } catch { toast.error(t('settings.apify.saveFailed')); } finally { setIsSaving(false); } }; if (isLoading) return null; return (
{status && (
{status.configured ? 'API token configured' : 'Not configured'}
)}
); };