Skip to content

Commit a5066eb

Browse files
committed
feat: implement AmountInputHandler
1 parent 2bde048 commit a5066eb

File tree

1 file changed

+46
-10
lines changed

1 file changed

+46
-10
lines changed

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

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,29 @@ import androidx.compose.material3.HorizontalDivider
1313
import androidx.compose.runtime.Composable
1414
import androidx.compose.runtime.LaunchedEffect
1515
import androidx.compose.runtime.getValue
16+
import androidx.compose.runtime.mutableStateOf
17+
import androidx.compose.runtime.remember
18+
import androidx.compose.runtime.setValue
1619
import androidx.compose.ui.Alignment
1720
import androidx.compose.ui.Modifier
1821
import androidx.compose.ui.platform.testTag
1922
import androidx.compose.ui.res.stringResource
23+
import androidx.compose.ui.tooling.preview.Devices.NEXUS_5
2024
import androidx.compose.ui.tooling.preview.Preview
2125
import androidx.compose.ui.unit.dp
2226
import androidx.lifecycle.compose.collectAsStateWithLifecycle
27+
import okhttp3.internal.toLongOrDefault
2328
import to.bitkit.R
2429
import to.bitkit.models.PrimaryDisplay
2530
import to.bitkit.ui.LocalCurrencies
26-
import to.bitkit.ui.components.AmountInput
31+
import to.bitkit.ui.components.AmountInputHandler
2732
import to.bitkit.ui.components.Display
2833
import to.bitkit.ui.components.FillHeight
2934
import to.bitkit.ui.components.FillWidth
3035
import to.bitkit.ui.components.Keyboard
3136
import to.bitkit.ui.components.MoneySSB
3237
import to.bitkit.ui.components.NumberPadActionButton
38+
import to.bitkit.ui.components.NumberPadTextField
3339
import to.bitkit.ui.components.PrimaryButton
3440
import to.bitkit.ui.components.Text13Up
3541
import to.bitkit.ui.components.UnitButton
@@ -71,6 +77,19 @@ fun SpendingAmountScreen(
7177
}
7278
}
7379

80+
var input: String by remember { mutableStateOf(uiState.input) }
81+
82+
AmountInputHandler(
83+
input = input,
84+
overrideSats = uiState.overrideSats,
85+
primaryDisplay = currencies.primaryDisplay,
86+
displayUnit = currencies.displayUnit,
87+
onInputChanged = { newInput -> input = newInput },
88+
onAmountCalculated = { sats ->
89+
viewModel.onAmountChanged(sats.toLongOrDefault(0))
90+
},
91+
)
92+
7493
Content(
7594
uiState = uiState,
7695
currencies = currencies,
@@ -79,8 +98,7 @@ fun SpendingAmountScreen(
7998
onClickQuarter = viewModel::onClickQuarter,
8099
onClickMaxAmount = viewModel::onClickMaxAmount,
81100
onConfirmAmount = viewModel::onConfirmAmount,
82-
onAmountChanged = viewModel::onAmountChanged,
83-
onInputChanged = { input -> } //TODO IMPLEMENT
101+
onInputChanged = { newInput -> input = newInput },
84102
)
85103
}
86104

@@ -93,7 +111,6 @@ private fun Content(
93111
onClickQuarter: () -> Unit,
94112
onClickMaxAmount: () -> Unit,
95113
onConfirmAmount: () -> Unit,
96-
onAmountChanged: (Long) -> Unit,
97114
onInputChanged: (String) -> Unit,
98115
) {
99116
ScreenColumn {
@@ -114,12 +131,16 @@ private fun Content(
114131
text = stringResource(R.string.lightning__spending_amount__title)
115132
.withAccent(accentColor = Colors.Purple)
116133
)
117-
VerticalSpacer(32.dp)
134+
VerticalSpacer(8.dp)
118135

119-
AmountInput(
136+
NumberPadTextField(
137+
input = uiState.input,
138+
displayUnit = currencies.displayUnit,
139+
showSecondaryField = false,
120140
primaryDisplay = currencies.primaryDisplay,
121-
overrideSats = uiState.overrideSats,
122-
onSatsChange = onAmountChanged,
141+
modifier = Modifier
142+
.fillMaxWidth()
143+
// .testTag("SendNumberField")
123144
)
124145

125146
FillHeight()
@@ -192,14 +213,29 @@ private fun Content(
192213
private fun Preview() {
193214
AppThemeSurface {
194215
Content(
195-
uiState = TransferToSpendingUiState(),
216+
uiState = TransferToSpendingUiState(input = "5 000"),
217+
currencies = CurrencyUiState(),
218+
onBackClick = {},
219+
onCloseClick = {},
220+
onClickQuarter = {},
221+
onClickMaxAmount = {},
222+
onConfirmAmount = {},
223+
onInputChanged = {},
224+
)
225+
}
226+
}
227+
@Preview(showBackground = true, device = NEXUS_5)
228+
@Composable
229+
private fun Preview2() {
230+
AppThemeSurface {
231+
Content(
232+
uiState = TransferToSpendingUiState(input = "5 000"),
196233
currencies = CurrencyUiState(),
197234
onBackClick = {},
198235
onCloseClick = {},
199236
onClickQuarter = {},
200237
onClickMaxAmount = {},
201238
onConfirmAmount = {},
202-
onAmountChanged = {},
203239
onInputChanged = {},
204240
)
205241
}

0 commit comments

Comments
 (0)