diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt index 60ecd8a44e..99ecf0792a 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt @@ -60,7 +60,6 @@ import com.tangem.tap.features.addBackPressHandler import com.tangem.tap.features.onboarding.OnboardingMenuProvider import com.tangem.tap.features.onboarding.products.wallet.redux.* import com.tangem.tap.features.onboarding.products.wallet.ui.dialogs.AccessCodeDialog -import com.tangem.tap.mainScope import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.scope import com.tangem.tap.store @@ -72,6 +71,7 @@ import com.tangem.wallet.databinding.ViewOnboardingProgressBinding import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import org.rekotlin.StoreSubscriber +import timber.log.Timber import javax.inject.Inject @Suppress("LargeClass", "MagicNumber") @@ -452,6 +452,11 @@ class OnboardingWalletFragment : setOnCancelListener { store.dispatch(BackupAction.OnAccessCodeDialogClosed) } + + setOnShowListener { setSecurityMode(true) } + + setOnDismissListener { setSecurityMode(false) } + show() showInfoScreen() val view = @@ -666,17 +671,21 @@ class OnboardingWalletFragment : } override fun allowScreenshots(allow: Boolean) { - mainScope.launch { - if (allow) { - requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) - } else { - requireActivity().window.setFlags( - WindowManager.LayoutParams.FLAG_SECURE, - WindowManager.LayoutParams.FLAG_SECURE, - ) - } - } + setSecurityMode(value = !allow) } } } + + private fun setSecurityMode(value: Boolean) { + Timber.d("Security mode: ${if (value) "enabled" else "disabled"}") + + if (value) { + requireActivity().window.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE, + ) + } else { + requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AccessCodeDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AccessCodeDialog.kt index 9244b75bb8..5cd9b6dcb2 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AccessCodeDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AccessCodeDialog.kt @@ -27,8 +27,10 @@ class AccessCodeDialog(context: Context) : BottomSheetDialog(context) { } override fun setOnDismissListener(listener: DialogInterface.OnDismissListener?) { - super.setOnDismissListener(listener) - binding = null + super.setOnDismissListener { + listener?.onDismiss(it) + binding = null + } } fun showInfoScreen() = with(binding!!) { diff --git a/core/ui/src/main/java/com/tangem/core/ui/security/DisableScreenshots.kt b/core/ui/src/main/java/com/tangem/core/ui/security/DisableScreenshots.kt index 4a421ead77..58466d1140 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/security/DisableScreenshots.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/security/DisableScreenshots.kt @@ -5,19 +5,26 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.platform.LocalContext import com.tangem.core.ui.utils.findActivity +import timber.log.Timber /** * Disables screenshots for the current composition. + * + * @see Migration */ @Composable fun DisableScreenshotsDisposableEffect() { val activity = LocalContext.current.findActivity() + DisposableEffect(activity) { + Timber.d("Security mode: enabled") activity.window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE, ) + onDispose { + Timber.d("Security mode: disabled") activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/MultiWalletAccessCodeComponent.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/MultiWalletAccessCodeComponent.kt index 7beeb89bd9..20a7a1c191 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/MultiWalletAccessCodeComponent.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/accesscode/MultiWalletAccessCodeComponent.kt @@ -9,6 +9,7 @@ import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.core.ui.decompose.ComposableBottomSheetComponent +import com.tangem.core.ui.security.DisableScreenshotsDisposableEffect import com.tangem.features.onboarding.v2.multiwallet.impl.child.MultiWalletChildParams import com.tangem.features.onboarding.v2.multiwallet.impl.child.accesscode.model.MultiWalletAccessCodeModel import com.tangem.features.onboarding.v2.multiwallet.impl.child.accesscode.ui.MultiWalletAccessCodeBS @@ -16,7 +17,6 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch -@Suppress("UnusedPrivateMember") class MultiWalletAccessCodeComponent( context: AppComponentContext, params: MultiWalletChildParams, @@ -62,6 +62,8 @@ class MultiWalletAccessCodeComponent( state = state, onBack = { model.onBack() }, ) + + DisableScreenshotsDisposableEffect() } @JvmInline diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/seedphrase/MultiWalletSeedPhraseComponent.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/seedphrase/MultiWalletSeedPhraseComponent.kt index 6e6722ddb7..0e2df84fa6 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/seedphrase/MultiWalletSeedPhraseComponent.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/multiwallet/impl/child/seedphrase/MultiWalletSeedPhraseComponent.kt @@ -76,9 +76,6 @@ internal class MultiWalletSeedPhraseComponent( DisableScreenshotsDisposableEffect() - MultiWalletSeedPhrase( - modifier = modifier, - state = state, - ) + MultiWalletSeedPhrase(modifier = modifier, state = state) } } \ No newline at end of file diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 050ee1f616..62b04e4d76 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -91,7 +91,7 @@ markdownComposeView = "0.5.4" # region Tangem tangemBlockchainSdk = "develop-942" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "develop-432" +tangemCardSdk = "develop-433" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem-developments8" #tangemVico = "0.0.1" # Keep it! - used for local builds ^