From 8cedc99fdc82f9a04427d763406d2ee39d8e9c6b Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 7 Jun 2022 15:14:45 +0300 Subject: [PATCH 1/9] Updated on 2026-08-14 --- app/src/main/res/values-ru/strings_final.xml | 2 +- app/src/main/res/values/strings_final.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings_final.xml b/app/src/main/res/values-ru/strings_final.xml index abce4c4f83..201a1684ae 100644 --- a/app/src/main/res/values-ru/strings_final.xml +++ b/app/src/main/res/values-ru/strings_final.xml @@ -47,7 +47,7 @@ Пользовательский Баланс - Некоторые сети недоступны + В сумме учтены не все монеты Управление токенами Нет цены diff --git a/app/src/main/res/values/strings_final.xml b/app/src/main/res/values/strings_final.xml index 2478dee488..d59d31ff0e 100644 --- a/app/src/main/res/values/strings_final.xml +++ b/app/src/main/res/values/strings_final.xml @@ -47,7 +47,7 @@ Custom Total balance - Some networks are unreachable + The amount does not include some of your funds Manage tokens No rate From fdd8c3a840072bfc74e1244f4259ed4337f98a79 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 7 Jun 2022 15:16:21 +0300 Subject: [PATCH 2/9] Updated on 2026-08-14 --- app/src/main/res/layout/card_total_balance.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/card_total_balance.xml b/app/src/main/res/layout/card_total_balance.xml index 196dc167e1..1f97649e18 100644 --- a/app/src/main/res/layout/card_total_balance.xml +++ b/app/src/main/res/layout/card_total_balance.xml @@ -52,7 +52,7 @@ app:veilLayout_veiled="true" app:veilLayout_radius="4dp" app:layout_constraintTop_toBottomOf="@id/tv_title" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toTopOf="@id/tv_processing" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" tools:veilLayout_veiled="false"> @@ -80,7 +80,8 @@ android:textSize="12sp" android:text="@string/main_processing_full_amount" app:layout_constraintTop_toBottomOf="@id/veil_balance" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible" /> Date: Tue, 7 Jun 2022 15:16:59 +0300 Subject: [PATCH 3/9] Updated on 2026-08-14 --- .../java/com/tangem/tap/features/wallet/redux/WalletState.kt | 1 - .../features/wallet/redux/reducers/TotalBalanceOperations.kt | 5 +++-- .../tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt index f9a8e77a76..b906784269 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt @@ -288,7 +288,6 @@ data class WalletState( private fun updateTotalBalance(): WalletState { val walletsData = this.wallets .flatMap(WalletStore::walletsData) - .filter { it.fiatRate != null } return if (walletsData.isNotEmpty()) { this.copy( diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/TotalBalanceOperations.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/TotalBalanceOperations.kt index c0ead34d52..15e44ea361 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/TotalBalanceOperations.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/TotalBalanceOperations.kt @@ -18,8 +18,9 @@ fun List.calculateTotalFiatAmount(): BigDecimal { } private fun List.mapToProgressState(): List { - return this.map { - when (it.currencyData.status) { + return this.map { wallet -> + if (wallet.fiatRate == null) ProgressState.Error + else when (wallet.currencyData.status) { BalanceStatus.Refreshing -> ProgressState.Refreshing BalanceStatus.VerifiedOnline, BalanceStatus.SameCurrencyTransactionInProgress, diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt index e228e737bd..dd2260d59f 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt @@ -138,8 +138,7 @@ class MultiWalletView : WalletView { show = totalBalance.state == ProgressState.Error ) - tvBalance.text = if (totalBalance.state == ProgressState.Error) "—" - else totalBalance.fiatAmount.formatAmountAsSpannedString( + tvBalance.text = totalBalance.fiatAmount.formatAmountAsSpannedString( currencySymbol = totalBalance.fiatCurrency.symbol ) tvCurrencyName.text = totalBalance.fiatCurrency.code From c3f2c157a305cd4faa428f14e7f3912aedbc6eee Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 8 Jun 2022 23:41:38 +0400 Subject: [PATCH 4/9] Updated on 2026-08-14 --- .../tangem/tap/features/send/redux/reducers/ReceiptReducer.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt index f4dc73323e..28a7f06b08 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/reducers/ReceiptReducer.kt @@ -128,7 +128,8 @@ class ReceiptReducer : SendInternalReducer { val totalFiat = amountFiat.plus(feeFiat) ReceiptTokenFiat( amountFiat = amountFiat.scaleToFiat(true).stripZeroPlainString(), - feeFiat = feeFiat.scaleToFiat(true).stripZeroPlainString(), + feeFiat = feeFiat.scaleToFiat(true) + .stripZeroPlainString().addPrecisionSign(), totalFiat = totalFiat.scaleToFiat(true).stripZeroPlainString(), willSentToken = tokensToSend.stripZeroPlainString(), willSentFeeCoin = feeCoin.stripZeroPlainString(), From b13a54b808db244830095c22e9eb7d7832e220ae Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 9 Jun 2022 09:50:27 +0400 Subject: [PATCH 5/9] Updated on 2026-08-14 --- .../features/details/redux/DetailsAction.kt | 2 ++ .../features/details/redux/DetailsReducer.kt | 3 +++ .../features/details/redux/DetailsState.kt | 2 ++ .../features/details/ui/DetailsFragment.kt | 3 +++ .../middlewares/AppCurrencyMiddleware.kt | 2 ++ app/src/main/res/layout/fragment_details.xml | 19 ++++++++++++++++--- 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt index 0739effc65..c37a625c54 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt @@ -5,6 +5,7 @@ import com.tangem.common.card.Card import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.TwinCardNumber import com.tangem.operations.pins.CheckUserCodesResponse +import com.tangem.tap.common.entities.FiatCurrency import com.tangem.tap.common.redux.NotificationAction import com.tangem.tap.domain.termsOfUse.CardTou import com.tangem.wallet.R @@ -58,4 +59,5 @@ sealed class DetailsAction : Action { } } + data class ChangeAppCurrency(val fiatCurrency: FiatCurrency) : DetailsAction() } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt index 45910f64c4..a095d46d7e 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt @@ -31,6 +31,9 @@ private fun internalReduce(action: Action, state: AppState): DetailsState { is DetailsAction.ManageSecurity -> { handleSecurityAction(action, detailsState) } + is DetailsAction.ChangeAppCurrency -> + detailsState.copy(appCurrency = action.fiatCurrency) + else -> detailsState } } diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt index eca730c5e2..ee6fd2bb7e 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt @@ -4,6 +4,7 @@ import android.net.Uri import com.tangem.blockchain.common.Wallet import com.tangem.domain.common.ScanResponse import com.tangem.tap.common.entities.Button +import com.tangem.tap.common.entities.FiatCurrency import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsState import com.tangem.tap.store import org.rekotlin.StateType @@ -19,6 +20,7 @@ data class DetailsState( val securityScreenState: SecurityScreenState? = null, val cardTermsOfUseUrl: Uri? = null, val createBackupAllowed: Boolean = false, + val appCurrency: FiatCurrency = FiatCurrency.Default ) : StateType { // if you do not delegate - the application crashes on startup, diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt index f536a8c356..e8f3b56a62 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt @@ -116,6 +116,9 @@ class DetailsFragment : Fragment(R.layout.fragment_details), StoreSubscriber + + + @@ -243,7 +256,7 @@ app:drawableEndCompat="@drawable/ic_angle_bracket_right" app:drawableTint="@color/darkGray1" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_app_currency" /> + app:layout_constraintTop_toBottomOf="@id/tv_app_currency_title" /> Date: Thu, 9 Jun 2022 10:01:54 +0400 Subject: [PATCH 6/9] Updated on 2026-08-14 --- .../common/compose/extensions/LazyListState.kt | 15 +++++++++++++++ .../tokens/ui/compose/ListOfCurrencies.kt | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt index a14477efca..013c92eff6 100644 --- a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt +++ b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt @@ -1,7 +1,11 @@ package com.tangem.tap.common.compose.extensions +import android.content.Context +import android.view.inputmethod.InputMethodManager import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.* +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView @Composable fun LazyListState.OnBottomReached(loadMoreThreshold: Int, loadMore: () -> Unit) { @@ -17,4 +21,15 @@ fun LazyListState.OnBottomReached(loadMoreThreshold: Int, loadMore: () -> Unit) LaunchedEffect(shouldLoadMore) { if (shouldLoadMore) loadMore() } +} + +@Composable +fun LazyListState.HideKeyboardOnScroll() { + val context = LocalContext.current + val view = LocalView.current + LaunchedEffect(firstVisibleItemIndex) { + val inputMethodManager = + context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0) + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/ui/compose/ListOfCurrencies.kt b/app/src/main/java/com/tangem/tap/features/tokens/ui/compose/ListOfCurrencies.kt index 75755a0e73..4892cf5e13 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/ui/compose/ListOfCurrencies.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/ui/compose/ListOfCurrencies.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.tangem.blockchain.common.Blockchain +import com.tangem.tap.common.compose.extensions.HideKeyboardOnScroll import com.tangem.tap.common.compose.extensions.OnBottomReached import com.tangem.tap.domain.tokens.Currency import com.tangem.tap.features.tokens.redux.ContractAddress @@ -44,6 +45,8 @@ fun ListOfCurrencies( } val listState = rememberLazyListState() + listState.HideKeyboardOnScroll() + listState.OnBottomReached(loadMoreThreshold = 40) { onLoadMore() } LazyColumn( state = listState, @@ -67,7 +70,6 @@ fun ListOfCurrencies( ) } } - listState.OnBottomReached(loadMoreThreshold = 40) { onLoadMore() } } val Currency.fullName: String From 63f9e8738fb1499382c767e95a737e305f7e1e3c Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 9 Jun 2022 12:06:36 +0300 Subject: [PATCH 7/9] Updated on 2026-08-14 --- .../wallet/ui/wallet/MultiWalletView.kt | 1 - .../wallet/ui/wallet/SingleWalletView.kt | 12 ------- .../res/layout/layout_wallet_long_buttons.xml | 23 ++------------ .../layout/layout_wallet_short_buttons.xml | 31 ++++--------------- 4 files changed, 9 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt index dd2260d59f..5646b437f0 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt @@ -192,7 +192,6 @@ class MultiWalletView : WalletView { private fun configureButtonsForEmptyWalletState(binding: FragmentWalletBinding) = with(binding) { lButtonsLong.root.show() - lButtonsLong.btnScanLong.setOnClickListener { store.dispatch(WalletAction.Scan) } lButtonsLong.btnConfirmLong.setOnClickListener { store.dispatch(WalletAction.CreateWallet) } lButtonsLong.btnConfirmLong.text = fragment?.getText(R.string.wallet_button_create_wallet) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt index 4fb9b0ca0b..b7e0a307a5 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/SingleWalletView.kt @@ -130,20 +130,8 @@ class SingleWalletView : WalletView { lButtonsLong.btnConfirmLong } - val btnScan = if (state.tradeCryptoState.sellingAllowed || - state.tradeCryptoState.buyingAllowed - ) { - lButtonsShort.btnScan - } else { - lButtonsLong.btnScanLong - } - setupConfirmButton(state, btnConfirm, isTwinsWallet) - btnScan.setOnClickListener { - store.dispatch(WalletAction.Scan) - } - lAddress.btnCopy.setOnClickListener { state.walletAddresses?.selectedAddress?.address?.let { addressString -> store.dispatch(WalletAction.CopyAddress(addressString, fragment!!.requireContext())) diff --git a/app/src/main/res/layout/layout_wallet_long_buttons.xml b/app/src/main/res/layout/layout_wallet_long_buttons.xml index fa2a403d60..f670b7fd5d 100644 --- a/app/src/main/res/layout/layout_wallet_long_buttons.xml +++ b/app/src/main/res/layout/layout_wallet_long_buttons.xml @@ -4,22 +4,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/layout_wallet_short_buttons.xml b/app/src/main/res/layout/layout_wallet_short_buttons.xml index 08bdfeef5a..ed60601395 100644 --- a/app/src/main/res/layout/layout_wallet_short_buttons.xml +++ b/app/src/main/res/layout/layout_wallet_short_buttons.xml @@ -14,8 +14,8 @@ android:layout_marginBottom="8dp" android:text="@string/wallet_button_trade" app:icon="@drawable/ic_arrows_up_down" - app:layout_constraintBottom_toTopOf="@id/btn_scan" - app:layout_constraintEnd_toStartOf="@id/btn_confirm" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/btn_confirm" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" @@ -34,29 +34,10 @@ android:text="@string/wallet_button_send" app:icon="@drawable/ic_send" app:iconGravity="textEnd" - android:textAlignment="center" - app:layout_constraintBottom_toTopOf="@id/btn_scan" - app:layout_constraintEnd_toEndOf="parent" + android:textAlignment="center" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/btn_trade" app:layout_constraintVertical_bias="1" /> - - - - - \ No newline at end of file + From 4e38f0e82223a55a8aecda03897be69576e78177 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 10 Jun 2022 13:06:35 +0400 Subject: [PATCH 8/9] Updated on 2026-08-14 --- .../tangem/tap/common/compose/extensions/LazyListState.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt index 013c92eff6..652b86af80 100644 --- a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt +++ b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt @@ -28,8 +28,10 @@ fun LazyListState.HideKeyboardOnScroll() { val context = LocalContext.current val view = LocalView.current LaunchedEffect(firstVisibleItemIndex) { - val inputMethodManager = - context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0) + if (firstVisibleItemIndex > 1) { + val inputMethodManager = + context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0) + } } } \ No newline at end of file From 897e2f223a44a909267076b545dbcaf4df0aa4b2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 10 Jun 2022 13:22:03 +0400 Subject: [PATCH 9/9] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- .../tap/common/compose/extensions/LazyListState.kt | 14 +++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index 64ae04d208..985642c135 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit 64ae04d2086e5a605dd4da3cba4af32a60d46c79 +Subproject commit 985642c135606ba1f59fd739127aec03024da79b diff --git a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt index 652b86af80..f05044368f 100644 --- a/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt +++ b/app/src/main/java/com/tangem/tap/common/compose/extensions/LazyListState.kt @@ -1,11 +1,9 @@ package com.tangem.tap.common.compose.extensions -import android.content.Context -import android.view.inputmethod.InputMethodManager import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.* -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import com.tangem.tap.common.extensions.hideKeyboard @Composable fun LazyListState.OnBottomReached(loadMoreThreshold: Int, loadMore: () -> Unit) { @@ -25,13 +23,7 @@ fun LazyListState.OnBottomReached(loadMoreThreshold: Int, loadMore: () -> Unit) @Composable fun LazyListState.HideKeyboardOnScroll() { - val context = LocalContext.current - val view = LocalView.current - LaunchedEffect(firstVisibleItemIndex) { - if (firstVisibleItemIndex > 1) { - val inputMethodManager = - context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0) - } + if (isScrollInProgress) { + LocalView.current.hideKeyboard() } } \ No newline at end of file