@@ -34,6 +34,7 @@ import to.bitkit.ui.components.MoneySSB
3434import to.bitkit.ui.components.NumberPadActionButton
3535import to.bitkit.ui.components.NumberPadTextField
3636import to.bitkit.ui.components.PrimaryButton
37+ import to.bitkit.ui.components.SyncNodeView
3738import to.bitkit.ui.components.Text13Up
3839import to.bitkit.ui.components.UnitButton
3940import to.bitkit.ui.components.VerticalSpacer
@@ -59,6 +60,7 @@ fun SpendingAmountScreen(
5960) {
6061 val currencies = LocalCurrencies .current
6162 val uiState by viewModel.spendingUiState.collectAsStateWithLifecycle()
63+ val isNodeRunning by viewModel.isNodeRunning.collectAsStateWithLifecycle()
6264
6365 LaunchedEffect (Unit ) {
6466 viewModel.updateLimits(retry = true )
@@ -86,6 +88,7 @@ fun SpendingAmountScreen(
8688 )
8789
8890 Content (
91+ isNodeRunning = isNodeRunning,
8992 uiState = uiState,
9093 currencies = currencies,
9194 onBackClick = onBackClick,
@@ -99,6 +102,7 @@ fun SpendingAmountScreen(
99102
100103@Composable
101104private fun Content (
105+ isNodeRunning : Boolean ,
102106 uiState : TransferToSpendingUiState ,
103107 currencies : CurrencyUiState ,
104108 onBackClick : () -> Unit ,
@@ -114,92 +118,120 @@ private fun Content(
114118 onBackClick = onBackClick,
115119 actions = { CloseNavIcon (onCloseClick) },
116120 )
117- Column (
118- modifier = Modifier
119- .padding(horizontal = 16 .dp)
120- .fillMaxSize()
121- .imePadding()
122- .testTag(" SpendingAmount" )
123- ) {
124- VerticalSpacer (16 .dp)
125- Display (
126- text = stringResource(R .string.lightning__spending_amount__title)
127- .withAccent(accentColor = Colors .Purple )
128- )
129121
130- NumberPadTextField (
131- input = uiState.input,
132- displayUnit = currencies.displayUnit,
133- showSecondaryField = false ,
134- primaryDisplay = currencies.primaryDisplay,
122+ if (isNodeRunning) {
123+ SpendingAmountNodeRunning (
124+ uiState = uiState,
125+ currencies = currencies,
126+ onClickQuarter = onClickQuarter,
127+ onClickMaxAmount = onClickMaxAmount,
128+ onConfirmAmount = onConfirmAmount,
129+ onInputChange = onInputChange,
130+ )
131+ } else {
132+ SyncNodeView (
135133 modifier = Modifier
136134 .fillMaxWidth()
137- .testTag( " SpendingAmountNumberField " )
135+ .weight( 1f )
138136 )
137+ }
138+ }
139+ }
140+
141+ @Composable
142+ private fun SpendingAmountNodeRunning (
143+ uiState : TransferToSpendingUiState ,
144+ currencies : CurrencyUiState ,
145+ onClickQuarter : () -> Unit ,
146+ onClickMaxAmount : () -> Unit ,
147+ onConfirmAmount : () -> Unit ,
148+ onInputChange : (String ) -> Unit ,
149+ ) {
150+ Column (
151+ modifier = Modifier
152+ .padding(horizontal = 16 .dp)
153+ .fillMaxSize()
154+ .imePadding()
155+ .testTag(" SpendingAmount" )
156+ ) {
157+ VerticalSpacer (16 .dp)
158+ Display (
159+ text = stringResource(R .string.lightning__spending_amount__title)
160+ .withAccent(accentColor = Colors .Purple )
161+ )
139162
140- FillHeight ()
163+ NumberPadTextField (
164+ input = uiState.input,
165+ displayUnit = currencies.displayUnit,
166+ showSecondaryField = false ,
167+ primaryDisplay = currencies.primaryDisplay,
168+ modifier = Modifier
169+ .fillMaxWidth()
170+ .testTag(" SpendingAmountNumberField" )
171+ )
141172
142- Row (
143- verticalAlignment = Alignment .Bottom ,
144- horizontalArrangement = Arrangement .spacedBy(8 .dp),
145- modifier = Modifier
146- .padding(vertical = 8 .dp)
147- .testTag(" SendAmountNumberPad" )
148- ) {
149- Column {
150- Text13Up (
151- text = stringResource(R .string.wallet__send_available),
152- color = Colors .White64 ,
153- modifier = Modifier .testTag(" SpendingAmountAvailable" )
154- )
155- Spacer (modifier = Modifier .height(8 .dp))
156- MoneySSB (sats = uiState.balanceAfterFee, modifier = Modifier .testTag(" SpendingAmountUnit" ))
157- }
158- FillWidth ()
159- UnitButton (color = Colors .Purple )
160- // 25% Button
161- NumberPadActionButton (
162- text = stringResource(R .string.lightning__spending_amount__quarter),
163- color = Colors .Purple ,
164- onClick = onClickQuarter,
165- modifier = Modifier .testTag(" SpendingAmountQuarter" )
166- )
167- // Max Button
168- NumberPadActionButton (
169- text = stringResource(R .string.common__max),
170- color = Colors .Purple ,
171- onClick = onClickMaxAmount,
172- modifier = Modifier .testTag(" SpendingAmountMax" )
173+ FillHeight ()
174+
175+ Row (
176+ verticalAlignment = Alignment .Bottom ,
177+ horizontalArrangement = Arrangement .spacedBy(8 .dp),
178+ modifier = Modifier
179+ .padding(vertical = 8 .dp)
180+ .testTag(" SendAmountNumberPad" )
181+ ) {
182+ Column {
183+ Text13Up (
184+ text = stringResource(R .string.wallet__send_available),
185+ color = Colors .White64 ,
186+ modifier = Modifier .testTag(" SpendingAmountAvailable" )
173187 )
188+ Spacer (modifier = Modifier .height(8 .dp))
189+ MoneySSB (sats = uiState.balanceAfterFee, modifier = Modifier .testTag(" SpendingAmountUnit" ))
174190 }
175- HorizontalDivider ()
176-
177- VerticalSpacer (16 .dp)
178-
179- Keyboard (
180- onClick = { number ->
181- onInputChange(if (uiState.input == " 0" ) number else uiState.input + number)
182- },
183- onClickBackspace = {
184- onInputChange(if (uiState.input.length > 1 ) uiState.input.dropLast(1 ) else " 0" )
185- },
186- isDecimal = currencies.primaryDisplay == PrimaryDisplay .FIAT ,
187- modifier = Modifier
188- .fillMaxWidth()
191+ FillWidth ()
192+ UnitButton (color = Colors .Purple )
193+ // 25% Button
194+ NumberPadActionButton (
195+ text = stringResource(R .string.lightning__spending_amount__quarter),
196+ color = Colors .Purple ,
197+ onClick = onClickQuarter,
198+ modifier = Modifier .testTag(" SpendingAmountQuarter" )
189199 )
200+ // Max Button
201+ NumberPadActionButton (
202+ text = stringResource(R .string.common__max),
203+ color = Colors .Purple ,
204+ onClick = onClickMaxAmount,
205+ modifier = Modifier .testTag(" SpendingAmountMax" )
206+ )
207+ }
208+ HorizontalDivider ()
190209
191- VerticalSpacer (8 .dp)
210+ VerticalSpacer (16 .dp)
192211
193- PrimaryButton (
194- text = stringResource(R .string.common__continue),
195- onClick = onConfirmAmount,
196- enabled = uiState.satsAmount != 0L && uiState.satsAmount <= uiState.maxAllowedToSend,
197- isLoading = uiState.isLoading,
198- modifier = Modifier .testTag(" SpendingAmountContinue" )
199- )
212+ Keyboard (
213+ onClick = { number ->
214+ onInputChange(if (uiState.input == " 0" ) number else uiState.input + number)
215+ },
216+ onClickBackspace = {
217+ onInputChange(if (uiState.input.length > 1 ) uiState.input.dropLast(1 ) else " 0" )
218+ },
219+ isDecimal = currencies.primaryDisplay == PrimaryDisplay .FIAT ,
220+ modifier = Modifier
221+ .fillMaxWidth()
222+ )
200223
201- VerticalSpacer (16 .dp)
202- }
224+ VerticalSpacer (8 .dp)
225+
226+ PrimaryButton (
227+ text = stringResource(R .string.common__continue),
228+ onClick = onConfirmAmount,
229+ enabled = uiState.satsAmount != 0L && uiState.satsAmount <= uiState.maxAllowedToSend,
230+ isLoading = uiState.isLoading,
231+ modifier = Modifier .testTag(" SpendingAmountContinue" )
232+ )
233+
234+ VerticalSpacer (16 .dp)
203235 }
204236}
205237
@@ -208,6 +240,7 @@ private fun Content(
208240private fun Preview () {
209241 AppThemeSurface {
210242 Content (
243+ isNodeRunning = true ,
211244 uiState = TransferToSpendingUiState (input = " 5 000" ),
212245 currencies = CurrencyUiState (),
213246 onBackClick = {},
@@ -225,6 +258,25 @@ private fun Preview() {
225258private fun Preview2 () {
226259 AppThemeSurface {
227260 Content (
261+ isNodeRunning = true ,
262+ uiState = TransferToSpendingUiState (input = " 5 000" ),
263+ currencies = CurrencyUiState (),
264+ onBackClick = {},
265+ onCloseClick = {},
266+ onClickQuarter = {},
267+ onClickMaxAmount = {},
268+ onConfirmAmount = {},
269+ onInputChange = {},
270+ )
271+ }
272+ }
273+
274+ @Preview(showBackground = true , device = NEXUS_5 )
275+ @Composable
276+ private fun Preview3 () {
277+ AppThemeSurface {
278+ Content (
279+ isNodeRunning = false ,
228280 uiState = TransferToSpendingUiState (input = " 5 000" ),
229281 currencies = CurrencyUiState (),
230282 onBackClick = {},
0 commit comments