Skip to content

Commit 07bf511

Browse files
authored
Merge pull request #515 from synonymdev/fix/restore-back-button
fix: navigation issues
2 parents a9714e8 + 8949dfa commit 07bf511

File tree

13 files changed

+140
-188
lines changed

13 files changed

+140
-188
lines changed

app/src/main/java/to/bitkit/ui/ContentView.kt

Lines changed: 97 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ import androidx.navigation.compose.composable
3636
import androidx.navigation.compose.currentBackStackEntryAsState
3737
import androidx.navigation.compose.rememberNavController
3838
import androidx.navigation.toRoute
39+
import dev.chrisbanes.haze.hazeSource
40+
import dev.chrisbanes.haze.rememberHazeState
3941
import kotlinx.coroutines.delay
4042
import kotlinx.coroutines.launch
4143
import kotlinx.serialization.Serializable
@@ -86,7 +88,9 @@ import to.bitkit.ui.screens.transfer.external.ExternalFeeCustomScreen
8688
import to.bitkit.ui.screens.transfer.external.ExternalNodeViewModel
8789
import to.bitkit.ui.screens.transfer.external.ExternalSuccessScreen
8890
import to.bitkit.ui.screens.transfer.external.LnurlChannelScreen
89-
import to.bitkit.ui.screens.wallets.HomeNav
91+
import to.bitkit.ui.screens.wallets.HomeScreen
92+
import to.bitkit.ui.screens.wallets.SavingsWalletScreen
93+
import to.bitkit.ui.screens.wallets.SpendingWalletScreen
9094
import to.bitkit.ui.screens.wallets.activity.ActivityDetailScreen
9195
import to.bitkit.ui.screens.wallets.activity.ActivityExploreScreen
9296
import to.bitkit.ui.screens.wallets.activity.AllActivityScreen
@@ -166,6 +170,7 @@ import to.bitkit.ui.sheets.SendSheet
166170
import to.bitkit.ui.sheets.UpdateSheet
167171
import to.bitkit.ui.theme.TRANSITION_SHEET_MS
168172
import to.bitkit.ui.utils.AutoReadClipboardHandler
173+
import to.bitkit.ui.utils.RequestNotificationPermissions
169174
import to.bitkit.ui.utils.Transitions
170175
import to.bitkit.ui.utils.composableWithDefaultTransitions
171176
import to.bitkit.ui.utils.navigationWithDefaultTransitions
@@ -195,6 +200,7 @@ fun ContentView(
195200
modifier: Modifier = Modifier,
196201
) {
197202
val navController = rememberNavController()
203+
198204
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
199205
val context = LocalContext.current
200206
val lifecycle = LocalLifecycleOwner.current.lifecycle
@@ -494,7 +500,7 @@ private fun RootNavHost(
494500
activityListViewModel = activityListViewModel,
495501
settingsViewModel = settingsViewModel,
496502
navController = navController,
497-
drawerState = drawerState
503+
drawerState = drawerState,
498504
)
499505
allActivity(
500506
activityListViewModel = activityListViewModel,
@@ -541,6 +547,7 @@ private fun RootNavHost(
541547
navController.navigateToTransferFunding()
542548
settingsViewModel.setHasSeenTransferIntro(true)
543549
},
550+
onBackClick = {},
544551
)
545552
}
546553
composableWithDefaultTransitions<Routes.SavingsIntro> {
@@ -630,7 +637,9 @@ private fun RootNavHost(
630637
composableWithDefaultTransitions<Routes.SettingUp> {
631638
SettingUpScreen(
632639
viewModel = transferViewModel,
633-
onContinueClick = { navController.popBackStack<Routes.TransferRoot>(inclusive = true) },
640+
onContinueClick = {
641+
navController.navigateToHome()
642+
}
634643
)
635644
}
636645
composableWithDefaultTransitions<Routes.Funding> {
@@ -744,13 +753,77 @@ private fun NavGraphBuilder.home(
744753
drawerState: DrawerState,
745754
) {
746755
composable<Routes.Home> {
747-
HomeNav(
748-
walletViewModel = walletViewModel,
749-
appViewModel = appViewModel,
750-
activityListViewModel = activityListViewModel,
751-
settingsViewModel = settingsViewModel,
752-
rootNavController = navController,
753-
drawerState = drawerState,
756+
val uiState by walletViewModel.uiState.collectAsStateWithLifecycle()
757+
val hazeState = rememberHazeState()
758+
759+
RequestNotificationPermissions(
760+
onPermissionChange = { granted ->
761+
settingsViewModel.setNotificationPreference(granted)
762+
}
763+
)
764+
Box(
765+
modifier = Modifier
766+
.fillMaxSize()
767+
.hazeSource(hazeState)
768+
) {
769+
HomeScreen(
770+
mainUiState = uiState,
771+
drawerState = drawerState,
772+
rootNavController = navController,
773+
walletNavController = navController,
774+
settingsViewModel = settingsViewModel,
775+
walletViewModel = walletViewModel,
776+
appViewModel = appViewModel,
777+
activityListViewModel = activityListViewModel,
778+
)
779+
}
780+
}
781+
composable<Routes.Savings>(
782+
enterTransition = { Transitions.slideInHorizontally },
783+
exitTransition = { Transitions.slideOutHorizontally },
784+
) {
785+
val hasSeenSpendingIntro by settingsViewModel.hasSeenSpendingIntro.collectAsStateWithLifecycle()
786+
val isGeoBlocked by appViewModel.isGeoBlocked.collectAsStateWithLifecycle()
787+
val onchainActivities by activityListViewModel.onchainActivities.collectAsStateWithLifecycle()
788+
789+
SavingsWalletScreen(
790+
isGeoBlocked = isGeoBlocked,
791+
onchainActivities = onchainActivities.orEmpty(),
792+
onAllActivityButtonClick = { navController.navigateToAllActivity() },
793+
onActivityItemClick = { navController.navigateToActivityItem(it) },
794+
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive) },
795+
onTransferToSpendingClick = {
796+
if (!hasSeenSpendingIntro) {
797+
navController.navigateToTransferSpendingIntro()
798+
} else {
799+
navController.navigateToTransferSpendingAmount()
800+
}
801+
},
802+
onBackClick = { navController.popBackStack() },
803+
)
804+
}
805+
composable<Routes.Spending>(
806+
enterTransition = { Transitions.slideInHorizontally },
807+
exitTransition = { Transitions.slideOutHorizontally },
808+
) {
809+
val hasSeenSavingsIntro by settingsViewModel.hasSeenSavingsIntro.collectAsStateWithLifecycle()
810+
val uiState by walletViewModel.uiState.collectAsStateWithLifecycle()
811+
val lightningActivities by activityListViewModel.lightningActivities.collectAsStateWithLifecycle()
812+
813+
SpendingWalletScreen(
814+
uiState = uiState,
815+
lightningActivities = lightningActivities.orEmpty(),
816+
onAllActivityButtonClick = { navController.navigateToAllActivity() },
817+
onActivityItemClick = { navController.navigateToActivityItem(it) },
818+
onEmptyActivityRowClick = { appViewModel.showSheet(Sheet.Receive) },
819+
onTransferToSavingsClick = {
820+
if (!hasSeenSavingsIntro) {
821+
navController.navigateToTransferSavingsIntro()
822+
} else {
823+
navController.navigateToTransferSavingsAvailability()
824+
}
825+
},
826+
onBackClick = { navController.popBackStack() },
754827
)
755828
}
756829
}
@@ -818,7 +891,8 @@ private fun NavGraphBuilder.profile(
818891
onContinue = {
819892
settingsViewModel.setHasSeenProfileIntro(true)
820893
navController.navigate(Routes.CreateProfile)
821-
}
894+
},
895+
onBackClick = { navController.popBackStack() }
822896
)
823897
}
824898
composableWithDefaultTransitions<Routes.CreateProfile> {
@@ -838,6 +912,9 @@ private fun NavGraphBuilder.shop(
838912
onContinue = {
839913
settingsViewModel.setHasSeenShopIntro(true)
840914
navController.navigate(Routes.ShopDiscover)
915+
},
916+
onBackClick = {
917+
navController.popBackStack()
841918
}
842919
)
843920
}
@@ -1228,7 +1305,8 @@ private fun NavGraphBuilder.widgets(
12281305
onContinue = {
12291306
settingsViewModel.setHasSeenWidgetsIntro(true)
12301307
navController.navigate(Routes.AddWidget)
1231-
}
1308+
},
1309+
onBackClick = {},
12321310
)
12331311
}
12341312
composableWithDefaultTransitions<Routes.AddWidget> {
@@ -1244,6 +1322,7 @@ private fun NavGraphBuilder.widgets(
12441322
}
12451323
},
12461324
fiatSymbol = LocalCurrencies.current.currencySymbol,
1325+
onBackCLick = { navController.popBackStack() }
12471326
)
12481327
}
12491328
composableWithDefaultTransitions<Routes.CalculatorPreview> {
@@ -1558,6 +1637,12 @@ sealed interface Routes {
15581637
@Serializable
15591638
data object Home : Routes
15601639

1640+
@Serializable
1641+
data object Savings : Routes
1642+
1643+
@Serializable
1644+
data object Spending : Routes
1645+
15611646
@Serializable
15621647
data object Settings : Routes
15631648

app/src/main/java/to/bitkit/ui/components/DrawerMenu.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,8 @@ private fun Menu(
138138
label = stringResource(R.string.wallet__drawer__wallet),
139139
iconRes = R.drawable.ic_coins,
140140
onClick = {
141-
val isOnHome = rootNavController.currentBackStackEntry
142-
?.destination?.hasRoute<Routes.Home>() ?: false
143-
if (!isOnHome) {
144-
rootNavController.navigateToHome()
145-
}
141+
val isInHome = rootNavController.currentBackStackEntry?.destination?.hasRoute<Routes.Home>() ?: false
142+
if (!isInHome) rootNavController.navigateToHome()
146143
scope.launch { drawerState.close() }
147144
},
148145
modifier = Modifier.testTag("DrawerWallet")

app/src/main/java/to/bitkit/ui/screens/profile/ProfileIntroScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ import to.bitkit.ui.utils.withAccent
2626
@Composable
2727
fun ProfileIntroScreen(
2828
onContinue: () -> Unit,
29+
onBackClick: () -> Unit,
2930
) {
3031
ScreenColumn {
3132
AppTopBar(
3233
titleText = stringResource(R.string.slashtags__profile),
33-
onBackClick = null,
34+
onBackClick = onBackClick,
3435
actions = { DrawerNavIcon() },
3536
)
3637

@@ -68,7 +69,8 @@ fun ProfileIntroScreen(
6869
private fun Preview() {
6970
AppThemeSurface {
7071
ProfileIntroScreen(
71-
onContinue = {}
72+
onContinue = {},
73+
onBackClick = {}
7274
)
7375
}
7476
}

app/src/main/java/to/bitkit/ui/screens/shop/ShopIntroScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ import to.bitkit.ui.utils.withAccent
2626
@Composable
2727
fun ShopIntroScreen(
2828
onContinue: () -> Unit,
29+
onBackClick: () -> Unit,
2930
) {
3031
ScreenColumn {
3132
AppTopBar(
3233
titleText = "",
33-
onBackClick = null,
34+
onBackClick = onBackClick,
3435
actions = { DrawerNavIcon() },
3536
)
3637

@@ -66,7 +67,8 @@ fun ShopIntroScreen(
6667
private fun Preview() {
6768
AppThemeSurface {
6869
ShopIntroScreen(
69-
onContinue = {}
70+
onContinue = {},
71+
onBackClick = {},
7072
)
7173
}
7274
}

app/src/main/java/to/bitkit/ui/screens/transfer/TransferIntroScreen.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import to.bitkit.ui.utils.withAccent
3333
@Composable
3434
fun TransferIntroScreen(
3535
onContinueClick: () -> Unit = {},
36+
onBackClick: () -> Unit,
3637
) {
3738
Box(
3839
contentAlignment = Alignment.TopCenter,
@@ -51,7 +52,7 @@ fun TransferIntroScreen(
5152
)
5253
AppTopBar(
5354
titleText = null,
54-
onBackClick = null,
55+
onBackClick = onBackClick,
5556
actions = { DrawerNavIcon() },
5657
)
5758
Column(
@@ -79,6 +80,6 @@ fun TransferIntroScreen(
7980
@Composable
8081
private fun Preview() {
8182
AppThemeSurface {
82-
TransferIntroScreen()
83+
TransferIntroScreen(onBackClick = {})
8384
}
8485
}

0 commit comments

Comments
 (0)