improve subscribe to messages
This commit is contained in:
parent
32b0bf7247
commit
8b3f1aa14b
3 changed files with 45 additions and 4 deletions
|
|
@ -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
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue