Skip to content

Commit 57784a9

Browse files
authored
Merge pull request #99 from synonymdev/feat/small-fixes
Small fixes and UI tweaks
2 parents 31468be + 3dfc86c commit 57784a9

File tree

6 files changed

+92
-124
lines changed

6 files changed

+92
-124
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
.externalNativeBuild
99
.cxx
1010
local.properties
11+
.cursor
1112

1213
# Secrets
1314
google-services.json

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

Lines changed: 46 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package to.bitkit.ui
22

3+
import androidx.compose.animation.AnimatedContentScope
4+
import androidx.compose.animation.AnimatedContentTransitionScope
5+
import androidx.compose.animation.EnterTransition
6+
import androidx.compose.animation.ExitTransition
37
import androidx.compose.runtime.Composable
48
import androidx.compose.runtime.CompositionLocalProvider
59
import androidx.compose.runtime.DisposableEffect
@@ -16,9 +20,12 @@ import androidx.lifecycle.Lifecycle
1620
import androidx.lifecycle.LifecycleEventObserver
1721
import androidx.lifecycle.compose.LocalLifecycleOwner
1822
import androidx.lifecycle.compose.collectAsStateWithLifecycle
23+
import androidx.navigation.NavBackStackEntry
1924
import androidx.navigation.NavController
25+
import androidx.navigation.NavDeepLink
2026
import androidx.navigation.NavGraphBuilder
2127
import androidx.navigation.NavHostController
28+
import androidx.navigation.NavType
2229
import androidx.navigation.compose.NavHost
2330
import androidx.navigation.compose.composable
2431
import androidx.navigation.compose.navigation
@@ -84,6 +91,7 @@ import to.bitkit.viewmodels.ExternalNodeViewModel
8491
import to.bitkit.viewmodels.MainScreenEffect
8592
import to.bitkit.viewmodels.TransferViewModel
8693
import to.bitkit.viewmodels.WalletViewModel
94+
import kotlin.reflect.KType
8795

