import { Fragment, useEffect, useMemo, useRef, useState } from 'react'; import messageManager from '@/lib/waku'; import { MessageType } from '@/types/waku'; import type { OpchanMessage } from '@/types/forum'; interface ReceivedMessage { receivedAt: number; message: OpchanMessage; } export default function DebugPage() { const [messages, setMessages] = useState([]); const unsubscribeRef = useRef<(() => void) | null>(null); useEffect(() => { // Subscribe to inbound messages from reliable channel unsubscribeRef.current = messageManager.onMessageReceived(msg => { setMessages(prev => [{ receivedAt: Date.now(), message: msg }, ...prev].slice(0, 500) ); }); return () => { unsubscribeRef.current?.(); }; }, []); const formatTs = (ts: number) => new Date(ts).toLocaleTimeString(); const typeCounts = useMemo(() => { const counts: Record = {}; for (const item of messages) { counts[item.message.type] = (counts[item.message.type] || 0) + 1; } return counts; }, [messages]); return (

Reliable Channel Debug

Total received: {messages.length}
{Object.values(MessageType).map(t => (
{t}:{' '} {typeCounts[t] || 0}
))}
Recent messages
Received
Type
ID / Author
Msg Timestamp
{messages.map(m => (
{formatTs(m.receivedAt)}
{m.message.type}
{m.message.id} —{' '} {m.message.author}
{formatTs(m.message.timestamp)}
))}
); }