import React, { useState } from 'react'; import { initializeSupabase, testDatabaseConnection, disconnectSupabase } from '../services/supabaseClient'; import { PlugIcon } from './icons/PlugIcon'; import { LoadingSpinner } from './LoadingSpinner'; interface SupabaseConnectorProps { onSuccess: () => void; } export const SupabaseConnector: React.FC = ({ onSuccess }) => { const [url, setUrl] = useState(''); const [anonKey, setAnonKey] = useState(''); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const handleConnect = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(null); const client = initializeSupabase(url, anonKey); if (!client) { setError("Failed to initialize client. Check credentials."); setIsLoading(false); return; } const { success, error: testError } = await testDatabaseConnection(); if (success) { localStorage.setItem('supabaseUrl', url); localStorage.setItem('supabaseAnonKey', anonKey); onSuccess(); } else { setError(testError || 'Connection failed. Please check your URL, Key, and RLS policies.'); disconnectSupabase(); // Clear the invalid client } setIsLoading(false); }; return (

Connect to Database

To save and view flyer history, connect to your Supabase project. This is optional.

setUrl(e.target.value)} required className="mt-1 block w-full px-3 py-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-brand-primary focus:border-brand-primary sm:text-sm" placeholder="https://your-project.supabase.co" />
setAnonKey(e.target.value)} required className="mt-1 block w-full px-3 py-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-brand-primary focus:border-brand-primary sm:text-sm" placeholder="ey..." />
{error && (
{error}
)}
); };