diff --git a/package-lock.json b/package-lock.json index 627df5b..06a9669 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@smontero/smartvaults-js-client", - "version": "0.0.60", + "version": "0.0.61", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/package.json b/package.json index 624ae4b..de989f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@smontero/smartvaults-js-client", - "version": "0.0.60", + "version": "0.0.61", "description": "SmartVaults javascript client", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/event-kind-handler/DirectMessagesHandler.ts b/src/event-kind-handler/DirectMessagesHandler.ts index 99b64cd..f72b8bf 100644 --- a/src/event-kind-handler/DirectMessagesHandler.ts +++ b/src/event-kind-handler/DirectMessagesHandler.ts @@ -40,7 +40,11 @@ export class DirecMessagesHandler extends EventKindHandler { const currentAuthPubKey = this.authenticator.getPublicKey() const chat = this.getChat() const policyIds = await this.getPolicyIds() - const sharedKeys = await this.getSharedKeysById() + const maybePolicyIds: string[] = directMessageEvents.filter(e => e.tags.some(t => t[0] === 'e' && policyIds.has(t[1]))).map(e => getTagValue(e, TagType.Event)) + let sharedKeys = new Map() + if (maybePolicyIds.length) { + sharedKeys = await this.getSharedKeysById(maybePolicyIds) + } let newConversationsIds: string[] = [] const messagesPromises = directMessageEvents.map(async directMessageEvent => { const storeValue = this.store.get(directMessageEvent.id, 'id') @@ -156,7 +160,11 @@ export class DirecMessagesHandler extends EventKindHandler { const rawDirectMessageEvents: Array> = [] const chat = this.getChat() const policyIds = await this.getPolicyIds() - const sharedKeys = await this.getSharedKeysById() + const maybePolicyIds: string[] = directMessageEvents.filter(e => e.tags.some(t => t[0] === 'e' && policyIds.has(t[1]))).map(e => getTagValue(e, TagType.Event)) + let sharedKeys = new Map() + if (maybePolicyIds.length) { + sharedKeys = await this.getSharedKeysById(maybePolicyIds) + } let newConversationsIds: string[] = [] for (const directMessageEvent of directMessageEvents) { const storeValue = this.store.get(directMessageEvent.id) diff --git a/src/event-kind-handler/TransactionMetadataHandler.ts b/src/event-kind-handler/TransactionMetadataHandler.ts index 73bb563..d6501a3 100644 --- a/src/event-kind-handler/TransactionMetadataHandler.ts +++ b/src/event-kind-handler/TransactionMetadataHandler.ts @@ -3,7 +3,7 @@ import { } from 'nostr-tools' import { TagType } from '../enum' -import { getTagValues, fromNostrDate } from '../util' +import { fromNostrDate, getTagValue } from '../util' import { type Store } from '../service' import { EventKindHandler } from './EventKindHandler' import { @@ -30,13 +30,16 @@ export class TransactionMetadataHandler extends EventKindHandler { const missingTransactionMetadataIds = this.store.missing(transactionMetadataIds, indexKey) const missingtransactionMetadataEvents = transactionMetadataEvents.filter(transactionMetadataEvent => missingTransactionMetadataIds.includes(transactionMetadataEvent.id)) - const policyIds = missingtransactionMetadataEvents.map(e => getTagValues(e, TagType.Event)[0]) + if (!missingtransactionMetadataEvents.length) { + return this.store.getManyAsArray(transactionMetadataIds, indexKey) + } + const policyIds = missingtransactionMetadataEvents.map(e => getTagValue(e, TagType.Event)) const policyIdSharedKeyAuthenticatorMap = await this.getSharedKeysById(policyIds) const transactionMetadataPromises = missingtransactionMetadataEvents.map(async transactionMetadataEvent => { const { id: transactionMetadataEventId } = transactionMetadataEvent - const transactionMetadataId = getTagValues(transactionMetadataEvent, TagType.Identifier)[0] + const transactionMetadataId = getTagValue(transactionMetadataEvent, TagType.Identifier) if (this.store.has(transactionMetadataId, "transactionMetadataId")) { const replacedtransactionMetadata = this.store.get(transactionMetadataId, "transactionMetadataId") const rawReplacedtransactionMetadataEvent = this.eventsStore.get(replacedtransactionMetadata.id) @@ -44,7 +47,7 @@ export class TransactionMetadataHandler extends EventKindHandler { this.eventsStore.delete(rawReplacedtransactionMetadataEvent) } - const policyId = getTagValues(transactionMetadataEvent, TagType.Event)[0] + const policyId = getTagValue(transactionMetadataEvent, TagType.Event) const sharedKeyAuthenticator = policyIdSharedKeyAuthenticatorMap.get(policyId)?.sharedKeyAuthenticator if (!sharedKeyAuthenticator) return null const transactionMetadata: TransactionMetadata = await sharedKeyAuthenticator.decryptObj(transactionMetadataEvent.content) diff --git a/src/models/PublishedPolicy.ts b/src/models/PublishedPolicy.ts index 5622c06..fe76ab0 100644 --- a/src/models/PublishedPolicy.ts +++ b/src/models/PublishedPolicy.ts @@ -336,11 +336,11 @@ export class PublishedPolicy { let trxs: Array = []; let utxos: Array = []; try { - [trxs, utxos] = await Promise.all([ + [trxs] = await Promise.all([ this.getTrxs(), - this.getLabeledUtxos(), this.getTransactionMetadataByPolicyId(this.id, {}) ]); + utxos = await this.getLabeledUtxos(); } catch (error) { console.error("Error while fetching augmented transactions:", error); return [];