diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt index dc57a6bb45..f039fbb8b1 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt @@ -7,6 +7,7 @@ import com.tangem.common.core.TangemSdkError import com.tangem.common.core.UserCodeRequestPolicy import com.tangem.common.extensions.guard import com.tangem.core.analytics.Analytics +import com.tangem.core.analytics.models.Basic import com.tangem.core.navigation.AppScreen import com.tangem.core.navigation.NavigationAction import com.tangem.core.ui.extensions.TextReference @@ -22,8 +23,6 @@ import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.domain.wallets.legacy.isLockedSync import com.tangem.tap.* import com.tangem.tap.common.analytics.events.AnalyticsParam -import com.tangem.core.analytics.models.AnalyticsParam as CoreAnalyticsParam -import com.tangem.core.analytics.models.Basic import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchOnMain @@ -48,6 +47,7 @@ import kotlinx.coroutines.withContext import org.rekotlin.Action import org.rekotlin.Middleware import timber.log.Timber +import com.tangem.core.analytics.models.AnalyticsParam as CoreAnalyticsParam class DetailsMiddleware { private val eraseWalletMiddleware = EraseWalletMiddleware() @@ -522,7 +522,6 @@ class DetailsMiddleware { onWalletNotCreated = { // No need to rollback policy, continue with the policy set before the card scan store.dispatchWithMain(DetailsAction.ScanAndSaveUserWallet.Success) - store.dispatchWithMain(NavigationAction.PopBackTo(AppScreen.Wallet)) }, disclaimerWillShow = { store.dispatchOnMain(NavigationAction.PopBackTo()) diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt index 92d7685a73..7ab41ec265 100644 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt @@ -101,7 +101,17 @@ internal class SaveWalletMiddleware { val isFirstSavedWallet = !userWalletsListManager.hasUserWallets saveAccessCodeIfNeeded(state.backupInfo?.accessCode, userWallet.cardsInWallet) - .flatMap { userWalletsListManager.save(userWallet, canOverride = true) } + .flatMap { + // Save wallet only at first time (SaveWalletBottomSheet). + // Otherwise (Example, add new wallet in Details) userWalletsListManager.wallets subscribers will + // receive useless updates. + // See: OnboardingHelper.trySaveWalletAndNavigateToWalletScreen() + if (isFirstSavedWallet) { + userWalletsListManager.save(userWallet, canOverride = true) + } else { + CompletionResult.Success(Unit) + } + } .doOnFailure { error -> store.dispatchWithMain(SaveWalletAction.Save.Error(error)) } @@ -118,8 +128,8 @@ internal class SaveWalletMiddleware { ) } - store.dispatchWithMain(SaveWalletAction.Save.Success) - store.dispatchWithMain(NavigationAction.PopBackTo(AppScreen.Wallet)) + store.dispatchOnMain(SaveWalletAction.Save.Success) + store.dispatchOnMain(NavigationAction.PopBackTo(AppScreen.Wallet)) } } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolverV2.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolverV2.kt index e1f8088ebe..1c8a3f7b26 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolverV2.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolverV2.kt @@ -211,7 +211,7 @@ internal class WalletsUpdateActionResolverV2 @Inject constructor( override fun toString(): String { return """ - Initialize( + InitializeWallets( selectedWalletIndex = $selectedWalletIndex, selectedWallet = ${selectedWallet.walletId}, wallets = ${wallets.joinToString { it.walletId.toString() }}