From da7402ec665516091721e1582a28cb6f0546d3d2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 15 Jan 2026 19:41:11 +0300 Subject: [PATCH 1/4] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index 78be297b0f..098662beb5 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit 78be297b0f09bc2be1e9b0fbab9384f17bf94c37 +Subproject commit 098662beb5b0123b11f5ee4873d4bd667ac93c73 From 279371a8b327501e8e9d3364281877a7784c6697 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 19 Jan 2026 20:51:14 +0500 Subject: [PATCH 2/4] Updated on 2026-08-14 --- .../ui/navigationButtons/NavigationButtonsBlock.kt | 9 ++++++--- .../tangem/core/ui/utils/MultipleClickPreventer.kt | 12 ++++++++++++ .../destination/ui/SendDestinationContent.kt | 7 ++++++- gradle/tangem_dependencies.toml | 2 +- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsBlock.kt b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsBlock.kt index 1941c34ff9..dde935dbec 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsBlock.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsBlock.kt @@ -36,6 +36,7 @@ import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.core.ui.test.SendScreenTestTags +import com.tangem.core.ui.utils.GlobalMultipleClickPreventer import com.tangem.core.ui.utils.singleEvent @Composable @@ -112,10 +113,12 @@ fun NavigationPrimaryButton(primaryButton: NavigationButton?, modifier: Modifier text = button.textReference.resolveReference(), enabled = button.isEnabled, onClick = { - if (button.isHapticClick) { - hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) + GlobalMultipleClickPreventer.processEvent { + if (button.isHapticClick) { + hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) + } + button.onClick() } - button.onClick() }, showProgress = button.shouldShowProgress, colors = color, diff --git a/core/ui/src/main/java/com/tangem/core/ui/utils/MultipleClickPreventer.kt b/core/ui/src/main/java/com/tangem/core/ui/utils/MultipleClickPreventer.kt index 767e1ada4d..b6342687d3 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/utils/MultipleClickPreventer.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/utils/MultipleClickPreventer.kt @@ -15,6 +15,18 @@ interface MultipleClickPreventer { } } +/** + * A global instance of [MultipleClickPreventer] + * Use for preventing multiple clicks in the entire app. + * For example, when we must ensure correct data is passed while editing values and navigating to next screen. + * + * @example + * GlobalMultipleClickPreventer.processEvent { + * // Handle click event + * } + */ +val GlobalMultipleClickPreventer = MultipleClickPreventer.get() + private class DefaultMultipleClickPreventer : MultipleClickPreventer { private val now: Long get() = SystemClock.elapsedRealtime() private var lastEventTimeMs: Long = 0 diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt index 96592fdf28..af74dc8471 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt @@ -29,6 +29,7 @@ import com.tangem.core.ui.components.inputrow.InputRowRecipient import com.tangem.core.ui.extensions.* import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.test.SendAddressScreenTestTags +import com.tangem.core.ui.utils.GlobalMultipleClickPreventer import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM @@ -135,7 +136,11 @@ private fun LazyListScope.addressItem( title = address.label, placeholder = address.placeholder, onValueChange = { onAddressChange(it, EnterAddressSource.InputField) }, - onPasteClick = { onAddressChange(it, EnterAddressSource.PasteButton) }, + onPasteClick = { + GlobalMultipleClickPreventer.processEvent { + onAddressChange(it, EnterAddressSource.PasteButton) + } + }, onQrCodeClick = onQrCodeClick, isError = isError, isLoading = isValidating, diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 3a00dc0651..e31c24f2d0 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,7 +5,7 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "releases-5.31.1-1334" +tangemBlockchainSdk = "releases-5.31.1-1374" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "releases-5.31-569" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ From 318b8cb8e11870e5d639bbbfce8e59a2682e5352 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 20 Jan 2026 12:10:00 +0300 Subject: [PATCH 3/4] Updated on 2026-08-14 --- app/build.gradle.kts | 2 ++ gradle/dependencies.toml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6f915e67ee..2fca4fd160 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -371,6 +371,8 @@ dependencies { implementation(deps.coil.svg) implementation(deps.amplitude) implementation(deps.appsflyer) + implementation(deps.appsflyer.oaid) + implementation("com.android.installreferrer:installreferrer:2.2") implementation(deps.spongecastle.core) implementation(deps.lottie) implementation(deps.compose.accompanist.appCompatTheme) diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 695f7f7021..f284f5dc0c 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -47,6 +47,7 @@ compose-lifecycle-runtime = "2.7.0" # region Other libraries appsflyer = "6.17.3" +appsflyer-oaid = "6.12.3" amplitude = "2.36.1" amplitude-experiment = "1.13.1" armadillo = "0.9.0" @@ -237,6 +238,7 @@ test-orchestrator = { module = "androidx.test:orchestrator", version.ref = "orch # region Other appsflyer = { module = "com.appsflyer:af-android-sdk", version.ref = "appsflyer" } +appsflyer-oaid = { module = "com.appsflyer:oaid", version.ref = "appsflyer-oaid" } amplitude = { module = "com.amplitude:android-sdk", version.ref = "amplitude" } amplitude-experiment = { module = "com.amplitude:experiment-android-client", version.ref = "amplitude-experiment" } armadillo = { module = "at.favre.lib:armadillo", version.ref = "armadillo" } From 28944ba2879c22e21bf729baddc36ecdd25ac43f Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 20 Jan 2026 12:48:27 +0000 Subject: [PATCH 4/4] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index e31c24f2d0..9f09031069 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,13 +5,13 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "releases-5.31.1-1374" +tangemBlockchainSdk = "releases-5.32-1335" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "releases-5.31-569" +tangemCardSdk = "releases-5.32-574" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ -tangemHotSdk = "develop-531" +tangemHotSdk = "develop-541" #tangemHotSdk = "0.0.1" # Keep it! - used for local builds ^