'use client'; import React, { useCallback, useState, useEffect } from 'react'; import { Plus, MoreVertical, Unplug, Loader2, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { configManager } from '@/lib/config/storage'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Drawer } from './drawer'; import { GitHubAuthPanel } from '@/components/settings/github-auth-panel'; import { track } from '@/lib/telemetry'; export function GitHubConnectionsSection() { const [, bump] = useState(0); const refresh = useCallback(() => bump((v) => v + 1), []); const [drawerOpen, setDrawerOpen] = useState(false); const [drawerMode, setDrawerMode] = useState<'connect' | 'edit' | null>(null); const [isLoading, setIsLoading] = useState(false); const auth = configManager.getGitHubAuth(); const isConnected = !!auth; useEffect(() => { const handleAuthUpdate = (e: Event) => { const detail = (e as CustomEvent).detail; if (detail?.provider === 'github') { refresh(); } }; window.addEventListener('apiKeyUpdated', handleAuthUpdate); return () => window.removeEventListener('apiKeyUpdated', handleAuthUpdate); }, [refresh]); const handleDisconnect = () => { setIsLoading(true); try { configManager.clearGitHubAuth(); toast.success('Disconnected from GitHub'); track('connection_removed', { provider: 'github' }); refresh(); } catch { toast.error('Failed to disconnect'); } finally { setIsLoading(false); } }; return (
Connected GitHub account for project export.
None yet.
) : (