From 339b2eed608954c30da90d76d0cd4daf615e9f75 Mon Sep 17 00:00:00 2001 From: Vexta Project Date: Fri, 14 Aug 2026 21:04:20 +0000 Subject: [PATCH] Release Vexta Wallet v0.6.2 --- app/build.gradle.kts | 4 +- .../org/vextaproject/wallet/WalletActivity.kt | 67 ++++++++++++------- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 876047d..1aba823 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,8 +22,8 @@ android { applicationId = "org.vextaproject.wallet" minSdk = 26 targetSdk = 36 - versionCode = 31 - versionName = "0.6.1" + versionCode = 32 + versionName = "0.6.2" } signingConfigs { diff --git a/app/src/main/java/org/vextaproject/wallet/WalletActivity.kt b/app/src/main/java/org/vextaproject/wallet/WalletActivity.kt index 49c8455..6801fd3 100644 --- a/app/src/main/java/org/vextaproject/wallet/WalletActivity.kt +++ b/app/src/main/java/org/vextaproject/wallet/WalletActivity.kt @@ -89,6 +89,10 @@ class WalletActivity : FragmentActivity() { "last_confirmed_balance" private const val PREF_BALANCE_INITIALIZED = "balance_notification_initialized" + private const val PREF_KNOWN_INCOMING_TXIDS = + "known_incoming_txids" + private const val PREF_TX_NOTIFICATIONS_INITIALIZED = + "tx_notifications_initialized" private const val PREF_RECEIVE_ADDRESS_INDEX = "receive_address_index" private const val PREF_RESTORE_ADDRESS_DISCOVERY = @@ -429,41 +433,56 @@ class WalletActivity : FragmentActivity() { } } - private fun updateBalanceAndNotify( - confirmedBalanceSatoshis: Long + private fun updateIncomingTransactionsAndNotify( + transactions: List ) { val preferences = getSharedPreferences(PREFS, Context.MODE_PRIVATE) + val incoming = + transactions.filter { it.netSatoshis > 0L } + + val currentTxids = + incoming.map { it.txid }.toSet() + val initialized = preferences.getBoolean( - PREF_BALANCE_INITIALIZED, + PREF_TX_NOTIFICATIONS_INITIALIZED, false ) - val previousBalance = preferences.getLong( - PREF_LAST_CONFIRMED_BALANCE, - confirmedBalanceSatoshis - ) - - preferences.edit() - .putBoolean(PREF_BALANCE_INITIALIZED, true) - .putLong( - PREF_LAST_CONFIRMED_BALANCE, - confirmedBalanceSatoshis - ) - .apply() - - if ( - !initialized || - confirmedBalanceSatoshis <= previousBalance - ) { + if (!initialized) { + preferences.edit() + .putBoolean(PREF_TX_NOTIFICATIONS_INITIALIZED, true) + .putStringSet( + PREF_KNOWN_INCOMING_TXIDS, + currentTxids + ) + .apply() return } - val receivedSatoshis = - confirmedBalanceSatoshis - previousBalance + val knownTxids = + preferences.getStringSet( + PREF_KNOWN_INCOMING_TXIDS, + emptySet() + )?.toMutableSet() ?: mutableSetOf() - showIncomingPaymentNotification(receivedSatoshis) + incoming + .filter { it.txid !in knownTxids } + .sortedBy { it.height } + .forEach { transaction -> + showIncomingPaymentNotification( + transaction.netSatoshis + ) + knownTxids.add(transaction.txid) + } + + preferences.edit() + .putStringSet( + PREF_KNOWN_INCOMING_TXIDS, + knownTxids + ) + .apply() } private fun showIncomingPaymentNotification( @@ -1025,7 +1044,7 @@ class WalletActivity : FragmentActivity() { 100_000_000.0 ) - updateBalanceAndNotify(balanceSatoshis) + updateIncomingTransactionsAndNotify(mergedTransactions) if (restoreAddressDiscovery) { setCurrentReceiveAddressIndex(