Updated on 2026-08-14

This commit is contained in:
Tangem 2020-10-27 13:34:23 +00:00
commit d5bc2371b1
3 changed files with 41 additions and 48 deletions

View file

@ -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<Tag>(NfcAdapter.EXTRA_TAG)
if (tag != null) {
intent.action = null
store.dispatch(NavigationAction.NavigateTo(AppScreen.Home, false))
store.dispatch(HomeAction.ReadCard)
}
}

View file

@ -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<Middleware<AppState>> {
return listOf(
logMiddleware, navigationMiddleware, notificationsMiddleware, globalMiddleware,
homeMiddleware, walletMiddleware, sendMiddleware,
HomeMiddleware().homeMiddleware, walletMiddleware, sendMiddleware,
DetailsMiddleware().detailsMiddleware,
DisclaimerMiddleware().disclaimerMiddleware
)

View file

@ -17,61 +17,54 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.rekotlin.Middleware
val homeMiddleware: Middleware<AppState> = { 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<AppState> = { 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"