From 734dd2e119cc60c968085220040c572efdc93e3d Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 2 Sep 2023 12:27:24 -0400 Subject: [PATCH] Adds UI Feedback for Custom Zaps --- .../amethyst/ui/note/ReactionsRow.kt | 22 +++++++++++++-- .../amethyst/ui/note/UpdateZapAmountDialog.kt | 6 ++++- .../amethyst/ui/note/ZapCustomDialog.kt | 27 +++++++------------ 3 files changed, 34 insertions(+), 21 deletions(-) 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 454aedf00..6b3c2078a 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 @@ -989,11 +989,29 @@ fun ZapReaction( } if (wantsToChangeZapAmount) { - UpdateZapAmountDialog({ wantsToChangeZapAmount = false }, accountViewModel = accountViewModel) + UpdateZapAmountDialog( + onClose = { wantsToChangeZapAmount = false }, + accountViewModel = accountViewModel + ) } if (wantsToSetCustomZap) { - ZapCustomDialog({ wantsToSetCustomZap = false }, accountViewModel, baseNote) + ZapCustomDialog( + onClose = { wantsToSetCustomZap = false }, + onError = { + scope.launch { + zappingProgress = 0f + showErrorMessageDialog = it + } + }, + onProgress = { + scope.launch(Dispatchers.Main) { + zappingProgress = it + } + }, + accountViewModel = accountViewModel, + baseNote = baseNote + ) } if (zappingProgress > 0.00001 && zappingProgress < 0.99999) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt index e988207a4..d267dcf33 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UpdateZapAmountDialog.kt @@ -197,7 +197,11 @@ class UpdateZapAmountViewModel(val account: Account) : ViewModel() { @OptIn(ExperimentalLayoutApi::class) @Composable -fun UpdateZapAmountDialog(onClose: () -> Unit, nip47uri: String? = null, accountViewModel: AccountViewModel) { +fun UpdateZapAmountDialog( + onClose: () -> Unit, + nip47uri: String? = null, + accountViewModel: AccountViewModel +) { val context = LocalContext.current val scope = rememberCoroutineScope() 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 591553867..828182dac 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,6 +1,5 @@ package com.vitorpamplona.amethyst.ui.note -import android.widget.Toast import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.* @@ -31,8 +30,6 @@ import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.events.LnZapEvent import kotlinx.collections.immutable.toImmutableList -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch class ZapOptionstViewModel : ViewModel() { private var account: Account? = null @@ -61,17 +58,20 @@ class ZapOptionstViewModel : ViewModel() { } @Composable -fun ZapCustomDialog(onClose: () -> Unit, accountViewModel: AccountViewModel, baseNote: Note) { +fun ZapCustomDialog( + onClose: () -> Unit, + onError: (text: String) -> Unit, + onProgress: (percent: Float) -> Unit, + accountViewModel: AccountViewModel, + baseNote: Note +) { val context = LocalContext.current - val scope = rememberCoroutineScope() val postViewModel: ZapOptionstViewModel = viewModel() LaunchedEffect(accountViewModel) { postViewModel.load(accountViewModel.account) } - var zappingProgress by remember { mutableStateOf(0f) } - val zapTypes = listOf( Triple(LnZapEvent.ZapType.PUBLIC, stringResource(id = R.string.zap_type_public), stringResource(id = R.string.zap_type_public_explainer)), Triple(LnZapEvent.ZapType.PRIVATE, stringResource(id = R.string.zap_type_private), stringResource(id = R.string.zap_type_private_explainer)), @@ -111,17 +111,8 @@ fun ZapCustomDialog(onClose: () -> Unit, accountViewModel: AccountViewModel, bas null, postViewModel.customMessage.text, context, - onError = { - zappingProgress = 0f - scope.launch { - Toast.makeText(context, it, Toast.LENGTH_SHORT).show() - } - }, - onProgress = { - scope.launch(Dispatchers.Main) { - zappingProgress = it - } - }, + onError = onError, + onProgress = onProgress, zapType = selectedZapType ) onClose()