From a0797f710480c0d092d0e42f7c99db05ff2ee0d5 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 21 May 2023 20:53:57 -0400 Subject: [PATCH] Fixes NWC with Auth --- .../vitorpamplona/amethyst/model/Account.kt | 7 ++++++- .../NostrLnZapPaymentResponseDataSource.kt | 20 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 38d71ebda..209a97906 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -217,7 +217,12 @@ class Account( zapPaymentRequest?.let { nip47 -> val event = LnZapPaymentRequestEvent.create(bolt11, nip47.pubKeyHex, nip47.secret?.hexToByteArray() ?: loggedIn.privKey!!) - val wcListener = NostrLnZapPaymentResponseDataSource(nip47.pubKeyHex, event.pubKey, event.id) + val wcListener = NostrLnZapPaymentResponseDataSource( + fromServiceHex = nip47.pubKeyHex, + toUserHex = event.pubKey, + replyingToHex = event.id, + authSigningKey = nip47.secret?.hexToByteArray() ?: loggedIn.privKey!! + ) wcListener.start() LocalCache.consume(event, zappedNote) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrLnZapPaymentResponseDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrLnZapPaymentResponseDataSource.kt index 57de8be6e..7993306f5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrLnZapPaymentResponseDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrLnZapPaymentResponseDataSource.kt @@ -1,14 +1,18 @@ package com.vitorpamplona.amethyst.service import com.vitorpamplona.amethyst.service.model.LnZapPaymentResponseEvent +import com.vitorpamplona.amethyst.service.model.RelayAuthEvent +import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.service.relays.FeedType import com.vitorpamplona.amethyst.service.relays.JsonFilter +import com.vitorpamplona.amethyst.service.relays.Relay import com.vitorpamplona.amethyst.service.relays.TypedFilter class NostrLnZapPaymentResponseDataSource( - private var fromServiceHex: String, - private var toUserHex: String, - private var replyingToHex: String + private val fromServiceHex: String, + private val toUserHex: String, + private val replyingToHex: String, + private val authSigningKey: ByteArray ) : NostrDataSource("LnZapPaymentResponseFeed") { val feedTypes = setOf(FeedType.WALLET_CONNECT) @@ -36,4 +40,14 @@ class NostrLnZapPaymentResponseDataSource( channel.typedFilters = listOfNotNull(wc).ifEmpty { null } } + + override fun auth(relay: Relay, challenge: String) { + super.auth(relay, challenge) + + val event = RelayAuthEvent.create(relay.url, challenge, authSigningKey) + Client.send( + event, + relay.url + ) + } }