Skip to content

Commit ad69db7

Browse files
authored
Merge pull request #435 from synonymdev/chore/move-to-parent
Move sheets to parent view
2 parents 2045d30 + 90aedea commit ad69db7

File tree

16 files changed

+472
-519
lines changed

16 files changed

+472
-519
lines changed

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

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

3+
import android.content.Intent
34
import androidx.compose.runtime.Composable
45
import androidx.compose.runtime.CompositionLocalProvider
56
import androidx.compose.runtime.DisposableEffect
@@ -12,6 +13,7 @@ import androidx.compose.runtime.remember
1213
import androidx.compose.runtime.rememberCoroutineScope
1314
import androidx.compose.runtime.setValue
1415
import androidx.compose.ui.platform.LocalContext
16+
import androidx.core.net.toUri
1517
import androidx.hilt.navigation.compose.hiltViewModel
1618
import androidx.lifecycle.Lifecycle
1719
import androidx.lifecycle.LifecycleEventObserver
@@ -29,13 +31,16 @@ import androidx.navigation.toRoute
2931
import kotlinx.coroutines.delay
3032
import kotlinx.coroutines.launch
3133
import kotlinx.serialization.Serializable
34+
import to.bitkit.env.Env
3235
import to.bitkit.models.NewTransactionSheetDetails
3336
import to.bitkit.models.NodeLifecycleState
3437
import to.bitkit.models.Toast
3538
import to.bitkit.models.WidgetType
39+
import to.bitkit.ui.Routes.ExternalConnection
3640
import to.bitkit.ui.components.AuthCheckScreen
3741
import to.bitkit.ui.components.Sheet
3842
import to.bitkit.ui.components.SheetHost
43+
import to.bitkit.ui.components.TimedSheetType
3944
import to.bitkit.ui.onboarding.InitializingWalletView
4045
import to.bitkit.ui.onboarding.WalletRestoreErrorView
4146
import to.bitkit.ui.onboarding.WalletRestoreSuccessView
@@ -138,11 +143,16 @@ import to.bitkit.ui.settings.support.ReportIssueScreen
138143
import to.bitkit.ui.settings.support.SupportScreen
139144
import to.bitkit.ui.settings.transactionSpeed.CustomFeeSettingsScreen
140145
import to.bitkit.ui.settings.transactionSpeed.TransactionSpeedSettingsScreen
146+
import to.bitkit.ui.sheets.BackgroundPaymentsIntroSheet
147+
import to.bitkit.ui.sheets.BackupRoute
141148
import to.bitkit.ui.sheets.BackupSheet
142149
import to.bitkit.ui.sheets.ForceTransferSheet
150+
import to.bitkit.ui.sheets.HighBalanceWarningSheet
143151
import to.bitkit.ui.sheets.LnurlAuthSheet
144152
import to.bitkit.ui.sheets.PinSheet
153+
import to.bitkit.ui.sheets.QuickPayIntroSheet
145154
import to.bitkit.ui.sheets.SendSheet
155+
import to.bitkit.ui.sheets.UpdateSheet
146156
import to.bitkit.ui.theme.TRANSITION_SHEET_MS
147157
import to.bitkit.ui.utils.AutoReadClipboardHandler
148158
import to.bitkit.ui.utils.Transitions
@@ -321,7 +331,7 @@ fun ContentView(
321331
) {
322332
AutoReadClipboardHandler()
323333

324-
val currentSheet by appViewModel.currentSheet
334+
val currentSheet by appViewModel.currentSheet.collectAsStateWithLifecycle()
325335
SheetHost(
326336
shouldExpand = currentSheet != null,
327337
onDismiss = { appViewModel.hideSheet() },
@@ -341,7 +351,7 @@ fun ContentView(
341351
ReceiveSheet(
342352
walletState = walletUiState,
343353
navigateToExternalConnection = {
344-
navController.navigate(Routes.ExternalConnection())
354+
navController.navigate(ExternalConnection())
345355
appViewModel.hideSheet()
346356
}
347357
)
@@ -353,6 +363,50 @@ fun ContentView(
353363
is Sheet.Backup -> BackupSheet(sheet, onDismiss = { appViewModel.hideSheet() })
354364
is Sheet.LnurlAuth -> LnurlAuthSheet(sheet, appViewModel)
355365
Sheet.ForceTransfer -> ForceTransferSheet(appViewModel, transferViewModel)
366+
is Sheet.TimedSheet -> {
367+
when (sheet.type) {
368+
TimedSheetType.APP_UPDATE -> {
369+
UpdateSheet(onCancel = { appViewModel.dismissTimedSheet() })
370+
}
371+
372+
TimedSheetType.BACKUP -> {
373+
BackupSheet(
374+
sheet = Sheet.Backup(BackupRoute.Intro),
375+
onDismiss = { appViewModel.dismissTimedSheet() }
376+
)
377+
}
378+
379+
TimedSheetType.NOTIFICATIONS -> {
380+
BackgroundPaymentsIntroSheet(
381+
onContinue = {
382+
appViewModel.dismissTimedSheet(skipQueue = true)
383+
navController.navigate(Routes.BackgroundPaymentsSettings)
384+
settingsViewModel.setBgPaymentsIntroSeen(true)
385+
},
386+
)
387+
}
388+
389+
TimedSheetType.QUICK_PAY -> {
390+
QuickPayIntroSheet(
391+
onContinue = {
392+
appViewModel.dismissTimedSheet(skipQueue = true)
393+
navController.navigate(Routes.QuickPaySettings)
394+
},
395+
)
396+
}
397+
398+
TimedSheetType.HIGH_BALANCE -> {
399+
HighBalanceWarningSheet(
400+
understoodClick = { appViewModel.dismissTimedSheet() },
401+
learnMoreClick = {
402+
val intent = Intent(Intent.ACTION_VIEW, Env.STORING_BITCOINS_URL.toUri())
403+
context.startActivity(intent)
404+
appViewModel.dismissTimedSheet(skipQueue = true)
405+
}
406+
)
407+
}
408+
}
409+
}
356410
}
357411
}
358412
) {

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,17 @@ sealed interface Sheet {
3939
data object ActivityTagSelector : Sheet
4040
data class LnurlAuth(val domain: String, val lnurl: String, val k1: String) : Sheet
4141
data object ForceTransfer : Sheet
42+
43+
data class TimedSheet(val type: TimedSheetType) : Sheet
44+
}
45+
46+
/**@param priority Priority levels for timed sheets (higher number = higher priority)*/
47+
enum class TimedSheetType(val priority: Int) {
48+
APP_UPDATE(priority = 5),
49+
BACKUP(priority = 4),
50+
NOTIFICATIONS(priority = 3),
51+
QUICK_PAY(priority = 2),
52+
HIGH_BALANCE(priority = 1)
4253
}
4354

4455
@OptIn(ExperimentalMaterial3Api::class)

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,11 @@ fun HomeNav(
5050
val hasSeenShopIntro: Boolean by settingsViewModel.hasSeenShopIntro.collectAsStateWithLifecycle()
5151
val hazeState = rememberHazeState()
5252

53-
RequestNotificationPermissions { granted ->
54-
settingsViewModel.setNotificationPreference(granted)
55-
}
53+
RequestNotificationPermissions(
54+
onPermissionChange = { granted ->
55+
settingsViewModel.setNotificationPreference(granted)
56+
}
57+
)
5658

5759
Box(
5860
modifier = Modifier.fillMaxSize()

0 commit comments

Comments
 (0)