From a344a1d1a8eb9ed0638bc295b1c8b867f942fb1d Mon Sep 17 00:00:00 2001 From: kcw-grunt Date: Mon, 1 Jun 2026 16:46:18 +0100 Subject: [PATCH 1/3] Update bw-gdlib moved to the proper module --- .gitmodules | 3 +++ modules/bw-gdlib | 1 + 2 files changed, 4 insertions(+) create mode 160000 modules/bw-gdlib diff --git a/.gitmodules b/.gitmodules index b9973416..d8df3607 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "android-build-logic"] path = android-build-logic url = https://github.com/gruntsoftware/android-build-logic.git +[submodule "modules/bw-gdlib"] + path = modules/bw-gdlib + url = https://github.com/gruntsoftware/bw-gdlib.git diff --git a/modules/bw-gdlib b/modules/bw-gdlib new file mode 160000 index 00000000..f3e537be --- /dev/null +++ b/modules/bw-gdlib @@ -0,0 +1 @@ +Subproject commit f3e537be2877ece407e41771ac73215b57fad935 From ce141866ef19983ac10edc5d701a66a4a0b849cb Mon Sep 17 00:00:00 2001 From: kcw-grunt Date: Sat, 6 Jun 2026 08:24:59 +0100 Subject: [PATCH 2/3] Updated the core from PeerManager --- app/src/main/jni/core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/jni/core b/app/src/main/jni/core index fcbf4ae6..4c903166 160000 --- a/app/src/main/jni/core +++ b/app/src/main/jni/core @@ -1 +1 @@ -Subproject commit fcbf4ae60b770463a2a4c2d8b585cb3b498f25c0 +Subproject commit 4c90316690ce613482649ccd8b07583749a72266 From 0db6bb4e01b142217e86ed290c7e088a6b30f76a Mon Sep 17 00:00:00 2001 From: kcw-grunt Date: Sat, 6 Jun 2026 18:52:03 +0100 Subject: [PATCH 3/3] Fixed the negative value Added the sound --- .../balancebento/BalanceBentoScreen.kt | 2 + .../ui/screens/main/MainScreenState.kt | 2 +- .../ui/screens/main/MainViewModel.kt | 37 ++++++++++++------ .../res/raw/boingspringmouthharp042013.mp3 | Bin 0 -> 7988 bytes 4 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 app/src/main/res/raw/boingspringmouthharp042013.mp3 diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/balancebento/BalanceBentoScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/balancebento/BalanceBentoScreen.kt index 123ad7eb..dbc05bb8 100644 --- a/app/src/main/java/com/brainwallet/ui/bentosections/balancebento/BalanceBentoScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/bentosections/balancebento/BalanceBentoScreen.kt @@ -111,6 +111,7 @@ fun BalanceBentoScreen( val context = LocalContext.current val infiniteTransition = rememberInfiniteTransition() var previousBalance by remember { mutableStateOf(BigDecimal.ZERO) } + val boingAudioPlayer = remember { MediaPlayer.create(context, R.raw.boingspringmouthharp042013) } val throbOpacity by infiniteTransition.animateFloat( initialValue = 0.5f, @@ -180,6 +181,7 @@ fun BalanceBentoScreen( indication = null ) { isSwapped = !isSwapped + boingAudioPlayer.start() AnalyticsManager.logCustomEventWithParams("did_toggle_fiat_ltc", null) } ) { diff --git a/app/src/main/java/com/brainwallet/ui/screens/main/MainScreenState.kt b/app/src/main/java/com/brainwallet/ui/screens/main/MainScreenState.kt index b0f2a49c..3ccdc304 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/main/MainScreenState.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/main/MainScreenState.kt @@ -36,7 +36,7 @@ data class MainScreenState( val selectedCurrency: CurrencyEntity = CurrencyEntity( "USD", "US Dollar", - -1f, + 0f, "$" ), val isInternetReachable: Boolean = true, diff --git a/app/src/main/java/com/brainwallet/ui/screens/main/MainViewModel.kt b/app/src/main/java/com/brainwallet/ui/screens/main/MainViewModel.kt index e0dc6ba0..8d1d092a 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/main/MainViewModel.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/main/MainViewModel.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.viewModelScope import com.brainwallet.R import com.brainwallet.constants.BWConstants import com.brainwallet.data.model.AppSetting +import com.brainwallet.data.model.CurrencyEntity import com.brainwallet.data.model.GlobalCurrency import com.brainwallet.data.model.GlobalCurrency.entries import com.brainwallet.data.repository.ConnectivityRepository @@ -25,7 +26,6 @@ import com.brainwallet.util.CurrencyDataGetter import com.brainwallet.util.VersionCodeProvider import com.brainwallet.wallet.BRPeerManager import com.brainwallet.wallet.BRWalletManager -import com.google.firebase.crashlytics.FirebaseCrashlytics import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers @@ -97,18 +97,23 @@ class MainViewModel( viewModelScope.launch { ltcRepository.rates .combine(appSetting) { currencies, setting -> - currencies.firstOrNull { it.code == setting.currency.code } + currencies.firstOrNull { + it.code == setting.currency.code && it.symbol == setting.currency.symbol + } } .filterNotNull() .collect { selectedCurrency -> - val msg = String.format("selectedCurrency — Name: %s", selectedCurrency.name) - Timber.d("ISO: %s", msg) - FirebaseCrashlytics.getInstance().log(msg) _state.update { it.copy( fiatSymbol = selectedCurrency.symbol, fiatiSOCode = selectedCurrency.code, fiatRate = BigDecimal(selectedCurrency.rate.toDouble()), + selectedCurrency = CurrencyEntity( + code = selectedCurrency.code, + name = selectedCurrency.name, + rate = selectedCurrency.rate, + symbol = selectedCurrency.symbol, + ), ) } } @@ -180,12 +185,16 @@ class MainViewModel( } if (isWalletCreated()) { addObservers() - val balance = BigDecimal(BRSharedPrefs.getCachedBalance(app).toDouble()) + val balance = BRSharedPrefs.getCachedBalance(app) _state.update { it.copy( - ltcBalance = balance, - litoshiBalance = balance - .divide(BigDecimal(ONE_LITECOIN_OF_LITOSHIS)), + ltcBalance = BigDecimal(balance), + litoshiBalance = BigDecimal(balance) + .divide( + BigDecimal(ONE_LITECOIN_OF_LITOSHIS), + 8, + BWConstants.ROUNDING_MODE + ) ) } txRepository.refresh() @@ -219,9 +228,13 @@ class MainViewModel( override fun onBalanceChanged(balance: Long) { _state.update { it.copy( - ltcBalance = BigDecimal(balance.toDouble()), - litoshiBalance = BigDecimal(balance.toDouble()) - .divide(BigDecimal(ONE_LITECOIN_OF_LITOSHIS)), + ltcBalance = BigDecimal(balance), + litoshiBalance = BigDecimal(balance) + .divide( + BigDecimal(ONE_LITECOIN_OF_LITOSHIS), + 8, + BWConstants.ROUNDING_MODE + ), ) } viewModelScope.launch(Dispatchers.IO) { diff --git a/app/src/main/res/raw/boingspringmouthharp042013.mp3 b/app/src/main/res/raw/boingspringmouthharp042013.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1f75f9a149897f06c409492e0ac4b95f22dcd0f5 GIT binary patch literal 7988 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 GQ~n>