improve subscribe to messages

This commit is contained in:
padreug 2025-02-12 01:42:04 +01:00
parent 32b0bf7247
commit 8b3f1aa14b
3 changed files with 45 additions and 4 deletions

View file

@ -89,6 +89,7 @@ export const useNostrStore = defineStore('nostr', () => {
const activeChat = ref<string | null>(null)
const relayPool = ref<any[]>([])
const processedMessageIds = ref(new Set<string>())
const currentSubscription = ref<any | null>(null)
// Watch account changes and persist to localStorage
watch(account, (newAccount) => {
@ -245,9 +246,14 @@ export const useNostrStore = defineStore('nostr', () => {
await publishEvent(event, account.value.relays)
}
const subscribeToMessages = async () => {
async function subscribeToMessages() {
if (!account.value) return
// Cleanup existing subscription if any
if (currentSubscription.value) {
unsubscribeFromMessages()
}
// Filter for received messages with history
const receivedFilter = {
kinds: [4],
@ -349,6 +355,14 @@ export const useNostrStore = defineStore('nostr', () => {
resolve(true)
}
})
// Store subscriptions for cleanup
currentSubscription.value = {
unsub: () => {
receivedSub.unsub()
sentSub.unsub()
}
}
})
}
@ -356,6 +370,13 @@ export const useNostrStore = defineStore('nostr', () => {
await Promise.all(relayPool.value.map(relay => subscribeToRelay(relay)))
}
function unsubscribeFromMessages() {
if (currentSubscription.value) {
currentSubscription.value.unsub()
currentSubscription.value = null
}
}
return {
account,
profiles,
@ -367,6 +388,7 @@ export const useNostrStore = defineStore('nostr', () => {
login,
logout,
sendMessage,
subscribeToMessages
subscribeToMessages,
unsubscribeFromMessages
}
})