From 374c4d00aeb536038007365bd0818044d9e494a3 Mon Sep 17 00:00:00 2001 From: Meng Date: Wed, 30 Apr 2025 07:37:58 +0800 Subject: [PATCH 1/2] fix: child accout cache issue --- .../wallet/manager/childaccount/ChildAccountList.kt | 12 +++++------- .../wallet/page/nft/move/MoveNFTDialog.kt | 10 +++++----- gradle.properties | 4 ++-- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/flowfoundation/wallet/manager/childaccount/ChildAccountList.kt b/app/src/main/java/com/flowfoundation/wallet/manager/childaccount/ChildAccountList.kt index db87c2e94..cbb9c63e4 100644 --- a/app/src/main/java/com/flowfoundation/wallet/manager/childaccount/ChildAccountList.kt +++ b/app/src/main/java/com/flowfoundation/wallet/manager/childaccount/ChildAccountList.kt @@ -34,8 +34,7 @@ class ChildAccountList( } else { localAccount.pinTime = System.currentTimeMillis() } - - cache().cache(ChildAccountCache().apply { addAll(accountList) }) + cache().cache(ArrayList(accountList)) } fun refresh() { @@ -45,7 +44,7 @@ class ChildAccountList( accounts.forEach { account -> account.pinTime = (oldAccounts.firstOrNull { it.address == account.address }?.pinTime ?: 0) } accountList.clear() accountList.addAll(accounts) - cache().cache(ChildAccountCache().apply { addAll(accountList) }) + cache().cache(ArrayList(accountList)) dispatchAccountUpdateListener(address, accountList.toList()) logd(TAG, "refresh: $address, ${accountList.size}") @@ -62,10 +61,11 @@ class ChildAccountList( return result?.encode()?.parseAccountMetas() } - private fun cache(): CacheManager { + private fun cache(): CacheManager> { + @Suppress("UNCHECKED_CAST") return CacheManager( "${address}.child_account_list".cacheFile(), - ChildAccountCache::class.java, + ArrayList::class.java as Class>, ) } @@ -101,5 +101,3 @@ data class ChildAccount( @SerializedName("description") val description: String? = null, ) : Parcelable - -private class ChildAccountCache : ArrayList() \ No newline at end of file diff --git a/app/src/main/java/com/flowfoundation/wallet/page/nft/move/MoveNFTDialog.kt b/app/src/main/java/com/flowfoundation/wallet/page/nft/move/MoveNFTDialog.kt index a16f5d9b3..48f7ef0bb 100644 --- a/app/src/main/java/com/flowfoundation/wallet/page/nft/move/MoveNFTDialog.kt +++ b/app/src/main/java/com/flowfoundation/wallet/page/nft/move/MoveNFTDialog.kt @@ -123,11 +123,11 @@ class MoveNFTDialog : BottomSheetDialogFragment() { addressList.add(0, evmAddress) needMoveFee = true layoutToAccount.setAccountInfo(evmAddress) - - } else { - val childAccount = WalletManager.childAccount(addressList[0]) ?: return@with - needMoveFee = false - layoutToAccount.setAccountInfo(childAccount.address) + } else if (addressList.isNotEmpty()) { + WalletManager.childAccount(addressList[0])?.let { child -> + needMoveFee = false + layoutToAccount.setAccountInfo(child.address) + } } configureToLayoutAction(addressList) } diff --git a/gradle.properties b/gradle.properties index 5398cd776..73625f18c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,5 +23,5 @@ android.injected.testOnly=false android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false -vCode=271 -vName=r2.8.3 +vCode=275 +vName=r2.8.4 From 8911334aa8bb34127ceee66132c14d14fa4bcdd4 Mon Sep 17 00:00:00 2001 From: Meng Date: Wed, 30 Apr 2025 07:46:39 +0800 Subject: [PATCH 2/2] fix: arithmetic exception --- .../subpage/amount/presenter/SendAmountPresenter.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/flowfoundation/wallet/page/send/transaction/subpage/amount/presenter/SendAmountPresenter.kt b/app/src/main/java/com/flowfoundation/wallet/page/send/transaction/subpage/amount/presenter/SendAmountPresenter.kt index a74ba7877..da162729f 100644 --- a/app/src/main/java/com/flowfoundation/wallet/page/send/transaction/subpage/amount/presenter/SendAmountPresenter.kt +++ b/app/src/main/java/com/flowfoundation/wallet/page/send/transaction/subpage/amount/presenter/SendAmountPresenter.kt @@ -258,8 +258,9 @@ class SendAmountPresenter( private fun getAmountConvert(): String { val amount = binding.transferAmountInput.text.ifBlank { "0" }.toString().toSafeDecimal() val rate = (balance()?.coinRate ?: BigDecimal.ZERO) * CurrencyManager.currencyDecimalPrice() - val convert = - if (viewModel.convertCoin() == selectedCurrency().flag) amount * rate else amount / rate + val convert = if (viewModel.convertCoin() == selectedCurrency().flag) amount * rate else { + if (rate <= BigDecimal.ZERO) BigDecimal.ZERO else amount / rate + } return convert.format() }