From 7a09c7790288909f7f57736be2bf7ad630f392da Mon Sep 17 00:00:00 2001 From: minibits-cash Date: Tue, 9 Apr 2024 13:19:43 +0200 Subject: [PATCH] Fix regression bug in reconnection to Nostr relays --- package.json | 2 +- src/services/nostrService.ts | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 2b9e5511..6d1f580c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "minibits_wallet", - "version": "0.1.6-beta.47", + "version": "0.1.6-beta.48", "private": true, "scripts": { "android:clean": "cd android && ./gradlew clean", diff --git a/src/services/nostrService.ts b/src/services/nostrService.ts index 14cd7472..757ba821 100644 --- a/src/services/nostrService.ts +++ b/src/services/nostrService.ts @@ -22,7 +22,7 @@ import {log} from './logService' import AppError, { Err } from '../utils/AppError' import { MinibitsClient } from './minibitsService' import { rootStoreInstance } from '../models' -import { Wallet } from './walletService' +import { WalletTask } from './walletService' export { NostrEvent, @@ -80,7 +80,7 @@ const reconnectToRelays = async function () { // recreate subscriptions if all relays down if(relaysStore.connectedCount === 0) { - Wallet.checkPendingReceived().catch(e => false) + WalletTask.handleSpentFromPending().catch(e => false) } const pool = getRelayPool() @@ -202,37 +202,37 @@ const decryptNip04 = async function( const publish = async function ( event: NostrUnsignedEvent, relays: string[], -): Promise { +): Promise { const keys: KeyPair = await getOrCreateKeyPair() - event.created_at = Math.floor(Date.now() / 1000) - event.id = getEventHash(event) - event.sig = getSignature(event, keys.privateKey) + const signed = {...event} as NostrEvent + + signed.created_at = Math.floor(Date.now() / 1000) + signed.id = getEventHash(event) + signed.sig = getSignature(event, keys.privateKey) if(!validateEvent(event)) { throw new AppError(Err.VALIDATION_ERROR, 'Event is invalid and could not be published', event) } - log.trace('Event to be published', event, 'publish') + log.trace('Event to be published', signed, 'publish') const pool = getRelayPool() - let pubs = pool.publish(relays, event) + let pubs = pool.publish(relays, signed) await delay(1000) // await Promise.all(pubs) const published: NostrEvent = await pool.get(relays, { - ids: [event.id] + ids: [signed.id] }) if(published) { - log.trace('Event successfully published', published, 'NostrClient.publish') - // pool.close(relays) + log.trace('Event successfully published', published, 'NostrClient.publish') return published } - - // pool.close(relays) + return undefined } @@ -258,10 +258,10 @@ const getEvent = async function ( const getEvents = async function ( relays: string[], filters: NostrFilter[] -): Promise { +): Promise { const pool = getRelayPool() - const events: Event[] = await pool.list(relays, filters) + const events: NostrEvent[] = await pool.list(relays, filters) if(events && events.length > 0) { return events @@ -357,7 +357,7 @@ const getProfileFromRelays = async function (pubkey: string, relays: string[]): kinds: [0], }] - const events: NostrEvent[] = await NostrClient.getEvents(relays, filters) + const events = await NostrClient.getEvents(relays, filters) if(!events || events.length === 0) {