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 = "",
zapType: LnZapEvent.ZapType,
toUser: User?,
additionalRelays: Set<String>? = 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,

View File

@@ -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<ZapSplitSetup>,
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>(
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<String>? = 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 {