From 6876a7f0d203ae4280c5543f240c3615fc876f5c Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 15 Sep 2023 13:53:05 -0300 Subject: [PATCH] zaps in background --- .../vitorpamplona/amethyst/model/Account.kt | 17 +- .../amethyst/model/LocalCache.kt | 1 - .../amethyst/ui/note/PollNote.kt | 74 +----- .../amethyst/ui/note/ReactionsRow.kt | 231 +++--------------- .../amethyst/ui/note/ZapCustomDialog.kt | 114 +++------ .../ui/screen/loggedIn/AccountViewModel.kt | 18 +- .../quartz/events/LnZapRequestEvent.kt | 9 +- 7 files changed, 100 insertions(+), 364 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 904ac6cbe..02304cd06 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -454,7 +454,7 @@ class Account( ) } LnZapEvent.ZapType.PUBLIC -> { - return LnZapRequestEvent.createPublic( + val unsignedEvent = LnZapRequestEvent.createPublic( event, userProfile().latestContactList?.relays()?.keys?.ifEmpty { null } ?: localRelays.map { it.url }.toSet(), @@ -462,10 +462,18 @@ class Account( pollOption, message ) + AmberUtils.openAmber(unsignedEvent) + val content = AmberUtils.content[unsignedEvent.id] ?: "" + if (content.isBlank()) return null + + return LnZapRequestEvent.create( + unsignedEvent, + content + ) } LnZapEvent.ZapType.PRIVATE -> { - return LnZapRequestEvent.createPrivateZap( + val unsignedEvent = LnZapRequestEvent.createPrivateZap( event, userProfile().latestContactList?.relays()?.keys?.ifEmpty { null } ?: localRelays.map { it.url }.toSet(), @@ -473,6 +481,11 @@ class Account( pollOption, message ) + AmberUtils.openAmber(unsignedEvent) + val content = AmberUtils.content[unsignedEvent.id] ?: "" + if (content.isBlank()) return null + + return Event.fromJson(content) as LnZapRequestEvent } else -> null } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt index 9d60225f9..a5e7914ae 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/LocalCache.kt @@ -466,7 +466,6 @@ object LocalCache { } fun consume(event: PrivateDmEvent, relay: Relay?): Note { - Log.e("isRunning", event.toJson()) val note = getOrCreateNote(event.id) val author = getOrCreateUser(event.pubKey) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/PollNote.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/PollNote.kt index 6abbddadc..440ccdd6e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/PollNote.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/PollNote.kt @@ -1,9 +1,6 @@ package com.vitorpamplona.amethyst.ui.note -import android.app.Activity import android.widget.Toast -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.* @@ -25,12 +22,8 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.lifecycle.viewmodel.compose.viewModel -import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R -import com.vitorpamplona.amethyst.ServiceManager import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.service.AmberUtils -import com.vitorpamplona.amethyst.ui.actions.SignerType import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange @@ -39,10 +32,8 @@ import com.vitorpamplona.amethyst.ui.theme.Font14SP import com.vitorpamplona.amethyst.ui.theme.QuoteBorder import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink import com.vitorpamplona.amethyst.ui.theme.placeholderText -import com.vitorpamplona.quartz.events.Event import com.vitorpamplona.quartz.events.ImmutableListOfLists import com.vitorpamplona.quartz.events.LnZapEvent -import com.vitorpamplona.quartz.events.LnZapRequestEvent import com.vitorpamplona.quartz.events.toImmutableListOfLists import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -300,60 +291,6 @@ fun ZapVote( nonClickablePrepend() - val event = remember { mutableStateOf(null) } - val activityResult = rememberLauncherForActivityResult( - contract = ActivityResultContracts.StartActivityForResult(), - onResult = { - if (it.resultCode != Activity.RESULT_OK) { - scope.launch(Dispatchers.Main) { - Toast.makeText( - Amethyst.instance, - "Sign request rejected", - Toast.LENGTH_SHORT - ).show() - } - } else { - val json = it.data?.getStringExtra("event") ?: "" - val signedEvent = Event.fromJson(json) as LnZapRequestEvent - if (signedEvent.hasValidSignature()) { - accountViewModel.zap( - baseNote, - accountViewModel.account.zapAmountChoices.first() * 1000, - null, - "", - context, - { - scope.launch { - zappingProgress = 0f - showErrorMessageDialog = it - } - }, - { progress: Float -> - zappingProgress = progress - }, - accountViewModel.account.defaultZapType, - null - ) - } - } - AmberUtils.isActivityRunning = false - ServiceManager.shouldPauseService = true - event.value = null - } - ) - - LaunchedEffect(event.value) { - if (event.value != null) { - AmberUtils.openAmber( - event.value!!.toJson(), - SignerType.SIGN_EVENT, - activityResult, - "", - event.value!!.id() - ) - } - } - Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.combinedClickable( @@ -361,7 +298,7 @@ fun ZapVote( // interactionSource = remember { MutableInteractionSource() }, // indication = rememberRipple(bounded = false, radius = 24.dp), onClick = { - if (!accountViewModel.isWriteable()) { + if (!accountViewModel.isWriteable() && !accountViewModel.loggedInWithAmber()) { scope.launch { Toast .makeText( @@ -425,8 +362,7 @@ fun ZapVote( zappingProgress = it } }, - zapType = accountViewModel.account.defaultZapType, - null + zapType = accountViewModel.account.defaultZapType ) } else { wantsToZap = true @@ -566,8 +502,7 @@ fun FilteredZapAmountChoicePopup( context, onError, onProgress, - defaultZapType, - null + defaultZapType ) onDismiss() }, @@ -591,8 +526,7 @@ fun FilteredZapAmountChoicePopup( context, onError, onProgress, - defaultZapType, - null + defaultZapType ) onDismiss() }, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index b2e35e720..c934d4c69 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -1,11 +1,8 @@ package com.vitorpamplona.amethyst.ui.note -import android.app.Activity import android.content.Context import android.util.Log import android.widget.Toast -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.ContentTransform @@ -49,7 +46,6 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -80,13 +76,9 @@ import androidx.lifecycle.map import coil.compose.AsyncImage import coil.request.CachePolicy import coil.request.ImageRequest -import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R -import com.vitorpamplona.amethyst.ServiceManager import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.service.AmberUtils import com.vitorpamplona.amethyst.ui.actions.NewPostView -import com.vitorpamplona.amethyst.ui.actions.SignerType import com.vitorpamplona.amethyst.ui.components.ImageUrlType import com.vitorpamplona.amethyst.ui.components.InLineIconRenderer import com.vitorpamplona.amethyst.ui.components.TextType @@ -115,9 +107,6 @@ import com.vitorpamplona.amethyst.ui.theme.TinyBorders import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.amethyst.ui.theme.placeholderTextColorFilter -import com.vitorpamplona.quartz.events.Event -import com.vitorpamplona.quartz.events.LnZapEvent -import com.vitorpamplona.quartz.events.LnZapRequestEvent import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableMap import kotlinx.coroutines.CoroutineScope @@ -962,63 +951,6 @@ fun ZapReaction( var zappingProgress by remember { mutableStateOf(0f) } - val event = remember { mutableStateOf(null) } - val activityResult = rememberLauncherForActivityResult( - contract = ActivityResultContracts.StartActivityForResult(), - onResult = { - if (it.resultCode != Activity.RESULT_OK) { - wantsToZap = false - zappingProgress = 0f - scope.launch(Dispatchers.Main) { - Toast.makeText( - Amethyst.instance, - "Sign request rejected", - Toast.LENGTH_SHORT - ).show() - } - } else { - val json = it.data?.getStringExtra("event") ?: "" - val signedEvent = Event.fromJson(json) as LnZapRequestEvent - if (signedEvent.hasValidSignature()) { - accountViewModel.zap( - baseNote, - accountViewModel.account.zapAmountChoices.first() * 1000, - null, - "", - context, - { - scope.launch { - zappingProgress = 0f - showErrorMessageDialog = it - } - }, - { progress: Float -> - zappingProgress = progress - }, - accountViewModel.account.defaultZapType, - signedEvent - ) - } - } - AmberUtils.isActivityRunning = false - ServiceManager.shouldPauseService = true - event.value = null - wantsToZap = false - } - ) - - LaunchedEffect(event.value) { - if (event.value != null) { - AmberUtils.openAmber( - event.value!!.toJson(), - SignerType.SIGN_EVENT, - activityResult, - "", - event.value!!.id() - ) - } - } - Row( verticalAlignment = CenterVertically, modifier = Modifier @@ -1044,8 +976,7 @@ fun ZapReaction( zappingProgress = 0f showErrorMessageDialog = it } - }, - event + } ) }, onLongClick = { @@ -1152,8 +1083,7 @@ private fun zapClick( context: Context, onZappingProgress: (Float) -> Unit, onMultipleChoices: () -> Unit, - onError: (String) -> Unit, - event: MutableState + onError: (String) -> Unit ) { if (accountViewModel.account.zapAmountChoices.isEmpty()) { scope.launch { @@ -1165,46 +1095,15 @@ private fun zapClick( ) .show() } - } else if (!accountViewModel.isWriteable()) { - if (accountViewModel.loggedInWithAmber()) { - if (accountViewModel.account.zapAmountChoices.size == 1) { - if (accountViewModel.account.defaultZapType != LnZapEvent.ZapType.ANONYMOUS && accountViewModel.account.defaultZapType != LnZapEvent.ZapType.NONZAP) { - event.value = accountViewModel.account.createZapRequestFor( - baseNote, - null, - "", - accountViewModel.account.defaultZapType - ) - } else { - accountViewModel.zap( - baseNote, - accountViewModel.account.zapAmountChoices.first() * 1000, - null, - "", - context, - onError = onError, - onProgress = { - scope.launch(Dispatchers.Main) { - onZappingProgress(it) - } - }, - zapType = accountViewModel.account.defaultZapType, - null - ) - } - } else if (accountViewModel.account.zapAmountChoices.size > 1) { - onMultipleChoices() - } - } else { - scope.launch { - Toast - .makeText( - context, - context.getString(R.string.login_with_a_private_key_to_be_able_to_send_zaps), - Toast.LENGTH_SHORT - ) - .show() - } + } else if (!accountViewModel.isWriteable() && !accountViewModel.loggedInWithAmber()) { + scope.launch { + Toast + .makeText( + context, + context.getString(R.string.login_with_a_private_key_to_be_able_to_send_zaps), + Toast.LENGTH_SHORT + ) + .show() } } else if (accountViewModel.account.zapAmountChoices.size == 1) { accountViewModel.zap( @@ -1219,8 +1118,7 @@ private fun zapClick( onZappingProgress(it) } }, - zapType = accountViewModel.account.defaultZapType, - null + zapType = accountViewModel.account.defaultZapType ) } else if (accountViewModel.account.zapAmountChoices.size > 1) { onMultipleChoices() @@ -1543,55 +1441,6 @@ fun ZapAmountChoicePopup( val accountState by accountViewModel.accountLiveData.observeAsState() val account = accountState?.account ?: return val zapMessage = "" - var event by remember { mutableStateOf(null) } - var amount by remember { mutableLongStateOf(0L) } - val activityResult = rememberLauncherForActivityResult( - contract = ActivityResultContracts.StartActivityForResult(), - onResult = { - if (it.resultCode != Activity.RESULT_OK) { - scope.launch(Dispatchers.Main) { - Toast.makeText( - Amethyst.instance, - "Sign request rejected", - Toast.LENGTH_SHORT - ).show() - } - } else { - val json = it.data?.getStringExtra("event") ?: "" - val signedEvent = Event.fromJson(json) as LnZapRequestEvent - if (signedEvent.hasValidSignature()) { - accountViewModel.zap( - baseNote, - amount, - null, - zapMessage, - context, - onError, - onProgress, - account.defaultZapType, - signedEvent - ) - amount = 0 - } - } - AmberUtils.isActivityRunning = false - ServiceManager.shouldPauseService = true - event = null - onDismiss() - } - ) - - LaunchedEffect(event) { - if (event != null) { - AmberUtils.openAmber( - event!!.toJson(), - SignerType.SIGN_EVENT, - activityResult, - "", - event!!.id() - ) - } - } Popup( alignment = Alignment.BottomCenter, @@ -1603,23 +1452,17 @@ fun ZapAmountChoicePopup( Button( modifier = Modifier.padding(horizontal = 3.dp), onClick = { - if (accountViewModel.loggedInWithAmber() && account.defaultZapType != LnZapEvent.ZapType.NONZAP && account.defaultZapType != LnZapEvent.ZapType.ANONYMOUS) { - amount = amountInSats * 1000 - event = account.createZapRequestFor(baseNote, null, zapMessage, account.defaultZapType) - } else { - accountViewModel.zap( - baseNote, - amountInSats * 1000, - null, - zapMessage, - context, - onError, - onProgress, - account.defaultZapType, - null - ) - onDismiss() - } + accountViewModel.zap( + baseNote, + amountInSats * 1000, + null, + zapMessage, + context, + onError, + onProgress, + account.defaultZapType + ) + onDismiss() }, shape = ButtonBorder, colors = ButtonDefaults @@ -1633,23 +1476,17 @@ fun ZapAmountChoicePopup( textAlign = TextAlign.Center, modifier = Modifier.combinedClickable( onClick = { - if (accountViewModel.loggedInWithAmber() && account.defaultZapType != LnZapEvent.ZapType.NONZAP && account.defaultZapType != LnZapEvent.ZapType.ANONYMOUS) { - amount = amountInSats * 1000 - event = account.createZapRequestFor(baseNote, null, zapMessage, account.defaultZapType) - } else { - accountViewModel.zap( - baseNote, - amountInSats * 1000, - null, - zapMessage, - context, - onError, - onProgress, - account.defaultZapType, - null - ) - onDismiss() - } + accountViewModel.zap( + baseNote, + amountInSats * 1000, + null, + zapMessage, + context, + onError, + onProgress, + account.defaultZapType + ) + onDismiss() }, onLongClick = { onChangeAmount() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt index 07031b7fc..196b3d059 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt @@ -1,15 +1,31 @@ package com.vitorpamplona.amethyst.ui.note -import android.app.Activity -import android.widget.Toast -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.* +import androidx.compose.material.AlertDialog +import androidx.compose.material.Button +import androidx.compose.material.ButtonColors +import androidx.compose.material.ButtonDefaults +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.material.TextButton import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Done -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -23,26 +39,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.compose.viewModel -import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.R -import com.vitorpamplona.amethyst.ServiceManager import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.service.AmberUtils import com.vitorpamplona.amethyst.ui.actions.CloseButton -import com.vitorpamplona.amethyst.ui.actions.SignerType import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.TextSpinner import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.placeholderText -import com.vitorpamplona.quartz.events.Event import com.vitorpamplona.quartz.events.LnZapEvent -import com.vitorpamplona.quartz.events.LnZapRequestEvent import kotlinx.collections.immutable.toImmutableList -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch class ZapOptionstViewModel : ViewModel() { private var account: Account? = null @@ -96,55 +103,6 @@ fun ZapCustomDialog( val zapOptionExplainers = remember { zapTypes.map { it.third }.toImmutableList() } var selectedZapType by remember(accountViewModel) { mutableStateOf(accountViewModel.account.defaultZapType) } - val event = remember { mutableStateOf(null) } - val activityResult = rememberLauncherForActivityResult( - contract = ActivityResultContracts.StartActivityForResult(), - onResult = { - if (it.resultCode != Activity.RESULT_OK) { - postViewModel.viewModelScope.launch(Dispatchers.Main) { - Toast.makeText( - Amethyst.instance, - "Sign request rejected", - Toast.LENGTH_SHORT - ).show() - } - event.value = null - } else { - val json = it.data?.getStringExtra("event") ?: "" - val signedEvent = Event.fromJson(json) as LnZapRequestEvent - if (signedEvent.hasValidSignature()) { - accountViewModel.zap( - baseNote, - postViewModel.value()!! * 1000L, - null, - postViewModel.customMessage.text, - context, - onError, - onProgress, - selectedZapType, - signedEvent - ) - event.value = null - onClose() - } - } - AmberUtils.isActivityRunning = false - ServiceManager.shouldPauseService = true - } - ) - - LaunchedEffect(event.value) { - if (event.value != null) { - AmberUtils.openAmber( - event.value!!.toJson(), - SignerType.SIGN_EVENT, - activityResult, - "", - event.value!!.id() - ) - } - } - Dialog( onDismissRequest = { onClose() }, properties = DialogProperties( @@ -167,22 +125,16 @@ fun ZapCustomDialog( ZapButton( isActive = postViewModel.canSend() ) { - if (accountViewModel.loggedInWithAmber() && selectedZapType != LnZapEvent.ZapType.ANONYMOUS && selectedZapType != LnZapEvent.ZapType.PUBLIC) { - event.value = accountViewModel.account.createZapRequestFor(baseNote, null, postViewModel.customMessage.text, selectedZapType) - } else { - accountViewModel.zap( - baseNote, - postViewModel.value()!! * 1000L, - null, - postViewModel.customMessage.text, - context, - onError = onError, - onProgress = onProgress, - zapType = selectedZapType, - null - ) - onClose() - } + accountViewModel.zap( + baseNote, + postViewModel.value()!! * 1000L, + null, + postViewModel.customMessage.text, + context, + onError = onError, + onProgress = onProgress, + zapType = selectedZapType + ) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index 59a20221e..879a3a337 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -225,11 +225,10 @@ class AccountViewModel(val account: Account) : ViewModel() { context: Context, onError: (String) -> Unit, onProgress: (percent: Float) -> Unit, - zapType: LnZapEvent.ZapType, - zapRequest: LnZapRequestEvent? + zapType: LnZapEvent.ZapType ) { viewModelScope.launch(Dispatchers.IO) { - innerZap(note, amount, pollOption, message, context, onError, onProgress, zapType, zapRequest) + innerZap(note, amount, pollOption, message, context, onError, onProgress, zapType) } } @@ -241,8 +240,7 @@ class AccountViewModel(val account: Account) : ViewModel() { context: Context, onError: (String) -> Unit, onProgress: (percent: Float) -> Unit, - zapType: LnZapEvent.ZapType, - zapRequest: LnZapRequestEvent? + zapType: LnZapEvent.ZapType ) { val lud16 = note.event?.zapAddress() ?: note.author?.info?.lud16?.trim() ?: note.author?.info?.lud06?.trim() @@ -253,13 +251,9 @@ class AccountViewModel(val account: Account) : ViewModel() { var zapRequestJson = "" if (zapType != LnZapEvent.ZapType.NONZAP) { - if (zapRequest != null) { - zapRequestJson = zapRequest.toJson() - } else { - val localZapRequest = account.createZapRequestFor(note, pollOption, message, zapType) - if (localZapRequest != null) { - zapRequestJson = localZapRequest.toJson() - } + val localZapRequest = account.createZapRequestFor(note, pollOption, message, zapType) + if (localZapRequest != null) { + zapRequestJson = localZapRequest.toJson() } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/LnZapRequestEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/LnZapRequestEvent.kt index 974c37183..4c87a3803 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/LnZapRequestEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/LnZapRequestEvent.kt @@ -99,6 +99,13 @@ class LnZapRequestEvent( return LnZapRequestEvent(id.toHexKey(), pubKey, createdAt, tags, content, sig.toHexKey()) } + fun create( + unsignedEvent: LnZapRequestEvent, + signature: String + ): LnZapRequestEvent { + return LnZapRequestEvent(unsignedEvent.id, unsignedEvent.pubKey, unsignedEvent.createdAt, unsignedEvent.tags, unsignedEvent.content, signature) + } + fun createPublic( originalNote: EventInterface, relays: Set, @@ -146,7 +153,7 @@ class LnZapRequestEvent( tags = tags + listOf(listOf("anon", "")) - return LnZapRequestEvent("", pubKey, createdAt, tags, content, "") + return LnZapRequestEvent("zap", pubKey, createdAt, tags, content, "") } fun createAnonymous(