diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index 18dd61e8ea..61a591e5c7 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -32,7 +32,7 @@ import com.tangem.tap.domain.TangemSdkManager import com.tangem.tap.domain.userWalletList.UserWalletsListManager import com.tangem.tap.domain.userWalletList.di.provideBiometricImplementation import com.tangem.tap.domain.userWalletList.di.provideRuntimeImplementation -import com.tangem.tap.features.intentHandler.MainIntentHandler +import com.tangem.tap.features.intentHandler.IntentProcessor import com.tangem.tap.features.intentHandler.handlers.BackgroundScanIntentHandler import com.tangem.tap.features.intentHandler.handlers.BuyCurrencyIntentHandler import com.tangem.tap.features.intentHandler.handlers.SellCurrencyIntentHandler @@ -102,7 +102,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac lateinit var walletConnectInteractor: WalletConnectInteractor // TODO: fixme: inject through DI - private val intentHandler: MainIntentHandler = MainIntentHandler() + private val intentProcessor: IntentProcessor = IntentProcessor() private var snackbar: Snackbar? = null private val dialogManager = DialogManager() @@ -145,10 +145,10 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac private fun initIntentHandlers() { val hasSavedWalletsProvider = { store.state.globalState.userWalletsListManager?.hasUserWallets == true } - intentHandler.addHandler(BackgroundScanIntentHandler(hasSavedWalletsProvider)) - intentHandler.addHandler(WalletConnectLinkIntentHandler()) - intentHandler.addHandler(BuyCurrencyIntentHandler()) - intentHandler.addHandler(SellCurrencyIntentHandler()) + intentProcessor.addHandler(BackgroundScanIntentHandler(hasSavedWalletsProvider)) + intentProcessor.addHandler(WalletConnectLinkIntentHandler()) + intentProcessor.addHandler(BuyCurrencyIntentHandler()) + intentProcessor.addHandler(SellCurrencyIntentHandler()) } private fun initUserWalletsListManager() { @@ -188,7 +188,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) scope.launch { - intentHandler.handleIntent(intent) + intentProcessor.handleIntent(intent) } } @@ -205,7 +205,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac override fun onDestroy() { store.dispatch(NavigationAction.ActivityDestroyed(WeakReference(this))) - intentHandler.removeAll() + intentProcessor.removeAll() super.onDestroy() } @@ -286,7 +286,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac } else { store.dispatchOnMain(NavigationAction.NavigateTo(AppScreen.Home)) scope.launch { - intentHandler.handleIntent(intentWhichStartedActivity) + intentProcessor.handleIntent(intentWhichStartedActivity) } } store.dispatch(BackupAction.CheckForUnfinishedBackup) diff --git a/app/src/main/java/com/tangem/tap/features/intentHandler/MainIntentHandler.kt b/app/src/main/java/com/tangem/tap/features/intentHandler/IntentProcessor.kt similarity index 62% rename from app/src/main/java/com/tangem/tap/features/intentHandler/MainIntentHandler.kt rename to app/src/main/java/com/tangem/tap/features/intentHandler/IntentProcessor.kt index 7a952f7e63..47cf6a31fd 100644 --- a/app/src/main/java/com/tangem/tap/features/intentHandler/MainIntentHandler.kt +++ b/app/src/main/java/com/tangem/tap/features/intentHandler/IntentProcessor.kt @@ -1,13 +1,15 @@ package com.tangem.tap.features.intentHandler import android.content.Intent +import java.util.concurrent.CopyOnWriteArrayList /** [REDACTED_AUTHOR] */ -class MainIntentHandler { +// TODO: fixme: close it with the combined interfaces IntentHandler and IntentHandlerHolder +class IntentProcessor { - private val intentHandlers = mutableListOf() + private val intentHandlers = CopyOnWriteArrayList() fun addHandler(handler: IntentHandler) { intentHandlers.add(handler) @@ -22,7 +24,7 @@ class MainIntentHandler { } suspend fun handleIntent(intent: Intent?) { - intentHandlers.toList().forEach { + intentHandlers.forEach { it.handleIntent(intent) } } diff --git a/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/SellCurrencyIntentHandler.kt b/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/SellCurrencyIntentHandler.kt index 35d0b31763..3fc6c318d6 100644 --- a/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/SellCurrencyIntentHandler.kt +++ b/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/SellCurrencyIntentHandler.kt @@ -10,6 +10,7 @@ import timber.log.Timber [REDACTED_AUTHOR] */ class SellCurrencyIntentHandler : IntentHandler { + override suspend fun handleIntent(intent: Intent?): Boolean { return try { val intentData = intent?.data ?: return false @@ -34,7 +35,7 @@ class SellCurrencyIntentHandler : IntentHandler { } } - companion object { + private companion object { private const val TRANSACTION_ID_PARAM = "transactionId" private const val CURRENCY_CODE_PARAM = "baseCurrencyCode" private const val CURRENCY_AMOUNT_PARAM = "baseCurrencyAmount" diff --git a/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/WalletConnectLinkIntentHandler.kt b/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/WalletConnectLinkIntentHandler.kt index 1154f5ca14..e61d0b74d7 100644 --- a/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/WalletConnectLinkIntentHandler.kt +++ b/app/src/main/java/com/tangem/tap/features/intentHandler/handlers/WalletConnectLinkIntentHandler.kt @@ -30,7 +30,7 @@ class WalletConnectLinkIntentHandler : IntentHandler { } } - companion object { + private companion object { private const val TANGEM_SCHEME = "tangem" private const val TANGEM_WC_PREFIX = "tangem://wc?uri=" }