'use client'; import { useEffect, useState } from 'react'; interface Account { id: string; jid: string; displayName: string | null; status: string; platform: string; } export function AccountCard({ account }: { account: Account }) { const [qrDataUrl, setQrDataUrl] = useState(null); const isDisconnected = account.status === 'DISCONNECTED'; useEffect(() => { if (!isDisconnected) { setQrDataUrl(null); return; } async function fetchQr() { try { const res = await fetch(`/api/accounts/${account.id}/qr`); if (!res.ok) return; const data = await res.json(); setQrDataUrl(data.qrDataUrl ?? null); } catch { // ignore fetch errors (e.g. network issues) } } fetchQr(); const interval = setInterval(fetchQr, 5000); return () => clearInterval(interval); }, [account.id, isDisconnected]); return (

{account.displayName ?? account.jid}

{account.displayName && (

{account.jid}

)}
{account.status === 'ACTIVE' ? 'Connected' : 'Awaiting scan'}
{isDisconnected && qrDataUrl && (

Open WhatsApp → Linked Devices → Link a Device → scan below

WhatsApp QR Code
)} {isDisconnected && !qrDataUrl && (

Waiting for QR code from worker...

)}
); }