Updated on 2026-08-14

This commit is contained in:
Tangem 2024-02-15 10:13:44 +03:00
parent 3a4ce4d24b
commit 76c64ef543
27 changed files with 270 additions and 238 deletions

View file

@ -7,7 +7,7 @@ import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.screen.ComposeFragment
import com.tangem.core.ui.theme.AppThemeModeHolder
import com.tangem.feature.wallet.presentation.router.InnerWalletRouter
import com.tangem.features.managetokens.navigation.ManageTokensRouter
import com.tangem.features.managetokens.navigation.ManageTokensUi
import com.tangem.features.wallet.navigation.WalletRouter
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@ -24,7 +24,7 @@ internal class WalletFragment : ComposeFragment() {
override lateinit var appThemeModeHolder: AppThemeModeHolder
@Inject
internal lateinit var manageTokensRouter: ManageTokensRouter
internal lateinit var manageTokensUi: ManageTokensUi
/** Feature router */
@Inject
@ -44,7 +44,7 @@ internal class WalletFragment : ComposeFragment() {
_walletRouter.Initialize(
onFinish = requireActivity()::finish,
manageTokensRouter = manageTokensRouter,
manageTokensUi = manageTokensUi,
)
}

View file

@ -1,5 +1,6 @@
package com.tangem.feature.wallet.presentation.router
import android.annotation.SuppressLint
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
@ -27,7 +28,7 @@ import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensScree
import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensViewModel
import com.tangem.feature.wallet.presentation.wallet.ui.WalletScreen
import com.tangem.feature.wallet.presentation.wallet.viewmodels.WalletViewModel
import com.tangem.features.managetokens.navigation.ManageTokensRouter
import com.tangem.features.managetokens.navigation.ManageTokensUi
import com.tangem.features.tokendetails.navigation.TokenDetailsRouter
import kotlin.properties.Delegates
@ -42,7 +43,7 @@ internal class DefaultWalletRouter(
override fun getEntryFragment(): Fragment = WalletFragment.create()
@Composable
override fun Initialize(onFinish: () -> Unit, manageTokensRouter: ManageTokensRouter) {
override fun Initialize(onFinish: () -> Unit, manageTokensUi: ManageTokensUi) {
this.onFinish = onFinish
NavHost(
@ -56,24 +57,15 @@ internal class DefaultWalletRouter(
}
var bottomSheetHeaderHeight by remember { mutableStateOf(0.dp) }
val innerController = rememberNavController()
WalletScreen(
state = viewModel.uiState.collectAsStateWithLifecycle().value,
bottomSheetHeaderHeightProvider = { bottomSheetHeaderHeight },
bottomSheetContent = {
NavHost(
navController = innerController,
startDestination = manageTokensRouter.startDestination,
) {
// Manage Tokens
with(manageTokensRouter) {
initialize(
navController = innerController,
onHeaderSizeChange = { bottomSheetHeaderHeight = it },
)
}
}
// Manage Tokens
manageTokensUi.Content(
onHeaderSizeChange = { bottomSheetHeaderHeight = it },
)
},
)
}
@ -97,6 +89,7 @@ internal class DefaultWalletRouter(
}
}
@SuppressLint("RestrictedApi")
override fun popBackStack(screen: AppScreen?) {
/*
* It's hack that avoid issue with closing the wallet screen.

View file

@ -5,7 +5,7 @@ import androidx.compose.runtime.Stable
import com.tangem.core.navigation.AppScreen
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.features.managetokens.navigation.ManageTokensRouter
import com.tangem.features.managetokens.navigation.ManageTokensUi
import com.tangem.features.wallet.navigation.WalletRouter
/**
@ -26,7 +26,7 @@ internal interface InnerWalletRouter : WalletRouter {
*/
@Suppress("TopLevelComposableFunctions")
@Composable
fun Initialize(onFinish: () -> Unit, manageTokensRouter: ManageTokensRouter)
fun Initialize(onFinish: () -> Unit, manageTokensUi: ManageTokensUi)
/** Pop back stack */
fun popBackStack(screen: AppScreen? = null)