Skip to content

Commit 0dbf32e

Browse files
authored
Add missing prefilled data (#240)
1 parent 65d733d commit 0dbf32e

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
33

44
## UNRELEASED
55
### Added
6+
* Add prefilled data to credit card input views
67
### Changed
78
### Removed
89
### Fixed

ui/src/main/java/io/snabble/sdk/ui/payment/creditcard/shared/CustomerInfoInputScreen.kt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.compose.ui.res.stringResource
2424
import androidx.compose.ui.text.input.ImeAction
2525
import androidx.compose.ui.text.input.KeyboardCapitalization
2626
import androidx.compose.ui.unit.dp
27+
import io.snabble.sdk.Snabble
2728
import io.snabble.sdk.ui.R
2829
import io.snabble.sdk.ui.cart.shoppingcart.utils.rememberTextFieldManager
2930
import io.snabble.sdk.ui.payment.creditcard.shared.country.displayName
@@ -44,20 +45,33 @@ internal fun CustomerInfoInputScreen(
4445
countryItems: List<CountryItem>,
4546
onBackNavigationClick: () -> Unit,
4647
) {
47-
var name by remember { mutableStateOf("") }
48+
val preFilledData = Snabble.formPrefillData
49+
50+
var name by remember { mutableStateOf(preFilledData?.name.orEmpty()) }
4851
var intCallingCode by remember { mutableStateOf("") }
4952
var phoneNumber by remember { mutableStateOf("") }
50-
var email by remember { mutableStateOf("") }
51-
var street by remember { mutableStateOf("") }
52-
var zip by remember { mutableStateOf("") }
53-
var city by remember { mutableStateOf("") }
54-
var state by remember { mutableStateOf("") }
55-
var country: CountryItem by remember { mutableStateOf(countryItems.loadDefaultCountry()) }
53+
var email by remember { mutableStateOf(preFilledData?.email.orEmpty()) }
54+
var street by remember { mutableStateOf(preFilledData?.street.orEmpty()) }
55+
var zip by remember { mutableStateOf(preFilledData?.zip.orEmpty()) }
56+
var city by remember { mutableStateOf(preFilledData?.city.orEmpty()) }
57+
var state by remember { mutableStateOf(preFilledData?.stateCode.orEmpty()) }
58+
59+
var country: CountryItem by remember {
60+
mutableStateOf(
61+
countryItems.loadPreSetCountry(preFilledData?.countryCode)
62+
?: countryItems.loadDefaultCountry()
63+
)
64+
}
5665

5766
val textFieldManager = rememberTextFieldManager()
5867

5968
val isRequiredStateSet =
60-
if (!countryItems.firstOrNull { it.code == country.code }?.stateItems.isNullOrEmpty()) state.isNotEmpty() else true
69+
if (!countryItems.firstOrNull { it.code == country.code }?.stateItems.isNullOrEmpty()) {
70+
state.isNotEmpty()
71+
} else {
72+
true
73+
}
74+
6175
val areRequiredFieldsSet = listOf(
6276
name,
6377
intCallingCode,
@@ -166,7 +180,7 @@ internal fun CustomerInfoInputScreen(
166180
CountrySelectionMenu(
167181
countryItems = countryItems,
168182
selectedCountryCode = country,
169-
selectedStateCode = null,
183+
selectedStateCode = state,
170184
onCountrySelected = { countryItem, stateItem ->
171185
country = countryItem
172186
state = stateItem?.code.orEmpty()
@@ -203,6 +217,9 @@ internal fun CustomerInfoInputScreen(
203217
}
204218
}
205219

220+
private fun List<CountryItem>?.loadPreSetCountry(countryCode: String?): CountryItem? =
221+
this?.firstOrNull { it.code == countryCode }
222+
206223
private fun List<CountryItem>?.loadDefaultCountry(): CountryItem =
207224
this?.firstOrNull { it.displayName == Locale.getDefault().country.displayName }
208225
?: this?.firstOrNull { it.code == Locale.GERMANY.displayCountry }

0 commit comments

Comments
 (0)