Adds relays to zap request:

- sender, receiver, author
This commit is contained in:
Vitor Pamplona
2024-06-11 13:32:13 -04:00
parent 7b2da8312d
commit 66e18e17c5
2 changed files with 25 additions and 3 deletions

View File

@@ -782,6 +782,7 @@ class Account(
message: String = "", message: String = "",
zapType: LnZapEvent.ZapType, zapType: LnZapEvent.ZapType,
toUser: User?, toUser: User?,
additionalRelays: Set<String>? = null,
onReady: (LnZapRequestEvent) -> Unit, onReady: (LnZapRequestEvent) -> Unit,
) { ) {
if (!isWriteable()) return if (!isWriteable()) return
@@ -789,7 +790,7 @@ class Account(
note.event?.let { event -> note.event?.let { event ->
LnZapRequestEvent.create( LnZapRequestEvent.create(
event, event,
relays = getReceivingRelays(), relays = getReceivingRelays() + (additionalRelays ?: emptySet()),
signer, signer,
pollOption, pollOption,
message, message,

View File

@@ -29,6 +29,7 @@ import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.User import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.service.lnurl.LightningAddressResolver import com.vitorpamplona.amethyst.service.lnurl.LightningAddressResolver
import com.vitorpamplona.amethyst.ui.screen.loggedIn.collectSuccessfulSigningOperations 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.AppDefinitionEvent
import com.vitorpamplona.quartz.events.LiveActivitiesEvent import com.vitorpamplona.quartz.events.LiveActivitiesEvent
import com.vitorpamplona.quartz.events.LnZapEvent import com.vitorpamplona.quartz.events.LnZapEvent
@@ -170,6 +171,15 @@ class ZapPaymentHandler(val account: Account) {
zapsToSend: List<ZapSplitSetup>, zapsToSend: List<ZapSplitSetup>,
onAllDone: suspend (MutableMap<ZapSplitSetup, SignAllZapRequestsReturn>) -> Unit, onAllDone: suspend (MutableMap<ZapSplitSetup, SignAllZapRequestsReturn>) -> Unit,
) { ) {
val authorRelayList =
note.author?.pubkeyHex?.let {
(
LocalCache.getAddressableNoteIfExists(
AdvertisedRelayListEvent.createAddressTag(it),
)?.event as? AdvertisedRelayListEvent?
)?.readRelays()
}?.toSet()
collectSuccessfulSigningOperations<ZapSplitSetup, SignAllZapRequestsReturn>( collectSuccessfulSigningOperations<ZapSplitSetup, SignAllZapRequestsReturn>(
operationsInput = zapsToSend, operationsInput = zapsToSend,
runRequestFor = { next: ZapSplitSetup, onReady -> runRequestFor = { next: ZapSplitSetup, onReady ->
@@ -181,7 +191,16 @@ class ZapPaymentHandler(val account: Account) {
} }
} else { } else {
val user = LocalCache.getUserIfExists(next.lnAddressOrPubKeyHex) 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) { if (zapRequestJson != null) {
onReady(SignAllZapRequestsReturn(zapRequestJson, user)) onReady(SignAllZapRequestsReturn(zapRequestJson, user))
} }
@@ -338,10 +357,12 @@ class ZapPaymentHandler(val account: Account) {
message: String, message: String,
zapType: LnZapEvent.ZapType, zapType: LnZapEvent.ZapType,
overrideUser: User? = null, overrideUser: User? = null,
additionalRelays: Set<String>? = null,
onReady: (String?) -> Unit, onReady: (String?) -> Unit,
) { ) {
if (zapType != LnZapEvent.ZapType.NONZAP) { 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()) onReady(zapRequest.toJson())
} }
} else { } else {