// frontend/src/App.jsx import { useState, useEffect, useRef } from 'react'; import { io } from 'socket.io-client'; import './App.css'; function App() { const [phoneNumber, setPhoneNumber] = useState(''); const [status, setStatus] = useState(''); const [pairingCode, setPairingCode] = useState(''); const [isConnecting, setIsConnecting] = useState(false); const [logs, setLogs] = useState([]); const socketRef = useRef(null); useEffect(() => { // Initialize socket connection const socketUrl = window.location.origin; socketRef.current = io(socketUrl, { autoConnect: true, reconnection: true, reconnectionDelay: 1000, reconnectionAttempts: 5 }); const socket = socketRef.current; socket.on('connect', () => { addLog('✅ Connected to server', 'success'); }); socket.on('disconnect', () => { addLog('❌ Disconnected from server', 'error'); setIsConnecting(false); }); socket.on('status', (data) => { setStatus(data.message); addLog(`â„šī¸ ${data.message}`, 'info'); }); socket.on('pairing-code', (data) => { setPairingCode(data.code); setStatus('Pairing code generated successfully!'); addLog(`🔑 Pairing Code: ${data.code}`, 'success'); }); socket.on('success', (data) => { setStatus(data.message); addLog(`✅ ${data.message}`, 'success'); setIsConnecting(false); // Reset after 3 seconds setTimeout(() => { resetForm(); }, 3000); }); socket.on('error', (data) => { setStatus(`Error: ${data.message}`); addLog(`❌ ${data.message}`, 'error'); setIsConnecting(false); setPairingCode(''); }); return () => { socket.disconnect(); }; }, []); const addLog = (message, type = 'info') => { const timestamp = new Date().toLocaleTimeString(); setLogs(prev => [...prev, { message, type, timestamp }]); }; const resetForm = () => { setPhoneNumber(''); setPairingCode(''); setStatus(''); setIsConnecting(false); }; const handleSubmit = (e) => { e.preventDefault(); if (!phoneNumber.trim()) { setStatus('Phone number cannot be empty!'); addLog('❌ Phone number cannot be empty', 'error'); return; } const cleanNumber = phoneNumber.replace(/[^\d]/g, ''); if (cleanNumber.length < 10 || cleanNumber.length > 15) { setStatus('Invalid phone number! Must be 10-15 digits'); addLog('❌ Invalid phone number format', 'error'); return; } if (cleanNumber.startsWith('0')) { setStatus('Phone number must include country code (e.g., 1, 44, 62, 91)'); addLog('❌ Country code required', 'error'); return; } setIsConnecting(true); setPairingCode(''); setStatus('Starting pairing process...'); setLogs([]); addLog('🚀 Initiating connection...', 'info'); socketRef.current.emit('start-pairing', { phoneNumber: cleanNumber }); }; const handlePhoneChange = (e) => { const value = e.target.value.replace(/[^\d+]/g, ''); setPhoneNumber(value); }; const copyCode = () => { navigator.clipboard.writeText(pairingCode); addLog('📋 Pairing code copied!', 'success'); }; return (

🤖 WA Pairing Service

Get your WhatsApp bot session easily

Include country code (e.g., 1 for US, 44 for UK, 62 for ID, 91 for IN)
{pairingCode && (

Pairing Code

{pairingCode}

Next steps:

  1. Open WhatsApp on your phone
  2. Go to Linked Devices
  3. Enter the pairing code above
  4. Wait for creds.json to be sent
)} {status && (
{status}
)} {logs.length > 0 && (

📋 Activity Log

{logs.map((log, index) => (
{log.timestamp} {log.message}
))}
)}

🔒 Privacy guaranteed - Sessions auto-deleted after completion

⚡ Powered by Baileys 6.7.20

); } export default App;