From 5d59f4efa1f2f75982084290e47d865ee7537c5c Mon Sep 17 00:00:00 2001 From: "ingvar.skogen" Date: Fri, 23 Feb 2024 12:48:05 +0100 Subject: [PATCH 1/2] Add the Parcelize plugin --- app/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/app/build.gradle b/app/build.gradle index 8e9f615bb..7d1977c91 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,6 +6,7 @@ apply plugin: "kotlin-android" apply plugin: "kotlin-kapt" apply from: "../download-libwallet.gradle" apply plugin: "io.sentry.android.gradle" +apply plugin: "kotlin-parcelize" android { namespace "com.tari.android.wallet" From fa3382f2bb9eeacf2eceeb85a4cb5a04cdc41d90 Mon Sep 17 00:00:00 2001 From: "ingvar.skogen" Date: Fri, 23 Feb 2024 12:51:02 +0100 Subject: [PATCH 2/2] Change the calculation of the available to spend amount --- .../wallet/extension/NumericExtensions.kt | 13 ++-- .../tari/android/wallet/model/BalanceInfo.kt | 74 ++++--------------- .../send/addAmount/AddAmountFragment.kt | 4 +- .../wallet/ui/fragment/tx/HomeFragment.kt | 2 +- .../BalanceViewController.kt | 4 +- 5 files changed, 26 insertions(+), 71 deletions(-) diff --git a/app/src/main/java/com/tari/android/wallet/extension/NumericExtensions.kt b/app/src/main/java/com/tari/android/wallet/extension/NumericExtensions.kt index 5f0e29894..e02141382 100644 --- a/app/src/main/java/com/tari/android/wallet/extension/NumericExtensions.kt +++ b/app/src/main/java/com/tari/android/wallet/extension/NumericExtensions.kt @@ -47,13 +47,14 @@ fun Float.remap(from1: Float, to1: Float, from2: Float, to2: Float): Float { /** * Int to MicroTari. */ -fun Int.toMicroTari(): MicroTari { - return MicroTari(BigInteger.valueOf(this.toLong())) -} +fun Int.toMicroTari() = BigInteger.valueOf(this.toLong()).toMicroTari() /** * Long to MicroTari. */ -fun Long.toMicroTari(): MicroTari { - return MicroTari(BigInteger.valueOf(this)) -} \ No newline at end of file +fun Long.toMicroTari() = BigInteger.valueOf(this).toMicroTari() + +/** + * BigInteger to MicroTari. + */ +fun BigInteger.toMicroTari() = MicroTari(this) \ No newline at end of file diff --git a/app/src/main/java/com/tari/android/wallet/model/BalanceInfo.kt b/app/src/main/java/com/tari/android/wallet/model/BalanceInfo.kt index 07d7ec822..dc2f0b506 100644 --- a/app/src/main/java/com/tari/android/wallet/model/BalanceInfo.kt +++ b/app/src/main/java/com/tari/android/wallet/model/BalanceInfo.kt @@ -32,71 +32,25 @@ */ package com.tari.android.wallet.model -import android.os.Parcel import android.os.Parcelable -import com.tari.android.wallet.ui.extension.readP -import java.math.BigInteger +import com.tari.android.wallet.extension.toMicroTari +import kotlinx.parcelize.Parcelize /** * Wallet balance info. * * @author The Tari Development Team */ -class BalanceInfo() : Parcelable { - - var availableBalance = MicroTari(BigInteger("0")) - var pendingIncomingBalance = MicroTari(BigInteger("0")) - var pendingOutgoingBalance = MicroTari(BigInteger("0")) - var timeLocked = MicroTari(BigInteger("0")) - - constructor( - availableBalance: MicroTari, - pendingIncomingBalance: MicroTari, - pendingOutgoingBalance: MicroTari, - timeLocked: MicroTari, - ) : this() { - this.availableBalance = availableBalance - this.pendingIncomingBalance = pendingIncomingBalance - this.pendingOutgoingBalance = pendingOutgoingBalance - this.timeLocked = timeLocked - } - - // region Parcelable - - constructor(parcel: Parcel) : this() { - readFromParcel(parcel) - } - - companion object CREATOR : Parcelable.Creator { - - override fun createFromParcel(parcel: Parcel): BalanceInfo { - return BalanceInfo(parcel) - } - - override fun newArray(size: Int): Array { - return Array(size) { BalanceInfo() } - } - - } - - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeParcelable(availableBalance, flags) - parcel.writeParcelable(pendingIncomingBalance, flags) - parcel.writeParcelable(pendingOutgoingBalance, flags) - parcel.writeParcelable(timeLocked, flags) - } - - private fun readFromParcel(inParcel: Parcel) { - availableBalance = inParcel.readP(MicroTari::class.java) - pendingIncomingBalance = inParcel.readP(MicroTari::class.java) - pendingOutgoingBalance = inParcel.readP(MicroTari::class.java) - timeLocked = inParcel.readP(MicroTari::class.java) - } - - override fun describeContents(): Int { - return 0 - } - - // endregion - +@Parcelize +data class BalanceInfo( + val availableBalance: MicroTari = 0.toMicroTari(), + val pendingIncomingBalance: MicroTari = 0.toMicroTari(), + val pendingOutgoingBalance: MicroTari = 0.toMicroTari(), + val timeLockedBalance: MicroTari = 0.toMicroTari(), +) : Parcelable { + val totalBalance: MicroTari + get() = availableBalance + pendingIncomingBalance + + val availableToSpendBalance: MicroTari + get() = availableBalance - timeLockedBalance } \ No newline at end of file diff --git a/app/src/main/java/com/tari/android/wallet/ui/fragment/send/addAmount/AddAmountFragment.kt b/app/src/main/java/com/tari/android/wallet/ui/fragment/send/addAmount/AddAmountFragment.kt index 77dc17b4e..895aa8974 100644 --- a/app/src/main/java/com/tari/android/wallet/ui/fragment/send/addAmount/AddAmountFragment.kt +++ b/app/src/main/java/com/tari/android/wallet/ui/fragment/send/addAmount/AddAmountFragment.kt @@ -228,7 +228,7 @@ class AddAmountFragment : CommonFragment balanceInfo.availableBalance && !DebugConfig.mockedDataEnabled) { + if (amount > balanceInfo.availableToSpendBalance && !DebugConfig.mockedDataEnabled) { lifecycleScope.launch(Dispatchers.Main) { actualBalanceExceeded() } @@ -256,7 +256,7 @@ class AddAmountFragment : CommonFragment wallet.getBalanceInfo(error) } - availableBalance = balanceInfo.availableBalance + availableBalance = balanceInfo.availableToSpendBalance ui.availableBalanceContainerView.setupArgs(availableBalance) } diff --git a/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/HomeFragment.kt b/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/HomeFragment.kt index 7b93dc863..647689fd7 100644 --- a/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/HomeFragment.kt +++ b/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/HomeFragment.kt @@ -187,7 +187,7 @@ class HomeFragment : CommonFragment( private fun updateBalanceInfoUI(restart: Boolean) { val balanceInfo = viewModel.balanceInfo.value!! - val availableBalance = WalletUtil.balanceFormatter.format(balanceInfo.availableBalance.tariValue) + val availableBalance = WalletUtil.balanceFormatter.format(balanceInfo.availableToSpendBalance.tariValue) ui.availableBalance.text = availableBalance if (restart) { diff --git a/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/ui/balanceController/BalanceViewController.kt b/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/ui/balanceController/BalanceViewController.kt index 1f5a723f3..bf7f381c2 100644 --- a/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/ui/balanceController/BalanceViewController.kt +++ b/app/src/main/java/com/tari/android/wallet/ui/fragment/tx/ui/balanceController/BalanceViewController.kt @@ -59,7 +59,7 @@ class BalanceViewController( private val delayByIndex: Long = 80L init { - val balance = _balanceInfo.availableBalance + _balanceInfo.pendingIncomingBalance + val balance = _balanceInfo.totalBalance formattedBalance = WalletUtil.balanceFormatter.format(balance.tariValue) // decimal tens viewHolders.add(DecimalDigitViewHolder(context, formattedBalance[formattedBalance.length - 1].toString().toInt())) @@ -94,7 +94,7 @@ class BalanceViewController( set(value) { /* execute setter logic */ _balanceInfo = value - val balance = _balanceInfo.availableBalance + _balanceInfo.pendingIncomingBalance + val balance = _balanceInfo.totalBalance formattedBalance = WalletUtil.balanceFormatter.format(balance.tariValue) val sizeDiff = formattedBalance.length - viewHolders.size if (sizeDiff <= 0) {