From d130a9ebeb4acbb9756733612340c9a1fe8dd3e2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 27 Oct 2020 11:28:10 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../main/java/com/tangem/tap/MainActivity.kt | 4 +- .../com/tangem/tap/common/redux/AppState.kt | 4 +- .../tap/features/home/redux/HomeMiddleware.kt | 81 +++++++++---------- 3 files changed, 41 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index ffa1f2aa54..d8e89fe868 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -5,7 +5,6 @@ import android.content.pm.ActivityInfo import android.nfc.NfcAdapter import android.nfc.Tag import android.os.Bundle -import android.os.Handler import androidx.appcompat.app.AppCompatActivity import com.tangem.CardFilter import com.tangem.Config @@ -78,7 +77,7 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - Handler(mainLooper).postDelayed( { handleBackgroundScan(intent) } , 200) + handleBackgroundScan(intent) } private fun handleBackgroundScan(intent: Intent?) { @@ -88,6 +87,7 @@ class MainActivity : AppCompatActivity() { val tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) if (tag != null) { intent.action = null + store.dispatch(NavigationAction.NavigateTo(AppScreen.Home, false)) store.dispatch(HomeAction.ReadCard) } } diff --git a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt index d300bb65b7..5f23825839 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt @@ -8,8 +8,8 @@ import com.tangem.tap.features.details.redux.DetailsMiddleware import com.tangem.tap.features.details.redux.DetailsState import com.tangem.tap.features.disclaimer.redux.DisclaimerMiddleware import com.tangem.tap.features.disclaimer.redux.DisclaimerState +import com.tangem.tap.features.home.redux.HomeMiddleware import com.tangem.tap.features.home.redux.HomeState -import com.tangem.tap.features.home.redux.homeMiddleware import com.tangem.tap.features.send.redux.middlewares.sendMiddleware import com.tangem.tap.features.send.redux.states.SendState import com.tangem.tap.features.wallet.redux.WalletState @@ -31,7 +31,7 @@ data class AppState( fun getMiddleware(): List> { return listOf( logMiddleware, navigationMiddleware, notificationsMiddleware, globalMiddleware, - homeMiddleware, walletMiddleware, sendMiddleware, + HomeMiddleware().homeMiddleware, walletMiddleware, sendMiddleware, DetailsMiddleware().detailsMiddleware, DisclaimerMiddleware().disclaimerMiddleware ) diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index b67c254be3..ec3297fd27 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -17,61 +17,54 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.rekotlin.Middleware -val homeMiddleware: Middleware = { dispatch, state -> - { next -> - { action -> - when (action) { - is HomeAction.CheckIfFirstLaunch -> { - store.dispatch( - HomeAction.CheckIfFirstLaunch.Result(preferencesStorage.isFirstLaunch()) - ) - } - is HomeAction.ReadCard -> { - scope.launch { - val result = tangemSdkManager.scanNote() - withContext(Dispatchers.Main) { - when (result) { - is CompletionResult.Success -> { - store.dispatch(GlobalAction.RestoreAppCurrency) - store.state.globalState.tapWalletManager.onCardScanned(result.data) - showDisclaimerOrNavigateToWallet() +class HomeMiddleware { + val homeMiddleware: Middleware = { dispatch, state -> + { next -> + { action -> + when (action) { + is HomeAction.CheckIfFirstLaunch -> { + store.dispatch( + HomeAction.CheckIfFirstLaunch.Result(preferencesStorage.isFirstLaunch()) + ) + } + is HomeAction.ReadCard -> { + scope.launch { + val result = tangemSdkManager.scanNote() + withContext(Dispatchers.Main) { + when (result) { + is CompletionResult.Success -> { + store.dispatch(GlobalAction.RestoreAppCurrency) + store.state.globalState.tapWalletManager.onCardScanned(result.data) + showDisclaimerOrNavigateToWallet() + } } } } } + is HomeAction.GoToShop -> { + val uri = Uri.parse(CARD_SHOP_URI) + val intent = Intent(Intent.ACTION_VIEW, uri) + startActivity(action.context, intent, null) + } } - is HomeAction.GoToShop -> { - val uri = Uri.parse(CARD_SHOP_URI) - val intent = Intent(Intent.ACTION_VIEW, uri) - startActivity(action.context, intent, null) - } + next(action) } - next(action) } } -} -private fun showDisclaimerOrNavigateToWallet() { - if (preferencesStorage.wasDisclaimerAccepted()) { - navigateToWallet() - } else { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Disclaimer)) - } -} - - -private fun navigateToWallet() { - if (store.state.navigationState.backStack.isNotEmpty()) { - val currentScreen = store.state.navigationState.backStack.last() - if (currentScreen == AppScreen.Home) { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) - } else if (currentScreen != AppScreen.Wallet) { - store.dispatch(NavigationAction.PopBackTo(AppScreen.Home)) + private fun showDisclaimerOrNavigateToWallet() { + if (preferencesStorage.wasDisclaimerAccepted()) { store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) + } else { + store.dispatch(NavigationAction.NavigateTo(AppScreen.Disclaimer)) } - } else { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) + } + + companion object { + private const val CARD_SHOP_URI = + "https://shop.tangem.com/?afmc=1i&utm_campaign=1i&utm_source=leaddyno&utm_medium=affiliate" } } -private const val CARD_SHOP_URI = "https://shop.tangem.com/?afmc=1i&utm_campaign=1i&utm_source=leaddyno&utm_medium=affiliate" + +