import React, { useCallback } from 'react'; import { Button } from '@librechat/client'; import { RefreshCw, Link } from 'lucide-react'; import { useMCPServerManager } from '~/hooks/MCP/useMCPServerManager'; import { useLocalize } from '~/hooks'; interface ServerInitializationSectionProps { serverName: string; requiresOAuth: boolean; hasCustomUserVars?: boolean; } export default function ServerInitializationSection({ serverName, requiresOAuth, hasCustomUserVars = false, }: ServerInitializationSectionProps) { const localize = useLocalize(); // Use the centralized server manager instead of the old initialization hook so we can handle multiple oauth flows at once const { initializeServer, connectionStatus, cancelOAuthFlow, isInitializing, isCancellable, getOAuthUrl, } = useMCPServerManager(); const serverStatus = connectionStatus[serverName]; const isConnected = serverStatus?.connectionState === 'connected'; const canCancel = isCancellable(serverName); const isServerInitializing = isInitializing(serverName); const serverOAuthUrl = getOAuthUrl(serverName); const handleInitializeClick = useCallback(() => { initializeServer(serverName); }, [initializeServer, serverName]); const handleCancelClick = useCallback(() => { cancelOAuthFlow(serverName); }, [cancelOAuthFlow, serverName]); if (isConnected && (requiresOAuth || hasCustomUserVars)) { return (
{localize('com_ui_oauth_flow_desc')}