diff --git a/src/stores/nostr.ts b/src/stores/nostr.ts index e88ac16..64e6a90 100644 --- a/src/stores/nostr.ts +++ b/src/stores/nostr.ts @@ -248,13 +248,12 @@ export const useNostrStore = defineStore('nostr', () => { // Get timestamp from 24 hours ago const since = Math.floor(Date.now() / 1000) - (24 * 60 * 60) + let hasReceivedMessages = false try { const subscribeToRelay = (relay: any) => { return new Promise((resolve) => { const subs: any[] = [] - let messageReceived = false - let isResolved = false try { console.log('Setting up subscriptions for relay...') @@ -264,6 +263,7 @@ export const useNostrStore = defineStore('nostr', () => { kinds: [4], '#p': [account.value!.pubkey], since, + limit: 100 // Add limit to ensure we get historical messages }]) subs.push(receivedSub) @@ -272,13 +272,13 @@ export const useNostrStore = defineStore('nostr', () => { kinds: [4], authors: [account.value!.pubkey], since, + limit: 100 // Add limit to ensure we get historical messages }]) subs.push(sentSub) // Handle received messages receivedSub.on('event', async (event: NostrEvent) => { - messageReceived = true - if (isResolved) return // Don't process events after resolution + hasReceivedMessages = true try { if (processedMessageIds.value.has(event.id)) return @@ -305,8 +305,7 @@ export const useNostrStore = defineStore('nostr', () => { // Handle sent messages sentSub.on('event', async (event: NostrEvent) => { - messageReceived = true - if (isResolved) return // Don't process events after resolution + hasReceivedMessages = true try { if (processedMessageIds.value.has(event.id)) return @@ -334,6 +333,21 @@ export const useNostrStore = defineStore('nostr', () => { } }) + // Handle EOSE (End of Stored Events) + receivedSub.on('eose', () => { + console.log('Received EOSE for received messages') + if (!hasReceivedMessages) { + console.log('No messages received yet, keeping subscription open') + } + }) + + sentSub.on('eose', () => { + console.log('Received EOSE for sent messages') + if (!hasReceivedMessages) { + console.log('No messages received yet, keeping subscription open') + } + }) + // Store subscriptions for cleanup currentSubscription.value = { unsub: () => { @@ -349,24 +363,12 @@ export const useNostrStore = defineStore('nostr', () => { } } - // Consider subscription successful after a short delay - setTimeout(() => { - if (!isResolved) { - isResolved = true - console.debug(messageReceived ? - 'Subscription successful with messages' : - 'Subscription successful, no messages yet' - ) - resolve(true) - } - }, 3000) + // Keep subscription open + resolve(true) } catch (err) { console.debug('Error in subscription setup:', err) - if (!isResolved) { - isResolved = true - resolve(false) - } + resolve(false) } }) } @@ -377,16 +379,10 @@ export const useNostrStore = defineStore('nostr', () => { ) // Consider success if at least one relay worked - const success = results.some(result => result) - if (!success) { - console.debug('No relays successfully subscribed') - return false // Return false instead of throwing - } - - return true + return results.some(result => result) } catch (err) { console.debug('Subscription process failed:', err) - return false // Return false instead of throwing + return false } }