Skip to content

Commit d9a7795

Browse files
committed
feat: move drawer up to ContentView.kt
1 parent 9847059 commit d9a7795

File tree

3 files changed

+112
-96
lines changed

3 files changed

+112
-96
lines changed

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

Lines changed: 104 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package to.bitkit.ui
22

33
import android.content.Intent
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.material3.DrawerValue
7+
import androidx.compose.material3.rememberDrawerState
48
import androidx.compose.runtime.Composable
59
import androidx.compose.runtime.CompositionLocalProvider
610
import androidx.compose.runtime.DisposableEffect
@@ -12,6 +16,7 @@ import androidx.compose.runtime.mutableStateOf
1216
import androidx.compose.runtime.remember
1317
import androidx.compose.runtime.rememberCoroutineScope
1418
import androidx.compose.runtime.setValue
19+
import androidx.compose.ui.Modifier
1520
import androidx.compose.ui.platform.LocalContext
1621
import androidx.core.net.toUri
1722
import androidx.hilt.navigation.compose.hiltViewModel
@@ -38,6 +43,7 @@ import to.bitkit.models.Toast
3843
import to.bitkit.models.WidgetType
3944
import to.bitkit.ui.Routes.ExternalConnection
4045
import to.bitkit.ui.components.AuthCheckScreen
46+
import to.bitkit.ui.components.DrawerMenu
4147
import to.bitkit.ui.components.Sheet
4248
import to.bitkit.ui.components.SheetHost
4349
import to.bitkit.ui.components.TimedSheetType
@@ -183,7 +189,7 @@ fun ContentView(
183189
backupsViewModel: BackupsViewModel,
184190
) {
185191
val navController = rememberNavController()
186-
val drawerState = androidx.compose.material3.rememberDrawerState(initialValue = androidx.compose.material3.DrawerValue.Closed)
192+
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
187193
val context = LocalContext.current
188194
val lifecycle = LocalLifecycleOwner.current.lifecycle
189195

@@ -344,95 +350,112 @@ fun ContentView(
344350
) {
345351
AutoReadClipboardHandler()
346352

347-
val currentSheet by appViewModel.currentSheet.collectAsStateWithLifecycle()
348-
SheetHost(
349-
shouldExpand = currentSheet != null,
350-
onDismiss = { appViewModel.hideSheet() },
351-
sheets = {
352-
when (val sheet = currentSheet) {
353-
null -> Unit
354-
is Sheet.Send -> {
355-
SendSheet(
356-
appViewModel = appViewModel,
357-
walletViewModel = walletViewModel,
358-
startDestination = sheet.route,
359-
)
360-
}
361-
362-
is Sheet.Receive -> {
363-
val walletUiState by walletViewModel.uiState.collectAsState()
364-
ReceiveSheet(
365-
walletState = walletUiState,
366-
navigateToExternalConnection = {
367-
navController.navigate(ExternalConnection())
368-
appViewModel.hideSheet()
369-
}
370-
)
371-
}
372-
373-
is Sheet.ActivityDateRangeSelector -> DateRangeSelectorSheet()
374-
is Sheet.ActivityTagSelector -> TagSelectorSheet()
375-
is Sheet.Pin -> PinSheet(sheet, appViewModel)
376-
is Sheet.Backup -> BackupSheet(sheet, onDismiss = { appViewModel.hideSheet() })
377-
is Sheet.LnurlAuth -> LnurlAuthSheet(sheet, appViewModel)
378-
Sheet.ForceTransfer -> ForceTransferSheet(appViewModel, transferViewModel)
379-
is Sheet.Gift -> GiftSheet(sheet, appViewModel)
380-
is Sheet.TimedSheet -> {
381-
when (sheet.type) {
382-
TimedSheetType.APP_UPDATE -> {
383-
UpdateSheet(onCancel = { appViewModel.dismissTimedSheet() })
384-
}
385-
386-
TimedSheetType.BACKUP -> {
387-
BackupSheet(
388-
sheet = Sheet.Backup(BackupRoute.Intro),
389-
onDismiss = { appViewModel.dismissTimedSheet() }
390-
)
391-
}
353+
val hasSeenWidgetsIntro by settingsViewModel.hasSeenWidgetsIntro.collectAsStateWithLifecycle()
354+
val hasSeenShopIntro by settingsViewModel.hasSeenShopIntro.collectAsStateWithLifecycle()
392355

393-
TimedSheetType.NOTIFICATIONS -> {
394-
BackgroundPaymentsIntroSheet(
395-
onContinue = {
396-
appViewModel.dismissTimedSheet(skipQueue = true)
397-
navController.navigate(Routes.BackgroundPaymentsSettings)
398-
settingsViewModel.setBgPaymentsIntroSeen(true)
399-
},
400-
)
401-
}
356+
val currentSheet by appViewModel.currentSheet.collectAsStateWithLifecycle()
357+
Box(
358+
modifier = Modifier.fillMaxSize()
359+
) {
360+
SheetHost(
361+
shouldExpand = currentSheet != null,
362+
onDismiss = { appViewModel.hideSheet() },
363+
sheets = {
364+
when (val sheet = currentSheet) {
365+
null -> Unit
366+
is Sheet.Send -> {
367+
SendSheet(
368+
appViewModel = appViewModel,
369+
walletViewModel = walletViewModel,
370+
startDestination = sheet.route,
371+
)
372+
}
402373

403-
TimedSheetType.QUICK_PAY -> {
404-
QuickPayIntroSheet(
405-
onContinue = {
406-
appViewModel.dismissTimedSheet(skipQueue = true)
407-
navController.navigate(Routes.QuickPaySettings)
408-
},
409-
)
410-
}
374+
is Sheet.Receive -> {
375+
val walletUiState by walletViewModel.uiState.collectAsState()
376+
ReceiveSheet(
377+
walletState = walletUiState,
378+
navigateToExternalConnection = {
379+
navController.navigate(ExternalConnection())
380+
appViewModel.hideSheet()
381+
}
382+
)
383+
}
411384

412-
TimedSheetType.HIGH_BALANCE -> {
413-
HighBalanceWarningSheet(
414-
understoodClick = { appViewModel.dismissTimedSheet() },
415-
learnMoreClick = {
416-
val intent = Intent(Intent.ACTION_VIEW, Env.STORING_BITCOINS_URL.toUri())
417-
context.startActivity(intent)
418-
appViewModel.dismissTimedSheet(skipQueue = true)
419-
}
420-
)
385+
is Sheet.ActivityDateRangeSelector -> DateRangeSelectorSheet()
386+
is Sheet.ActivityTagSelector -> TagSelectorSheet()
387+
is Sheet.Pin -> PinSheet(sheet, appViewModel)
388+
is Sheet.Backup -> BackupSheet(sheet, onDismiss = { appViewModel.hideSheet() })
389+
is Sheet.LnurlAuth -> LnurlAuthSheet(sheet, appViewModel)
390+
Sheet.ForceTransfer -> ForceTransferSheet(appViewModel, transferViewModel)
391+
is Sheet.Gift -> GiftSheet(sheet, appViewModel)
392+
is Sheet.TimedSheet -> {
393+
when (sheet.type) {
394+
TimedSheetType.APP_UPDATE -> {
395+
UpdateSheet(onCancel = { appViewModel.dismissTimedSheet() })
396+
}
397+
398+
TimedSheetType.BACKUP -> {
399+
BackupSheet(
400+
sheet = Sheet.Backup(BackupRoute.Intro),
401+
onDismiss = { appViewModel.dismissTimedSheet() }
402+
)
403+
}
404+
405+
TimedSheetType.NOTIFICATIONS -> {
406+
BackgroundPaymentsIntroSheet(
407+
onContinue = {
408+
appViewModel.dismissTimedSheet(skipQueue = true)
409+
navController.navigate(Routes.BackgroundPaymentsSettings)
410+
settingsViewModel.setBgPaymentsIntroSeen(true)
411+
},
412+
)
413+
}
414+
415+
TimedSheetType.QUICK_PAY -> {
416+
QuickPayIntroSheet(
417+
onContinue = {
418+
appViewModel.dismissTimedSheet(skipQueue = true)
419+
navController.navigate(Routes.QuickPaySettings)
420+
},
421+
)
422+
}
423+
424+
TimedSheetType.HIGH_BALANCE -> {
425+
HighBalanceWarningSheet(
426+
understoodClick = { appViewModel.dismissTimedSheet() },
427+
learnMoreClick = {
428+
val intent =
429+
Intent(Intent.ACTION_VIEW, Env.STORING_BITCOINS_URL.toUri())
430+
context.startActivity(intent)
431+
appViewModel.dismissTimedSheet(skipQueue = true)
432+
}
433+
)
434+
}
421435
}
422436
}
423437
}
424438
}
439+
) {
440+
RootNavHost(
441+
navController = navController,
442+
drawerState = drawerState,
443+
walletViewModel = walletViewModel,
444+
appViewModel = appViewModel,
445+
activityListViewModel = activityListViewModel,
446+
settingsViewModel = settingsViewModel,
447+
currencyViewModel = currencyViewModel,
448+
transferViewModel = transferViewModel,
449+
)
425450
}
426-
) {
427-
RootNavHost(
428-
navController = navController,
451+
452+
DrawerMenu(
429453
drawerState = drawerState,
430-
walletViewModel = walletViewModel,
431-
appViewModel = appViewModel,
432-
activityListViewModel = activityListViewModel,
433-
settingsViewModel = settingsViewModel,
434-
currencyViewModel = currencyViewModel,
435-
transferViewModel = transferViewModel,
454+
walletNavController = null,
455+
rootNavController = navController,
456+
hasSeenWidgetsIntro = hasSeenWidgetsIntro,
457+
hasSeenShopIntro = hasSeenShopIntro,
458+
modifier = androidx.compose.ui.Modifier.align(androidx.compose.ui.Alignment.TopEnd),
436459
)
437460
}
438461
}

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private val drawerWidth = 200.dp
6060
@Composable
6161
fun DrawerMenu(
6262
drawerState: DrawerState,
63-
walletNavController: NavController,
63+
walletNavController: NavController?,
6464
rootNavController: NavController,
6565
hasSeenWidgetsIntro: Boolean,
6666
hasSeenShopIntro: Boolean,
@@ -119,7 +119,7 @@ fun DrawerMenu(
119119

120120
@Composable
121121
private fun Menu(
122-
walletNavController: NavController,
122+
walletNavController: NavController?,
123123
rootNavController: NavController,
124124
drawerState: DrawerState,
125125
onClickAddWidget: () -> Unit,
@@ -140,6 +140,7 @@ private fun Menu(
140140
label = stringResource(R.string.wallet__drawer__wallet),
141141
iconRes = R.drawable.ic_coins,
142142
onClick = {
143+
rootNavController.navigate(Routes.Home)
143144
scope.launch { drawerState.close() }
144145
},
145146
modifier = Modifier.testTag("DrawerWallet")
@@ -149,7 +150,11 @@ private fun Menu(
149150
label = stringResource(R.string.wallet__drawer__activity),
150151
iconRes = R.drawable.ic_heartbeat,
151152
onClick = {
152-
walletNavController.navigate(HomeRoutes.AllActivity)
153+
if (walletNavController != null) {
154+
walletNavController.navigate(HomeRoutes.AllActivity)
155+
} else {
156+
rootNavController.navigate(Routes.Home)
157+
}
153158
scope.launch { drawerState.close() }
154159
},
155160
modifier = Modifier.testTag("DrawerActivity")

app/src/main/java/to/bitkit/ui/screens/wallets/HomeNav.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import androidx.navigation.compose.rememberNavController
1818
import dev.chrisbanes.haze.hazeSource
1919
import dev.chrisbanes.haze.rememberHazeState
2020
import kotlinx.serialization.Serializable
21-
import to.bitkit.ui.components.DrawerMenu
2221
import to.bitkit.ui.components.Sheet
2322
import to.bitkit.ui.components.TabBar
2423
import to.bitkit.ui.navigateToActivityItem
@@ -46,8 +45,6 @@ fun HomeNav(
4645
drawerState: DrawerState,
4746
) {
4847
val uiState: MainUiState by walletViewModel.uiState.collectAsStateWithLifecycle()
49-
val hasSeenWidgetsIntro: Boolean by settingsViewModel.hasSeenWidgetsIntro.collectAsStateWithLifecycle()
50-
val hasSeenShopIntro: Boolean by settingsViewModel.hasSeenShopIntro.collectAsStateWithLifecycle()
5148
val hazeState = rememberHazeState()
5249

5350
RequestNotificationPermissions(
@@ -84,15 +81,6 @@ fun HomeNav(
8481
onReceiveClick = { appViewModel.showSheet(Sheet.Receive) },
8582
onScanClick = { rootNavController.navigateToScanner() },
8683
)
87-
88-
DrawerMenu(
89-
drawerState = drawerState,
90-
walletNavController = walletNavController,
91-
rootNavController = rootNavController,
92-
hasSeenWidgetsIntro = hasSeenWidgetsIntro,
93-
hasSeenShopIntro = hasSeenShopIntro,
94-
modifier = Modifier.align(Alignment.TopEnd)
95-
)
9684
}
9785
}
9886

0 commit comments

Comments
 (0)