Skip to content

Commit ebf958f

Browse files
committed
refactor: remove external node custom fee #548
Remove SetCustomFee feature from External Node flow as it had no functional effect on the channel opening transaction fee. - Remove ExternalFeeCustomScreen and related navigation - Simplify ExternalConfirmScreen network fee display - Remove customFeeRate state from ExternalNodeViewModel - Update e2e-test-ids.md to mark SetCustomFee as descoped
1 parent b10afde commit ebf958f

File tree

5 files changed

+6
-266
lines changed

5 files changed

+6
-266
lines changed

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ import to.bitkit.ui.screens.transfer.TransferIntroScreen
8989
import to.bitkit.ui.screens.transfer.external.ExternalAmountScreen
9090
import to.bitkit.ui.screens.transfer.external.ExternalConfirmScreen
9191
import to.bitkit.ui.screens.transfer.external.ExternalConnectionScreen
92-
import to.bitkit.ui.screens.transfer.external.ExternalFeeCustomScreen
9392
import to.bitkit.ui.screens.transfer.external.ExternalNodeViewModel
9493
import to.bitkit.ui.screens.transfer.external.ExternalSuccessScreen
9594
import to.bitkit.ui.screens.transfer.external.LnurlChannelScreen
@@ -735,7 +734,6 @@ private fun RootNavHost(
735734
walletViewModel.refreshState()
736735
navController.navigate(Routes.ExternalSuccess)
737736
},
738-
onNetworkFeeClick = { navController.navigate(Routes.ExternalFeeCustom) },
739737
onBackClick = { navController.popBackStack() },
740738
)
741739
}
@@ -752,15 +750,6 @@ private fun RootNavHost(
752750
onContinue = { navController.navigateToHome() },
753751
)
754752
}
755-
composableWithDefaultTransitions<Routes.ExternalFeeCustom> {
756-
val parentEntry = remember(it) { navController.getBackStackEntry(Routes.ExternalNav) }
757-
val viewModel = hiltViewModel<ExternalNodeViewModel>(parentEntry)
758-
759-
ExternalFeeCustomScreen(
760-
viewModel = viewModel,
761-
onBack = { navController.popBackStack() },
762-
)
763-
}
764753
}
765754
}
766755
}
@@ -1913,9 +1902,6 @@ sealed interface Routes {
19131902
@Serializable
19141903
data object ExternalSuccess : Routes
19151904

1916-
@Serializable
1917-
data object ExternalFeeCustom : Routes
1918-
19191905
@Serializable
19201906
data class LnurlChannel(val uri: String, val callback: String, val k1: String) : Routes
19211907

app/src/main/java/to/bitkit/ui/screens/transfer/external/ExternalConfirmScreen.kt

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,36 @@
11
package to.bitkit.ui.screens.transfer.external
22

3-
import androidx.compose.animation.AnimatedVisibility
4-
import androidx.compose.animation.fadeIn
5-
import androidx.compose.animation.fadeOut
63
import androidx.compose.foundation.Image
74
import androidx.compose.foundation.layout.Arrangement
85
import androidx.compose.foundation.layout.Column
96
import androidx.compose.foundation.layout.IntrinsicSize
107
import androidx.compose.foundation.layout.Row
118
import androidx.compose.foundation.layout.Spacer
12-
import androidx.compose.foundation.layout.fillMaxHeight
139
import androidx.compose.foundation.layout.fillMaxSize
1410
import androidx.compose.foundation.layout.height
1511
import androidx.compose.foundation.layout.padding
1612
import androidx.compose.foundation.layout.size
17-
import androidx.compose.foundation.layout.width
1813
import androidx.compose.foundation.rememberScrollState
1914
import androidx.compose.foundation.verticalScroll
20-
import androidx.compose.material3.Icon
2115
import androidx.compose.runtime.Composable
2216
import androidx.compose.runtime.LaunchedEffect
2317
import androidx.compose.runtime.collectAsState
2418
import androidx.compose.runtime.getValue
25-
import androidx.compose.ui.Alignment
2619
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
2720
import androidx.compose.ui.Modifier
2821
import androidx.compose.ui.layout.ContentScale
29-
import androidx.compose.ui.platform.testTag
3022
import androidx.compose.ui.res.painterResource
3123
import androidx.compose.ui.res.stringResource
3224
import androidx.compose.ui.tooling.preview.Preview
3325
import androidx.compose.ui.unit.dp
3426
import to.bitkit.R
35-
import to.bitkit.ui.components.Caption13Up
3627
import to.bitkit.ui.components.Display
3728
import to.bitkit.ui.components.FeeInfo
38-
import to.bitkit.ui.components.MoneySSB
3929
import to.bitkit.ui.components.SwipeToConfirm
4030
import to.bitkit.ui.scaffold.AppTopBar
4131
import to.bitkit.ui.scaffold.DrawerNavIcon
4232
import to.bitkit.ui.scaffold.ScreenColumn
4333
import to.bitkit.ui.screens.transfer.external.ExternalNodeContract.SideEffect
44-
import to.bitkit.ui.shared.modifiers.clickableAlpha
4534
import to.bitkit.ui.theme.AppThemeSurface
4635
import to.bitkit.ui.theme.Colors
4736
import to.bitkit.ui.utils.withAccent
@@ -50,7 +39,6 @@ import to.bitkit.ui.utils.withAccent
5039
fun ExternalConfirmScreen(
5140
viewModel: ExternalNodeViewModel,
5241
onConfirm: () -> Unit,
53-
onNetworkFeeClick: () -> Unit,
5442
onBackClick: () -> Unit,
5543
) {
5644
val uiState by viewModel.uiState.collectAsState()
@@ -67,7 +55,6 @@ fun ExternalConfirmScreen(
6755
Content(
6856
uiState = uiState,
6957
onConfirm = viewModel::onConfirm,
70-
onNetworkFeeClick = onNetworkFeeClick,
7158
onBackClick = onBackClick,
7259
)
7360
}
@@ -76,7 +63,6 @@ fun ExternalConfirmScreen(
7663
private fun Content(
7764
uiState: ExternalNodeContract.UiState,
7865
onConfirm: () -> Unit = {},
79-
onNetworkFeeClick: () -> Unit = {},
8066
onBackClick: () -> Unit = {},
8167
) {
8268
ScreenColumn {
@@ -103,32 +89,10 @@ private fun Content(
10389
horizontalArrangement = Arrangement.spacedBy(16.dp),
10490
modifier = Modifier.height(IntrinsicSize.Min)
10591
) {
106-
Column(
107-
modifier = Modifier
108-
.fillMaxHeight()
109-
.weight(1f)
110-
.padding(top = 16.dp)
111-
.clickableAlpha(onClick = onNetworkFeeClick)
112-
.testTag("SetCustomFee")
113-
) {
114-
Caption13Up(
115-
text = stringResource(R.string.lightning__spending_confirm__network_fee),
116-
color = Colors.White64,
117-
)
118-
Spacer(modifier = Modifier.height(8.dp))
119-
120-
AnimatedVisibility(visible = networkFee > 0L, enter = fadeIn(), exit = fadeOut()) {
121-
Row(verticalAlignment = Alignment.CenterVertically) {
122-
MoneySSB(sats = networkFee)
123-
Spacer(modifier = Modifier.width(4.dp))
124-
Icon(
125-
painterResource(R.drawable.ic_pencil_simple),
126-
contentDescription = null,
127-
modifier = Modifier.size(16.dp)
128-
)
129-
}
130-
}
131-
}
92+
FeeInfo(
93+
label = stringResource(R.string.lightning__spending_confirm__network_fee),
94+
amount = networkFee,
95+
)
13296
FeeInfo(
13397
label = stringResource(R.string.lightning__spending_confirm__lsp_fee),
13498
amount = serviceFee,

app/src/main/java/to/bitkit/ui/screens/transfer/external/ExternalFeeCustomScreen.kt

Lines changed: 0 additions & 187 deletions
This file was deleted.

app/src/main/java/to/bitkit/ui/screens/transfer/external/ExternalNodeViewModel.kt

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import to.bitkit.ext.WatchResult
2121
import to.bitkit.ext.of
2222
import to.bitkit.ext.watchUntil
2323
import to.bitkit.models.Toast
24-
import to.bitkit.models.TransactionSpeed
2524
import to.bitkit.models.TransferType
2625
import to.bitkit.models.formatToModernDisplay
2726
import to.bitkit.repositories.LightningRepo
@@ -118,34 +117,13 @@ class ExternalNodeViewModel @Inject constructor(
118117
fun onAmountContinue() {
119118
viewModelScope.launch {
120119
val speed = settingsStore.data.first().defaultTransactionSpeed
121-
val defaultSatsPerVbyte = lightningRepo.getFeeRateForSpeed(speed).getOrThrow().toUInt()
122-
_uiState.update {
123-
it.copy(
124-
customFeeRate = defaultSatsPerVbyte,
125-
networkFee = 0L,
126-
)
127-
}
128-
updateNetworkFee()
129-
}
130-
}
131-
132-
fun onCustomFeeRateChange(feeRate: UInt) {
133-
_uiState.update { it.copy(customFeeRate = feeRate) }
134-
updateNetworkFee()
135-
}
136-
137-
private fun updateNetworkFee() {
138-
viewModelScope.launch {
139120
val amountSats = _uiState.value.amount.sats
140-
val customFeeRate = _uiState.value.customFeeRate
141121

142-
if (amountSats <= 0 || customFeeRate == 0u) {
122+
if (amountSats <= 0) {
143123
_uiState.update { it.copy(networkFee = 0L) }
144124
return@launch
145125
}
146126

147-
val speed = customFeeRate?.let { TransactionSpeed.Custom(it) }
148-
149127
val fee = lightningRepo.calculateTotalFee(
150128
amountSats = amountSats.toULong(),
151129
speed = speed,
@@ -219,7 +197,6 @@ interface ExternalNodeContract {
219197
val peer: PeerDetails? = null,
220198
val amount: Amount = Amount(),
221199
val networkFee: Long = 0,
222-
val customFeeRate: UInt? = null,
223200
) {
224201
data class Amount(
225202
val sats: Long = 0,

docs/e2e-test-ids.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ Legend:
634634
| Send ||
635635
| SendAmountNumberPad ||
636636
| SendSuccess ||
637-
| SetCustomFee | |
637+
| SetCustomFee | 🚫 |
638638
| SpendingAdvanced ||
639639
| SpendingAdvancedContinue ||
640640
| SpendingAdvancedDefault ||

0 commit comments

Comments
 (0)