Updated on 2026-08-14

This commit is contained in:
Tangem 2023-07-10 21:03:00 +08:00
parent 2e07841398
commit d1bf017319
16 changed files with 84 additions and 20 deletions

View file

@ -1,5 +1,6 @@
package com.tangem.feature.wallet.di
import com.tangem.core.navigation.NavigationStateHolder
import com.tangem.feature.wallet.presentation.router.DefaultWalletRouter
import com.tangem.features.wallet.navigation.WalletRouter
import dagger.Module
@ -14,5 +15,7 @@ internal object WalletRouterModule {
@Provides
@ActivityScoped
fun provideWalletRouter(): WalletRouter = DefaultWalletRouter()
fun provideWalletRouter(navigationStateHolder: NavigationStateHolder): WalletRouter {
return DefaultWalletRouter(navigationStateHolder = navigationStateHolder)
}
}

View file

@ -1,12 +1,12 @@
package com.tangem.feature.wallet.presentation
import android.os.Bundle
import android.transition.TransitionInflater
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.Fragment
import androidx.transition.TransitionInflater
import com.tangem.core.ui.components.SystemBarsEffect
import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.wallet.impl.R

View file

@ -11,6 +11,9 @@ import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.tangem.core.navigation.AppScreen
import com.tangem.core.navigation.NavigationAction
import com.tangem.core.navigation.NavigationStateHolder
import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.wallet.presentation.WalletFragment
import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensScreen
@ -20,7 +23,7 @@ import com.tangem.feature.wallet.presentation.wallet.viewmodels.WalletViewModel
import kotlin.properties.Delegates
/** Default implementation of wallet feature router */
internal class DefaultWalletRouter : InnerWalletRouter {
internal class DefaultWalletRouter(private val navigationStateHolder: NavigationStateHolder) : InnerWalletRouter {
private var navController: NavHostController by Delegates.notNull()
private var fragmentManager: FragmentManager by Delegates.notNull()
@ -74,6 +77,10 @@ internal class DefaultWalletRouter : InnerWalletRouter {
navController.navigate(WalletScreens.ORGANIZE_TOKENS.name)
}
override fun openDetailsScreen() {
navigationStateHolder.navigate(NavigationAction.NavigateTo(AppScreen.Details))
}
private companion object {
const val BACKSTACK_ENTRY_COUNT_TO_CLOSE_WALLET_SCREEN = 2
}

View file

@ -30,4 +30,7 @@ internal interface InnerWalletRouter : WalletRouter {
/** Open organize tokens screen */
fun openOrganizeTokensScreen()
/** Open details screen */
fun openDetailsScreen()
}

View file

@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel
import com.tangem.feature.wallet.presentation.common.WalletPreviewData
import com.tangem.feature.wallet.presentation.router.InnerWalletRouter
import com.tangem.feature.wallet.presentation.wallet.state.WalletStateHolder
import com.tangem.feature.wallet.presentation.wallet.state.WalletTopBarConfig
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlin.properties.Delegates
@ -30,8 +31,9 @@ internal class WalletViewModel @Inject constructor() : ViewModel() {
// TODO: [REDACTED_TASK_KEY] Use production data instead of WalletPreviewData
private fun getInitialState(): WalletStateHolder = WalletPreviewData.multicurrencyWalletScreenState.copy(
onBackClick = { router.popBackStack() },
topBarConfig = WalletPreviewData.multicurrencyWalletScreenState.topBarConfig.copy(
topBarConfig = WalletTopBarConfig(
onScanCardClick = { router.openOrganizeTokensScreen() },
onMoreClick = { router.openDetailsScreen() }
),
walletsListConfig = WalletPreviewData.multicurrencyWalletScreenState.walletsListConfig.copy(
onWalletChange = ::selectWallet,