import React, { useState, useEffect } from 'react'; import { toast } from 'sonner'; import { api } from '@/api'; import { Button } from '@/components/ui/button'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; import { Toggle } from './adminShared'; export default function BankSyncAdminCard() { const [config, setConfig] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [enabled, setEnabled] = useState(false); useEffect(() => { api.bankSyncConfig() .then(d => { setConfig(d); setEnabled(!!d.enabled); }) .catch(() => {}) .finally(() => setLoading(false)); }, []); const handleSave = async () => { setSaving(true); try { const result = await api.setBankSyncConfig({ enabled }); setConfig(result); setEnabled(!!result.enabled); toast.success(enabled ? 'Bank sync enabled.' : 'Bank sync disabled.'); } catch (err) { toast.error(err.message || 'Failed to update bank sync setting.'); } finally { setSaving(false); } }; if (loading) { return ( Loading… ); } const keySet = config?.encryption_key_set; const changed = enabled !== !!config?.enabled; return ( Bank Sync (SimpleFIN)

Allow users to connect their own SimpleFIN Bridge account to sync read-only bank transactions. Each user manages their own connection from the Data page — no bank credentials are stored.

{/* Encryption key status */}
{keySet ? 'TOKEN_ENCRYPTION_KEY is configured. Bank sync can be enabled.' : 'TOKEN_ENCRYPTION_KEY is not set. Add a 32+ character key to your environment before enabling bank sync.'}
{/* Enable toggle */}

Allow users to connect SimpleFIN

When enabled, users see a Bank Sync section on their Data page.

setEnabled(v)} disabled={!keySet} label="Enable bank sync" />
); }