Skip to content

Commit db934ba

Browse files
authored
Merge pull request #189 from synonymdev/feat/advanced-settings
Advanced Settings Screen overview
2 parents b9abd81 + 2274bef commit db934ba

20 files changed

+1078
-44
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package to.bitkit.models
2+
3+
import uniffi.bitkitcore.AddressType
4+
5+
data class AddressTypeInfo(
6+
val path: String,
7+
val name: String,
8+
val shortName: String,
9+
val description: String,
10+
val example: String,
11+
)
12+
13+
fun AddressType.addressTypeInfo(): AddressTypeInfo = when (this) {
14+
AddressType.P2TR -> AddressTypeInfo(
15+
path = "m/86'/0'/0'/0/0",
16+
name = "Taproot",
17+
shortName = "Taproot",
18+
description = "Taproot Address",
19+
example = "(bc1px...)",
20+
)
21+
22+
AddressType.P2WPKH -> AddressTypeInfo(
23+
path = "m/84'/0'/0'/0/0",
24+
name = "Native Segwit Bech32",
25+
shortName = "Native Segwit",
26+
description = "Pay-to-witness-public-key-hash",
27+
example = "(bc1x...)",
28+
)
29+
30+
AddressType.P2SH -> AddressTypeInfo(
31+
path = "m/49'/0'/0'/0/0",
32+
name = "Nested Segwit",
33+
shortName = "Segwit",
34+
description = "Pay-to-Script-Hash",
35+
example = "(3x...)",
36+
)
37+
38+
AddressType.P2PKH -> AddressTypeInfo(
39+
path = "m/44'/0'/0'/0/0",
40+
name = "Legacy",
41+
shortName = "Legacy",
42+
description = "Pay-to-public-key-hash",
43+
example = "(1x...)",
44+
)
45+
46+
else -> AddressTypeInfo(
47+
path = "",
48+
name = "Unknown",
49+
shortName = "Unknown",
50+
description = "Unknown",
51+
example = "",
52+
)
53+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package to.bitkit.models
2+
3+
import org.lightningdevkit.ldknode.Network
4+
5+
fun Network.networkUiText(): String = when (this) {
6+
Network.BITCOIN -> "Mainnet"
7+
Network.TESTNET -> "Testnet"
8+
Network.SIGNET -> "Signet"
9+
Network.REGTEST -> "Regtest"
10+
}

app/src/main/java/to/bitkit/models/TransactionSpeed.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package to.bitkit.models
22

3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.ui.res.stringResource
35
import kotlinx.serialization.KSerializer
46
import kotlinx.serialization.Serializable
57
import kotlinx.serialization.descriptors.PrimitiveKind
68
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
79
import kotlinx.serialization.descriptors.SerialDescriptor
810
import kotlinx.serialization.encoding.Decoder
911
import kotlinx.serialization.encoding.Encoder
12+
import to.bitkit.R
1013

1114
@Serializable(with = TransactionSpeedSerializer::class)
1215
sealed class TransactionSpeed {
@@ -51,3 +54,13 @@ private object TransactionSpeedSerializer : KSerializer<TransactionSpeed> {
5154
return TransactionSpeed.fromString(decoder.decodeString())
5255
}
5356
}
57+
58+
@Composable
59+
fun TransactionSpeed.transactionSpeedUiText(): String {
60+
return when (this) {
61+
is TransactionSpeed.Fast -> stringResource(R.string.settings__fee__fast__value)
62+
is TransactionSpeed.Medium -> stringResource(R.string.settings__fee__normal__value)
63+
is TransactionSpeed.Slow -> stringResource(R.string.settings__fee__slow__value)
64+
is TransactionSpeed.Custom -> stringResource(R.string.settings__fee__custom__value)
65+
}
66+
}

app/src/main/java/to/bitkit/repositories/WalletRepo.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import to.bitkit.utils.Logger
2828
import to.bitkit.utils.ServiceError
2929
import uniffi.bitkitcore.Activity
3030
import uniffi.bitkitcore.ActivityFilter
31+
import uniffi.bitkitcore.AddressType
3132
import uniffi.bitkitcore.PaymentType
3233
import uniffi.bitkitcore.Scanner
3334
import uniffi.bitkitcore.decode
@@ -540,4 +541,5 @@ data class WalletState(
540541
val walletExists: Boolean = false,
541542
val isRestoringWallet: Boolean = false,
542543
val balanceDetails: BalanceDetails? = null, //TODO KEEP ONLY BalanceState IF POSSIBLE
544+
val addressType: AddressType = AddressType.P2WPKH,
543545
)

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

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ import to.bitkit.ui.settings.LogsScreen
103103
import to.bitkit.ui.settings.OrderDetailScreen
104104
import to.bitkit.ui.settings.SecuritySettingsScreen
105105
import to.bitkit.ui.settings.SettingsScreen
106+
import to.bitkit.ui.settings.advanced.AddressTypePreferenceScreen
107+
import to.bitkit.ui.settings.advanced.AddressViewerScreen
108+
import to.bitkit.ui.settings.advanced.BitcoinNetworkSelectionScreen
109+
import to.bitkit.ui.settings.advanced.CoinSelectPreferenceScreen
110+
import to.bitkit.ui.settings.advanced.ElectrumConfigScreen
111+
import to.bitkit.ui.settings.advanced.GapLimitScreen
112+
import to.bitkit.ui.settings.advanced.PaymentPreferenceScreen
113+
import to.bitkit.ui.settings.advanced.RgsServerScreen
114+
import to.bitkit.ui.settings.advanced.WebRelayScreen
106115
import to.bitkit.ui.settings.backups.BackupNavigationSheet
107116
import to.bitkit.ui.settings.backups.BackupSheet
108117
import to.bitkit.ui.settings.backups.ResetAndRestoreScreen
@@ -415,7 +424,7 @@ private fun RootNavHost(
415424
channelOrdersSettings(navController)
416425
orderDetailSettings(navController)
417426
cjitDetailSettings(navController)
418-
lightning(walletViewModel, navController)
427+
lightningConnections(walletViewModel, navController)
419428
devSettings(walletViewModel, navController)
420429
regtestSettings(navController)
421430
activityItem(activityListViewModel, navController)
@@ -729,6 +738,33 @@ private fun NavGraphBuilder.advancedSettings(navController: NavHostController) {
729738
composableWithDefaultTransitions<Routes.AdvancedSettings> {
730739
AdvancedSettingsScreen(navController)
731740
}
741+
composableWithDefaultTransitions<Routes.AddressTypePreference> {
742+
AddressTypePreferenceScreen(navController)
743+
}
744+
composableWithDefaultTransitions<Routes.CoinSelectPreference> {
745+
CoinSelectPreferenceScreen(navController)
746+
}
747+
composableWithDefaultTransitions<Routes.PaymentPreference> {
748+
PaymentPreferenceScreen(navController)
749+
}
750+
composableWithDefaultTransitions<Routes.GapLimit> {
751+
GapLimitScreen(navController)
752+
}
753+
composableWithDefaultTransitions<Routes.ElectrumConfig> {
754+
ElectrumConfigScreen(navController)
755+
}
756+
composableWithDefaultTransitions<Routes.RgsServer> {
757+
RgsServerScreen(navController)
758+
}
759+
composableWithDefaultTransitions<Routes.WebRelay> {
760+
WebRelayScreen(navController)
761+
}
762+
composableWithDefaultTransitions<Routes.BitcoinNetworkSelection> {
763+
BitcoinNetworkSelectionScreen(navController)
764+
}
765+
composableWithDefaultTransitions<Routes.AddressViewer> {
766+
AddressViewerScreen(navController)
767+
}
732768
}
733769

734770
private fun NavGraphBuilder.aboutSettings(navController: NavHostController) {
@@ -854,11 +890,11 @@ private fun NavGraphBuilder.cjitDetailSettings(
854890
}
855891
}
856892

857-
private fun NavGraphBuilder.lightning(
893+
private fun NavGraphBuilder.lightningConnections(
858894
viewModel: WalletViewModel,
859895
navController: NavHostController,
860896
) {
861-
composableWithDefaultTransitions<Routes.Lightning> {
897+
composableWithDefaultTransitions<Routes.LightningConnections> {
862898
LightningSettingsScreen(viewModel, navController)
863899
}
864900
}
@@ -1258,10 +1294,6 @@ fun NavController.navigateToCjitDetail(id: String) = navigate(
12581294
route = Routes.CjitDetail(id),
12591295
)
12601296

1261-
fun NavController.navigateToLightning() = navigate(
1262-
route = Routes.Lightning,
1263-
)
1264-
12651297
fun NavController.navigateToDevSettings() = navigate(
12661298
route = Routes.DevSettings,
12671299
)
@@ -1368,6 +1400,33 @@ object Routes {
13681400
@Serializable
13691401
data object AdvancedSettings
13701402

1403+
@Serializable
1404+
data object AddressTypePreference
1405+
1406+
@Serializable
1407+
data object CoinSelectPreference
1408+
1409+
@Serializable
1410+
data object PaymentPreference
1411+
1412+
@Serializable
1413+
data object GapLimit
1414+
1415+
@Serializable
1416+
data object ElectrumConfig
1417+
1418+
@Serializable
1419+
data object RgsServer
1420+
1421+
@Serializable
1422+
data object WebRelay
1423+
1424+
@Serializable
1425+
data object BitcoinNetworkSelection
1426+
1427+
@Serializable
1428+
data object AddressViewer
1429+
13711430
@Serializable
13721431
data object AboutSettings
13731432

@@ -1428,7 +1487,7 @@ object Routes {
14281487
data class CjitDetail(val id: String)
14291488

14301489
@Serializable
1431-
data object Lightning
1490+
data object LightningConnections
14321491

14331492
@Serializable
14341493
data object DevSettings

app/src/main/java/to/bitkit/ui/screens/DevSettingsScreen.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import to.bitkit.ui.components.settings.SettingsTextButtonRow
1919
import to.bitkit.ui.currencyViewModel
2020
import to.bitkit.ui.navigateToChannelOrdersSettings
2121
import to.bitkit.ui.navigateToHome
22-
import to.bitkit.ui.navigateToLightning
2322
import to.bitkit.ui.navigateToLogs
2423
import to.bitkit.ui.navigateToRegtestSettings
2524
import to.bitkit.ui.scaffold.AppTopBar
@@ -48,7 +47,6 @@ fun DevSettingsScreen(
4847
.padding(horizontal = 16.dp)
4948
.verticalScroll(rememberScrollState())
5049
) {
51-
SettingsButtonRow("Lightning") { navController.navigateToLightning() }
5250
SettingsButtonRow("Channel Orders") { navController.navigateToChannelOrdersSettings() }
5351
SettingsButtonRow("Logs") { navController.navigateToLogs() }
5452

0 commit comments

Comments
 (0)