8896
@Composable
8997
fun ContentView(
@@ -439,12 +447,7 @@ private fun NavGraphBuilder.settings(
439447
viewModel: WalletViewModel,
440448
navController: NavHostController,
441449
) {
442-
composable<Routes.Settings>(
443-
enterTransition = { screenSlideIn },
444-
exitTransition = { screenScaleOut },
445-
popEnterTransition = { screenScaleIn },
446-
popExitTransition = { screenSlideOut },
447-
) {
450+
composableWithDefaultTransitions<Routes.Settings> {
448451
SettingsScreen(viewModel, navController)
449452
}
450453
}
@@ -462,12 +465,7 @@ private fun NavGraphBuilder.nodeState(
462465
}
463466

464467
private fun NavGraphBuilder.generalSettings(navController: NavHostController) {
465-
composable<Routes.GeneralSettings>(
466-
enterTransition = { screenSlideIn },
467-
exitTransition = { screenScaleOut },
468-
popEnterTransition = { screenScaleIn },
469-
popExitTransition = { screenSlideOut },
470-
) {
468+
composableWithDefaultTransitions<Routes.GeneralSettings> {
471469
GeneralSettingsScreen(navController)
472470
}
473471
}
@@ -476,12 +474,7 @@ private fun NavGraphBuilder.defaultUnitSettings(
476474
currencyViewModel: CurrencyViewModel,
477475
navController: NavHostController,
478476
) {
479-
composable<Routes.DefaultUnitSettings>(
480-
enterTransition = { screenSlideIn },
481-
exitTransition = { screenScaleOut },
482-
popEnterTransition = { screenScaleIn },
483-
popExitTransition = { screenSlideOut },
484-
) {
477+
composableWithDefaultTransitions<Routes.DefaultUnitSettings> {
485478
DefaultUnitSettingsScreen(currencyViewModel, navController)
486479
}
487480
}
@@ -490,64 +483,39 @@ private fun NavGraphBuilder.localCurrencySettings(
490483
currencyViewModel: CurrencyViewModel,
491484
navController: NavHostController,
492485
) {
493-
composable<Routes.LocalCurrencySettings>(
494-
enterTransition = { screenSlideIn },
495-
exitTransition = { screenScaleOut },
496-
popEnterTransition = { screenScaleIn },
497-
popExitTransition = { screenSlideOut },
498-
) {
486+
composableWithDefaultTransitions<Routes.LocalCurrencySettings> {
499487
LocalCurrencySettingsScreen(currencyViewModel, navController)
500488
}
501489
}
502490

503491
private fun NavGraphBuilder.backupSettings(
504492
navController: NavHostController,
505493
) {
506-
composable<Routes.BackupSettings>(
507-
enterTransition = { screenSlideIn },
508-
exitTransition = { screenScaleOut },
509-
popEnterTransition = { screenScaleIn },
510-
popExitTransition = { screenSlideOut },
511-
) {
494+
composableWithDefaultTransitions<Routes.BackupSettings> {
512495
BackupSettingsScreen(navController)
513496
}
514497
}
515498

516499
private fun NavGraphBuilder.backupWalletSettings(
517500
navController: NavHostController,
518501
) {
519-
composable<Routes.BackupWalletSettings>(
520-
enterTransition = { screenSlideIn },
521-
exitTransition = { screenScaleOut },
522-
popEnterTransition = { screenScaleIn },
523-
popExitTransition = { screenSlideOut },
524-
) {
502+
composableWithDefaultTransitions<Routes.BackupWalletSettings> {
525503
BackupWalletScreen(navController)
526504
}
527505
}
528506

529507
private fun NavGraphBuilder.restoreWalletSettings(
530508
navController: NavHostController,
531509
) {
532-
composable<Routes.RestoreWalletSettings>(
533-
enterTransition = { screenSlideIn },
534-
exitTransition = { screenScaleOut },
535-
popEnterTransition = { screenScaleIn },
536-
popExitTransition = { screenSlideOut },
537-
) {
510+
composableWithDefaultTransitions<Routes.RestoreWalletSettings> {
538511
RestoreWalletScreen(navController)
539512
}
540513
}
541514

542515
private fun NavGraphBuilder.channelOrdersSettings(
543516
navController: NavHostController,
544517
) {
545-
composable<Routes.ChannelOrdersSettings>(
546-
enterTransition = { screenSlideIn },
547-
exitTransition = { screenScaleOut },
548-
popEnterTransition = { screenScaleIn },
549-
popExitTransition = { screenSlideOut },
550-
) {
518+
composableWithDefaultTransitions<Routes.ChannelOrdersSettings> {
551519
ChannelOrdersScreen(
552520
onBackClick = { navController.popBackStack() },
553521
onOrderItemClick = { navController.navigateToOrderDetail(it) },
@@ -559,12 +527,7 @@ private fun NavGraphBuilder.channelOrdersSettings(
559527
private fun NavGraphBuilder.orderDetailSettings(
560528
navController: NavHostController,
561529
) {
562-
composable<Routes.OrderDetail>(
563-
enterTransition = { screenSlideIn },
564-
exitTransition = { screenScaleOut },
565-
popEnterTransition = { screenScaleIn },
566-
popExitTransition = { screenSlideOut },
567-
) { navBackEntry ->
530+
composableWithDefaultTransitions<Routes.OrderDetail> { navBackEntry ->
568531
OrderDetailScreen(
569532
orderItem = navBackEntry.toRoute(),
570533
onBackClick = { navController.popBackStack() },
@@ -575,12 +538,7 @@ private fun NavGraphBuilder.orderDetailSettings(
575538
private fun NavGraphBuilder.cjitDetailSettings(
576539
navController: NavHostController,
577540
) {
578-
composable<Routes.CjitDetail>(
579-
enterTransition = { screenSlideIn },
580-
exitTransition = { screenScaleOut },
581-
popEnterTransition = { screenScaleIn },
582-
popExitTransition = { screenSlideOut },
583-
) { navBackEntry ->
541+
composableWithDefaultTransitions<Routes.CjitDetail> { navBackEntry ->
584542
CJitDetailScreen(
585543
cjitItem = navBackEntry.toRoute(),
586544
onBackClick = { navController.popBackStack() },
@@ -592,12 +550,7 @@ private fun NavGraphBuilder.lightning(
592550
viewModel: WalletViewModel,
593551
navController: NavHostController,
594552
) {
595-
composable<Routes.Lightning>(
596-
enterTransition = { screenSlideIn },
597-
exitTransition = { screenScaleOut },
598-
popEnterTransition = { screenScaleIn },
599-
popExitTransition = { screenSlideOut },
600-
) {
553+
composableWithDefaultTransitions<Routes.Lightning> {
601554
LightningSettingsScreen(viewModel, navController)
602555
}
603556
}
@@ -606,25 +559,15 @@ private fun NavGraphBuilder.devSettings(
606559
viewModel: WalletViewModel,
607560
navController: NavHostController,
608561
) {
609-
composable<Routes.DevSettings>(
610-
enterTransition = { screenSlideIn },
611-
exitTransition = { screenScaleOut },
612-
popEnterTransition = { screenScaleIn },
613-
popExitTransition = { screenSlideOut },
614-
) {
562+
composableWithDefaultTransitions<Routes.DevSettings> {
615563
DevSettingsScreen(viewModel, navController)
616564
}
617565
}
618566

619567
private fun NavGraphBuilder.regtestSettings(
620568
navController: NavHostController,
621569
) {
622-
composable<Routes.RegtestSettings>(
623-
enterTransition = { screenSlideIn },
624-
exitTransition = { screenScaleOut },
625-
popEnterTransition = { screenScaleIn },
626-
popExitTransition = { screenSlideOut },
627-
) {
570+
composableWithDefaultTransitions<Routes.RegtestSettings> {
628571
val viewModel = hiltViewModel<BlocktankRegtestViewModel>()
629572
BlocktankRegtestScreen(viewModel, navController)
630573
}
@@ -634,12 +577,7 @@ private fun NavGraphBuilder.allActivity(
634577
viewModel: ActivityListViewModel,
635578
navController: NavHostController,
636579
) {
637-
composable<Routes.AllActivity>(
638-
enterTransition = { screenSlideIn },
639-
exitTransition = { screenScaleOut },
640-
popEnterTransition = { screenScaleIn },
641-
popExitTransition = { screenSlideOut },
642-
) {
580+
composableWithDefaultTransitions<Routes.AllActivity> {
643581
AllActivityScreen(
644582
viewModel = viewModel,
645583
onBackCLick = { navController.popBackStack() },
@@ -652,12 +590,7 @@ private fun NavGraphBuilder.activityItem(
652590
viewModel: ActivityListViewModel,
653591
navController: NavHostController,
654592
) {
655-
composable<Routes.ActivityItem>(
656-
enterTransition = { screenSlideIn },
657-
exitTransition = { screenScaleOut },
658-
popEnterTransition = { screenScaleIn },
659-
popExitTransition = { screenSlideOut },
660-
) { navBackEntry ->
593+
composableWithDefaultTransitions<Routes.ActivityItem> { navBackEntry ->
661594
ActivityItemScreen(
662595
viewModel = viewModel,
663596
activityItem = navBackEntry.toRoute(),
@@ -685,6 +618,29 @@ private fun NavGraphBuilder.qrScanner(
685618
}
686619
// endregion
687620

621+
/**
622+
* Adds the [Composable] to the [NavGraphBuilder] with the default screen transitions.
623+
*/
624+
inline fun <reified T : Any> NavGraphBuilder.composableWithDefaultTransitions(
625+
typeMap: Map<KType, NavType<*>> = emptyMap(),
626+
deepLinks: List<NavDeepLink> = emptyList(),
627+
noinline enterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)? = { screenSlideIn },
628+
noinline exitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)? = { screenScaleOut },
629+
noinline popEnterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition?)? = { screenScaleIn },
630+
noinline popExitTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition?)? = { screenSlideOut },
631+
noinline content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit,
632+
) {
633+
composable<T>(
634+
typeMap = typeMap,
635+
deepLinks = deepLinks,
636+
enterTransition = enterTransition,
637+
exitTransition = exitTransition,
638+
popEnterTransition = popEnterTransition,
639+
popExitTransition = popExitTransition,
640+
content = content,
641+
)
642+
}
643+
688644
// region events
689645
fun NavController.navigateToHome() = navigate(
690646
route = Routes.Home,

0 commit comments

Comments
 (0)