11package to.bitkit.ui
22
33import android.content.Intent
4+ import androidx.compose.animation.AnimatedVisibility
45import androidx.compose.foundation.layout.Box
56import androidx.compose.foundation.layout.fillMaxSize
7+ import androidx.compose.foundation.layout.fillMaxWidth
68import androidx.compose.material3.DrawerState
79import androidx.compose.material3.DrawerValue
810import androidx.compose.material3.rememberDrawerState
@@ -20,6 +22,7 @@ import androidx.compose.runtime.setValue
2022import androidx.compose.ui.Alignment
2123import androidx.compose.ui.Modifier
2224import androidx.compose.ui.platform.LocalContext
25+ import androidx.compose.ui.zIndex
2326import androidx.core.net.toUri
2427import androidx.hilt.navigation.compose.hiltViewModel
2528import androidx.lifecycle.Lifecycle
@@ -33,8 +36,10 @@ import androidx.navigation.NavHostController
3336import androidx.navigation.NavOptions
3437import androidx.navigation.compose.NavHost
3538import androidx.navigation.compose.composable
39+ import androidx.navigation.compose.currentBackStackEntryAsState
3640import androidx.navigation.compose.rememberNavController
3741import androidx.navigation.toRoute
42+ import dev.chrisbanes.haze.rememberHazeState
3843import kotlinx.coroutines.delay
3944import kotlinx.coroutines.launch
4045import kotlinx.serialization.Serializable
@@ -48,6 +53,7 @@ import to.bitkit.ui.components.AuthCheckScreen
4853import to.bitkit.ui.components.DrawerMenu
4954import to.bitkit.ui.components.Sheet
5055import to.bitkit.ui.components.SheetHost
56+ import to.bitkit.ui.components.TabBar
5157import to.bitkit.ui.components.TimedSheetType
5258import to.bitkit.ui.onboarding.InitializingWalletView
5359import to.bitkit.ui.onboarding.WalletRestoreErrorView
@@ -88,6 +94,7 @@ import to.bitkit.ui.screens.transfer.external.LnurlChannelScreen
8894import to.bitkit.ui.screens.wallets.HomeNav
8995import to.bitkit.ui.screens.wallets.activity.ActivityDetailScreen
9096import to.bitkit.ui.screens.wallets.activity.ActivityExploreScreen
97+ import to.bitkit.ui.screens.wallets.activity.AllActivityScreen
9198import to.bitkit.ui.screens.wallets.activity.AllActivityScreenWithTabBar
9299import to.bitkit.ui.screens.wallets.activity.DateRangeSelectorSheet
93100import to.bitkit.ui.screens.wallets.activity.TagSelectorSheet
@@ -358,6 +365,8 @@ fun ContentView(
358365 val hasSeenShopIntro by settingsViewModel.hasSeenShopIntro.collectAsStateWithLifecycle()
359366
360367 val currentSheet by appViewModel.currentSheet.collectAsStateWithLifecycle()
368+ val hazeState = rememberHazeState()
369+
361370 Box (
362371 modifier = Modifier .fillMaxSize()
363372 ) {
@@ -454,6 +463,29 @@ fun ContentView(
454463 )
455464 }
456465
466+ val navBackStackEntry by navController.currentBackStackEntryAsState()
467+
468+ val currentRoute = navBackStackEntry?.destination?.route
469+
470+ val showTabBar = currentRoute in listOf (
471+ Routes .Home ::class .qualifiedName,
472+ Routes .AllActivity ::class .qualifiedName,
473+ )
474+
475+ AnimatedVisibility (
476+ visible = showTabBar && currentSheet == null ,
477+ modifier = Modifier
478+ .fillMaxWidth()
479+ .align(Alignment .BottomCenter )
480+ ) {
481+ TabBar (
482+ hazeState = hazeState,
483+ onSendClick = { appViewModel.showSheet(Sheet .Send ()) },
484+ onReceiveClick = { appViewModel.showSheet(Sheet .Receive ) },
485+ onScanClick = { navController.navigateToScanner() },
486+ )
487+ }
488+
457489 DrawerMenu (
458490 drawerState = drawerState,
459491 walletNavController = walletNavController,
@@ -493,7 +525,6 @@ private fun RootNavHost(
493525 )
494526 allActivity(
495527 activityListViewModel = activityListViewModel,
496- appViewModel = appViewModel,
497528 navController = navController,
498529 )
499530 settings(navController, settingsViewModel)
@@ -767,18 +798,15 @@ private fun NavGraphBuilder.home(
767798
768799private fun NavGraphBuilder.allActivity (
769800 activityListViewModel : ActivityListViewModel ,
770- appViewModel : AppViewModel ,
771801 navController : NavHostController ,
772802) {
773803 composableWithDefaultTransitions<Routes .AllActivity > {
774- AllActivityScreenWithTabBar (
804+ AllActivityScreen (
775805 viewModel = activityListViewModel,
776- appViewModel = appViewModel,
777806 onBack = {
778807 activityListViewModel.clearFilters()
779808 navController.navigateToHome()
780809 },
781- onScanClick = { navController.navigateToScanner() },
782810 onActivityItemClick = { id -> navController.navigateToActivityItem(id) },
783811 )
784812 }
0 commit comments