[#1434] Improve Shielding UX
* [#1434] Improve Shielding UX - Closes #1434 - Changelog update * Trigger balances refresh after sending too
This commit is contained in:
parent
6160554d64
commit
5c21a776d5
|
@ -22,6 +22,7 @@ directly impact users rather than highlighting other key architectural updates.*
|
||||||
design
|
design
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- Transparent funds shielding action has been improved to address the latest user feedback
|
||||||
- A few more minor UI improvements
|
- A few more minor UI improvements
|
||||||
|
|
||||||
## [1.0 (638)] - 2024-04-26
|
## [1.0 (638)] - 2024-04-26
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
package co.electriccoin.zcash.ui.screen.balances
|
package co.electriccoin.zcash.ui.screen.balances
|
||||||
|
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
@ -113,6 +114,11 @@ internal fun WrapBalances(
|
||||||
|
|
||||||
val (isShowingErrorDialog, setShowErrorDialog) = rememberSaveable { mutableStateOf(false) }
|
val (isShowingErrorDialog, setShowErrorDialog) = rememberSaveable { mutableStateOf(false) }
|
||||||
|
|
||||||
|
fun showShieldingSuccess() {
|
||||||
|
setShieldState(ShieldState.Shielded)
|
||||||
|
Toast.makeText(context, context.getString(R.string.balances_shielding_successful), Toast.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun showShieldingError(errorMessage: String?) {
|
suspend fun showShieldingError(errorMessage: String?) {
|
||||||
Twig.error { "Shielding proposal failed with: $errorMessage" }
|
Twig.error { "Shielding proposal failed with: $errorMessage" }
|
||||||
|
|
||||||
|
@ -167,16 +173,18 @@ internal fun WrapBalances(
|
||||||
spendingKey = spendingKey,
|
spendingKey = spendingKey,
|
||||||
proposal = newProposal
|
proposal = newProposal
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Triggering the transaction history and balances refresh to be notified immediately
|
||||||
|
// about the wallet's updated state
|
||||||
|
(synchronizer as SdkSynchronizer).run {
|
||||||
|
refreshTransactions()
|
||||||
|
refreshAllBalances()
|
||||||
|
}
|
||||||
|
|
||||||
when (result) {
|
when (result) {
|
||||||
SubmitResult.Success -> {
|
SubmitResult.Success -> {
|
||||||
Twig.info { "Shielding transaction done successfully" }
|
Twig.info { "Shielding transaction done successfully" }
|
||||||
setShieldState(ShieldState.Shielded)
|
showShieldingSuccess()
|
||||||
// Triggering transaction history refresh to be notified about the newly created
|
|
||||||
// transaction asap
|
|
||||||
(synchronizer as SdkSynchronizer).refreshTransactions()
|
|
||||||
|
|
||||||
// We could consider notifying UI with a change to emphasize the shielding action
|
|
||||||
// was successful, or we could switch the selected tab to Account
|
|
||||||
}
|
}
|
||||||
is SubmitResult.SimpleTrxFailure -> {
|
is SubmitResult.SimpleTrxFailure -> {
|
||||||
Twig.warn { "Shielding transaction failed" }
|
Twig.warn { "Shielding transaction failed" }
|
||||||
|
@ -205,15 +213,9 @@ fun updateTransparentBalanceState(
|
||||||
walletSnapshot: WalletSnapshot?
|
walletSnapshot: WalletSnapshot?
|
||||||
): ShieldState {
|
): ShieldState {
|
||||||
return when {
|
return when {
|
||||||
(walletSnapshot == null) -> {
|
(walletSnapshot == null) -> currentShieldState
|
||||||
currentShieldState
|
(walletSnapshot.transparentBalance >= Zatoshi(DEFAULT_SHIELDING_THRESHOLD) && currentShieldState.isEnabled()) ->
|
||||||
}
|
ShieldState.Available
|
||||||
(
|
else -> currentShieldState
|
||||||
walletSnapshot.transparentBalance >= Zatoshi(DEFAULT_SHIELDING_THRESHOLD) &&
|
|
||||||
currentShieldState.isEnabled()
|
|
||||||
) -> ShieldState.Available
|
|
||||||
else -> {
|
|
||||||
currentShieldState
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ internal fun MainActivity.WrapSendConfirmation(
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@Composable
|
@Composable
|
||||||
@Suppress("LongParameterList", "LongMethod")
|
@Suppress("LongParameterList", "LongMethod", "CyclomaticComplexMethod")
|
||||||
internal fun WrapSendConfirmation(
|
internal fun WrapSendConfirmation(
|
||||||
activity: ComponentActivity,
|
activity: ComponentActivity,
|
||||||
arguments: SendConfirmationArguments,
|
arguments: SendConfirmationArguments,
|
||||||
|
@ -182,12 +182,17 @@ internal fun WrapSendConfirmation(
|
||||||
spendingKey = spendingKey,
|
spendingKey = spendingKey,
|
||||||
proposal = newZecSend.proposal!!
|
proposal = newZecSend.proposal!!
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Triggering the transaction history and balances refresh to be notified immediately
|
||||||
|
// about the wallet's updated state
|
||||||
|
(synchronizer as SdkSynchronizer).run {
|
||||||
|
refreshTransactions()
|
||||||
|
refreshAllBalances()
|
||||||
|
}
|
||||||
|
|
||||||
when (result) {
|
when (result) {
|
||||||
SubmitResult.Success -> {
|
SubmitResult.Success -> {
|
||||||
setStage(SendConfirmationStage.Confirmation)
|
setStage(SendConfirmationStage.Confirmation)
|
||||||
// Triggering transaction history refreshing to be notified about the newly created
|
|
||||||
// transaction asap
|
|
||||||
(synchronizer as SdkSynchronizer).refreshTransactions()
|
|
||||||
goHome()
|
goHome()
|
||||||
}
|
}
|
||||||
is SubmitResult.SimpleTrxFailure -> {
|
is SubmitResult.SimpleTrxFailure -> {
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
<string name="balances_status_detailed_stopped">Synchronizer stopped</string>
|
<string name="balances_status_detailed_stopped">Synchronizer stopped</string>
|
||||||
<string name="balances_status_restoring_text">The restore process can take several hours on lower-powered devices, and even on powerful devices is likely to take more than an hour.</string>
|
<string name="balances_status_restoring_text">The restore process can take several hours on lower-powered devices, and even on powerful devices is likely to take more than an hour.</string>
|
||||||
|
|
||||||
|
<string name="balances_shielding_successful">Shielding has been successfully submitted</string>
|
||||||
|
|
||||||
<string name="balances_shielding_dialog_error_title">Failed to shield funds</string>
|
<string name="balances_shielding_dialog_error_title">Failed to shield funds</string>
|
||||||
<string name="balances_shielding_dialog_error_text">Error: The attempt to shield the transparent funds failed. Try it again, please.</string>
|
<string name="balances_shielding_dialog_error_text">Error: The attempt to shield the transparent funds failed. Try it again, please.</string>
|
||||||
<string name="balances_shielding_dialog_error_btn">OK</string>
|
<string name="balances_shielding_dialog_error_btn">OK</string>
|
||||||
|
|
Loading…
Reference in New Issue