From 66e18e17c503048210a70f60e85b0f68d015a550 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 11 Jun 2024 13:32:13 -0400 Subject: [PATCH] Adds relays to zap request: - sender, receiver, author --- .../vitorpamplona/amethyst/model/Account.kt | 3 ++- .../amethyst/service/ZapPaymentHandler.kt | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 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 10a4f58e6..2dc8e074d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -782,6 +782,7 @@ class Account( message: String = "", zapType: LnZapEvent.ZapType, toUser: User?, + additionalRelays: Set? = null, onReady: (LnZapRequestEvent) -> Unit, ) { if (!isWriteable()) return @@ -789,7 +790,7 @@ class Account( note.event?.let { event -> LnZapRequestEvent.create( event, - relays = getReceivingRelays(), + relays = getReceivingRelays() + (additionalRelays ?: emptySet()), signer, pollOption, message, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/ZapPaymentHandler.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/ZapPaymentHandler.kt index 1be72d856..483906495 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/ZapPaymentHandler.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/ZapPaymentHandler.kt @@ -29,6 +29,7 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.service.lnurl.LightningAddressResolver import com.vitorpamplona.amethyst.ui.screen.loggedIn.collectSuccessfulSigningOperations +import com.vitorpamplona.quartz.events.AdvertisedRelayListEvent import com.vitorpamplona.quartz.events.AppDefinitionEvent import com.vitorpamplona.quartz.events.LiveActivitiesEvent import com.vitorpamplona.quartz.events.LnZapEvent @@ -170,6 +171,15 @@ class ZapPaymentHandler(val account: Account) { zapsToSend: List, onAllDone: suspend (MutableMap) -> Unit, ) { + val authorRelayList = + note.author?.pubkeyHex?.let { + ( + LocalCache.getAddressableNoteIfExists( + AdvertisedRelayListEvent.createAddressTag(it), + )?.event as? AdvertisedRelayListEvent? + )?.readRelays() + }?.toSet() + collectSuccessfulSigningOperations( operationsInput = zapsToSend, runRequestFor = { next: ZapSplitSetup, onReady -> @@ -181,7 +191,16 @@ class ZapPaymentHandler(val account: Account) { } } else { val user = LocalCache.getUserIfExists(next.lnAddressOrPubKeyHex) - prepareZapRequestIfNeeded(note, pollOption, message, zapType, user) { zapRequestJson -> + val userRelayList = + ( + ( + LocalCache.getAddressableNoteIfExists( + AdvertisedRelayListEvent.createAddressTag(next.lnAddressOrPubKeyHex), + )?.event as? AdvertisedRelayListEvent? + )?.readRelays()?.toSet() ?: emptySet() + ) + (authorRelayList ?: emptySet()) + + prepareZapRequestIfNeeded(note, pollOption, message, zapType, user, userRelayList) { zapRequestJson -> if (zapRequestJson != null) { onReady(SignAllZapRequestsReturn(zapRequestJson, user)) } @@ -338,10 +357,12 @@ class ZapPaymentHandler(val account: Account) { message: String, zapType: LnZapEvent.ZapType, overrideUser: User? = null, + additionalRelays: Set? = null, onReady: (String?) -> Unit, ) { if (zapType != LnZapEvent.ZapType.NONZAP) { - account.createZapRequestFor(note, pollOption, message, zapType, overrideUser) { zapRequest -> + account.createZapRequestFor(note, pollOption, message, zapType, overrideUser, additionalRelays) { zapRequest -> + println("Zap Request " + zapRequest.toJson()) onReady(zapRequest.toJson()) } } else {