Skip to content

Commit b095b54

Browse files
committed
refactor: to typed receive routes
1 parent a11d114 commit b095b54

File tree

1 file changed

+51
-34
lines changed

1 file changed

+51
-34
lines changed

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

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ import androidx.compose.runtime.remember
1111
import androidx.compose.ui.Modifier
1212
import androidx.lifecycle.compose.collectAsStateWithLifecycle
1313
import androidx.navigation.compose.NavHost
14-
import androidx.navigation.compose.composable
1514
import androidx.navigation.compose.rememberNavController
1615
import kotlinx.coroutines.coroutineScope
1716
import kotlinx.coroutines.launch
17+
import kotlinx.serialization.Serializable
1818
import to.bitkit.repositories.LightningState
1919
import to.bitkit.ui.appViewModel
2020
import to.bitkit.ui.blocktankViewModel
2121
import to.bitkit.ui.screens.wallets.send.AddTagScreen
2222
import to.bitkit.ui.shared.modifiers.sheetHeight
23+
import to.bitkit.ui.utils.composableWithDefaultTransitions
2324
import to.bitkit.ui.walletViewModel
2425
import to.bitkit.viewmodels.MainUiState
2526
import to.bitkit.viewmodels.WalletViewModelEffects
@@ -59,9 +60,9 @@ fun ReceiveSheet(
5960
) {
6061
NavHost(
6162
navController = navController,
62-
startDestination = ReceiveRoutes.QR,
63+
startDestination = ReceiveRoute.QR,
6364
) {
64-
composable(ReceiveRoutes.QR) {
65+
composableWithDefaultTransitions<ReceiveRoute.QR> {
6566
LaunchedEffect(cjitInvoice.value) {
6667
showCreateCjit.value = !cjitInvoice.value.isNullOrBlank()
6768
}
@@ -70,7 +71,7 @@ fun ReceiveSheet(
7071
wallet.walletEffect.collect { effect ->
7172
when (effect) {
7273
WalletViewModelEffects.NavigateGeoBlockScreen -> {
73-
navController.navigate(ReceiveRoutes.LOCATION_BLOCK)
74+
navController.navigate(ReceiveRoute.GeoBlock)
7475
}
7576
}
7677
}
@@ -82,7 +83,7 @@ fun ReceiveSheet(
8283
walletState = walletState,
8384
onCjitToggle = { active ->
8485
when {
85-
active && lightningState.shouldBlockLightning -> navController.navigate(ReceiveRoutes.LOCATION_BLOCK)
86+
active && lightningState.shouldBlockLightning -> navController.navigate(ReceiveRoute.GeoBlock)
8687

8788
!active -> {
8889
showCreateCjit.value = false
@@ -91,57 +92,57 @@ fun ReceiveSheet(
9192

9293
active && cjitInvoice.value == null -> {
9394
showCreateCjit.value = true
94-
navController.navigate(ReceiveRoutes.AMOUNT)
95+
navController.navigate(ReceiveRoute.Amount)
9596
}
9697
}
9798
},
98-
onClickEditInvoice = { navController.navigate(ReceiveRoutes.EDIT_INVOICE) },
99+
onClickEditInvoice = { navController.navigate(ReceiveRoute.EditInvoice) },
99100
onClickReceiveOnSpending = { wallet.toggleReceiveOnSpending() }
100101
)
101102
}
102-
composable(ReceiveRoutes.AMOUNT) {
103+
composableWithDefaultTransitions<ReceiveRoute.Amount> {
103104
ReceiveAmountScreen(
104105
onCjitCreated = { entry ->
105106
cjitEntryDetails.value = entry
106-
navController.navigate(ReceiveRoutes.CONFIRM)
107+
navController.navigate(ReceiveRoute.Confirm)
107108
},
108109
onBack = { navController.popBackStack() },
109110
)
110111
}
111-
composable(ReceiveRoutes.LOCATION_BLOCK) {
112+
composableWithDefaultTransitions<ReceiveRoute.GeoBlock> {
112113
LocationBlockScreen(
113114
onBackPressed = { navController.popBackStack() },
114-
navigateAdvancedSetup = navigateToExternalConnection
115+
navigateAdvancedSetup = navigateToExternalConnection,
115116
)
116117
}
117-
composable(ReceiveRoutes.CONFIRM) {
118+
composableWithDefaultTransitions<ReceiveRoute.Confirm> {
118119
cjitEntryDetails.value?.let { entryDetails ->
119120
ReceiveConfirmScreen(
120121
entry = entryDetails,
121-
onLearnMore = { navController.navigate(ReceiveRoutes.LIQUIDITY) },
122+
onLearnMore = { navController.navigate(ReceiveRoute.Liquidity) },
122123
onContinue = { invoice ->
123124
cjitInvoice.value = invoice
124-
navController.navigate(ReceiveRoutes.QR) { popUpTo(ReceiveRoutes.QR) { inclusive = true } }
125+
navController.navigate(ReceiveRoute.QR) { popUpTo(ReceiveRoute.QR) { inclusive = true } }
125126
},
126127
onBack = { navController.popBackStack() },
127128
)
128129
}
129130
}
130-
composable(ReceiveRoutes.CONFIRM_INCREASE_INBOUND) {
131+
composableWithDefaultTransitions<ReceiveRoute.ConfirmIncreaseInbound> {
131132
cjitEntryDetails.value?.let { entryDetails ->
132133
ReceiveConfirmScreen(
133134
entry = entryDetails,
134-
onLearnMore = { navController.navigate(ReceiveRoutes.LIQUIDITY_ADDITIONAL) },
135+
onLearnMore = { navController.navigate(ReceiveRoute.LiquidityAdditional) },
135136
onContinue = { invoice ->
136137
cjitInvoice.value = invoice
137-
navController.navigate(ReceiveRoutes.QR) { popUpTo(ReceiveRoutes.QR) { inclusive = true } }
138+
navController.navigate(ReceiveRoute.QR) { popUpTo(ReceiveRoute.QR) { inclusive = true } }
138139
},
139140
isAdditional = true,
140141
onBack = { navController.popBackStack() },
141142
)
142143
}
143144
}
144-
composable(ReceiveRoutes.LIQUIDITY) {
145+
composableWithDefaultTransitions<ReceiveRoute.Liquidity> {
145146
cjitEntryDetails.value?.let { entryDetails ->
146147
ReceiveLiquidityScreen(
147148
entry = entryDetails,
@@ -150,7 +151,7 @@ fun ReceiveSheet(
150151
)
151152
}
152153
}
153-
composable(ReceiveRoutes.LIQUIDITY_ADDITIONAL) {
154+
composableWithDefaultTransitions<ReceiveRoute.LiquidityAdditional> {
154155
cjitEntryDetails.value?.let { entryDetails ->
155156
ReceiveLiquidityScreen(
156157
entry = entryDetails,
@@ -160,7 +161,7 @@ fun ReceiveSheet(
160161
)
161162
}
162163
}
163-
composable(ReceiveRoutes.EDIT_INVOICE) {
164+
composableWithDefaultTransitions<ReceiveRoute.EditInvoice> {
164165
val walletUiState by wallet.walletState.collectAsStateWithLifecycle()
165166
EditInvoiceScreen(
166167
walletUiState = walletUiState,
@@ -169,7 +170,7 @@ fun ReceiveSheet(
169170
wallet.updateBip21Invoice(amountSats = sats)
170171
},
171172
onClickAddTag = {
172-
navController.navigate(ReceiveRoutes.ADD_TAG)
173+
navController.navigate(ReceiveRoute.AddTag)
173174
},
174175
onClickTag = { tagToRemove ->
175176
wallet.removeTag(tagToRemove)
@@ -182,11 +183,11 @@ fun ReceiveSheet(
182183
},
183184
navigateReceiveConfirm = { entry ->
184185
cjitEntryDetails.value = entry
185-
navController.navigate(ReceiveRoutes.CONFIRM_INCREASE_INBOUND)
186+
navController.navigate(ReceiveRoute.ConfirmIncreaseInbound)
186187
}
187188
)
188189
}
189-
composable(ReceiveRoutes.ADD_TAG) {
190+
composableWithDefaultTransitions<ReceiveRoute.AddTag> {
190191
AddTagScreen(
191192
onBack = {
192193
navController.popBackStack()
@@ -196,20 +197,36 @@ fun ReceiveSheet(
196197
navController.popBackStack()
197198
}
198199
)
199-
200200
}
201201
}
202202
}
203203
}
204204

205-
private object ReceiveRoutes {
206-
const val QR = "qr"
207-
const val AMOUNT = "amount"
208-
const val CONFIRM = "confirm"
209-
const val CONFIRM_INCREASE_INBOUND = "confirm_increase_inbound"
210-
const val LIQUIDITY = "liquidity"
211-
const val LIQUIDITY_ADDITIONAL = "liquidity_additional"
212-
const val EDIT_INVOICE = "edit_invoice"
213-
const val ADD_TAG = "add_tag"
214-
const val LOCATION_BLOCK = "location_block"
205+
sealed interface ReceiveRoute {
206+
@Serializable
207+
data object QR : ReceiveRoute
208+
209+
@Serializable
210+
data object Amount : ReceiveRoute
211+
212+
@Serializable
213+
data object Confirm : ReceiveRoute
214+
215+
@Serializable
216+
data object ConfirmIncreaseInbound : ReceiveRoute
217+
218+
@Serializable
219+
data object Liquidity : ReceiveRoute
220+
221+
@Serializable
222+
data object LiquidityAdditional : ReceiveRoute
223+
224+
@Serializable
225+
data object EditInvoice : ReceiveRoute
226+
227+
@Serializable
228+
data object AddTag : ReceiveRoute
229+
230+
@Serializable
231+
data object GeoBlock : ReceiveRoute
215232
}

0 commit comments

Comments
 (0)