feat: Update useRelayHub to manage reactive relay and subscription counts

- Introduce reactive properties for connectedRelayCount, totalRelayCount, and totalSubscriptionCount in useRelayHub.ts to track relay and subscription states.
- Enhance event listeners in useRelayHub to update these counts on connection and subscription events.
- Simplify getter methods in relayHub.ts by removing unnecessary logging and directly returning counts.
- Emit subscriptionCreated and subscriptionRemoved events to keep track of active subscriptions.
This commit is contained in:
padreug 2025-08-10 18:37:52 +02:00
parent 36e9694c1b
commit 8fb0c40797
2 changed files with 42 additions and 18 deletions

View file

@ -86,9 +86,7 @@ export class RelayHub extends EventEmitter {
get connectedRelayCount(): number {
// Return the actual size of connectedRelays map
const count = this.connectedRelays.size
console.log('🔍 connectedRelayCount getter called, returning:', count)
return count
return this.connectedRelays.size
}
get totalRelayCount(): number {
@ -100,19 +98,11 @@ export class RelayHub extends EventEmitter {
}
get relayStatuses(): RelayStatus[] {
console.log('🔍 relayStatuses getter called')
console.log('🔍 relayConfigs size:', this.relayConfigs.size)
console.log('🔍 connectedRelays size:', this.connectedRelays.size)
console.log('🔍 connectedRelays keys:', Array.from(this.connectedRelays.keys()))
return Array.from(this.relayConfigs.values()).map(config => {
const relay = this.connectedRelays.get(config.url)
const isConnected = !!relay
console.log(`🔍 Relay ${config.url}: connected=${isConnected}, relay=${relay ? 'exists' : 'null'}`)
return {
url: config.url,
connected: isConnected,
connected: !!relay,
lastSeen: relay ? Date.now() : 0,
error: relay ? undefined : 'Not connected',
latency: relay ? 0 : undefined // TODO: Implement actual latency measurement
@ -269,6 +259,9 @@ export class RelayHub extends EventEmitter {
// Store subscription for cleanup
this.subscriptions.set(config.id, subscription)
// Emit subscription created event
this.emit('subscriptionCreated', { id: config.id, count: this.subscriptions.size })
// Return unsubscribe function
return () => {
@ -285,6 +278,9 @@ export class RelayHub extends EventEmitter {
subscription.close()
this.subscriptions.delete(subscriptionId)
console.log(`Unsubscribed from ${subscriptionId}`)
// Emit subscription removed event
this.emit('subscriptionRemoved', { id: subscriptionId, count: this.subscriptions.size })
}
}