diff --git a/packages/web/src/hooks/useWebSocket.ts b/packages/web/src/hooks/useWebSocket.ts index 590f8b7b..0f46922e 100644 --- a/packages/web/src/hooks/useWebSocket.ts +++ b/packages/web/src/hooks/useWebSocket.ts @@ -50,6 +50,13 @@ function notifyFederationChangeListeners(): void { for (const cb of federationChangeListeners) cb(); } +const federationPeerResetDetectedListeners = new Set<(origin: string) => void>(); + +export function onFederationPeerResetDetected(cb: (origin: string) => void): () => void { + federationPeerResetDetectedListeners.add(cb); + return () => { federationPeerResetDetectedListeners.delete(cb); }; +} + // ─── Connection state ───────────────────────────────────────────────────────── interface ConnectionState { @@ -826,6 +833,11 @@ function handleEvent(origin: string, event: ServerEvent): void { break; } + case 'federation_peer_reset_detected': { + for (const cb of federationPeerResetDetectedListeners) cb(event.origin); + break; + } + case 'federation_approval_request_received': { notifyFederationChangeListeners(); break;