Skip to content

Commit 431fd83

Browse files
authored
SDKS-3871 Handle initial value of PhoneNumber Type. (#50)
1 parent f293a1f commit 431fd83

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

davinci/src/main/kotlin/com/pingidentity/davinci/collector/PhoneNumberCollector.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package com.pingidentity.davinci.collector
99

10+
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonObject
1112
import kotlinx.serialization.json.boolean
1213
import kotlinx.serialization.json.buildJsonObject
@@ -26,18 +27,22 @@ class PhoneNumberCollector : FieldCollector<JsonObject>(), Validator {
2627
private set
2728

2829
// country code
29-
var countryCode: String? = null
30+
var countryCode: String = ""
3031
// phone number
31-
var phoneNumber: String? = null
32+
var phoneNumber: String = ""
3233

3334
override fun init(input: JsonObject) {
3435
super.init(input)
3536
defaultCountryCode = input["defaultCountryCode"]?.jsonPrimitive?.content ?: ""
3637
validatePhoneNumber = input["validatePhoneNumber"]?.jsonPrimitive?.boolean ?: false
3738
}
3839

40+
override fun init(input: JsonElement) {
41+
phoneNumber = input.jsonPrimitive.content
42+
}
43+
3944
override fun payload(): JsonObject? {
40-
return if (countryCode.isNullOrEmpty() || phoneNumber.isNullOrEmpty()) {
45+
return if (countryCode.isEmpty() || phoneNumber.isEmpty()) {
4146
null
4247
} else {
4348
buildJsonObject {

davinci/src/test/kotlin/com/pingidentity/davinci/PhoneNumberCollectorTest.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package com.pingidentity.davinci
1010

1111
import com.pingidentity.davinci.collector.PhoneNumberCollector
1212
import com.pingidentity.davinci.collector.Required
13+
import kotlinx.serialization.json.JsonPrimitive
1314
import kotlinx.serialization.json.buildJsonObject
1415
import kotlinx.serialization.json.put
1516
import kotlin.test.Test
@@ -88,6 +89,16 @@ class PhoneNumberCollectorTest {
8889
assertEquals("CA", collector.defaultCountryCode)
8990
}
9091

92+
@Test
93+
fun `default with Phone Number`() {
94+
val input = JsonPrimitive("1234567")
95+
val collector = PhoneNumberCollector()
96+
97+
collector.init(input)
98+
99+
assertEquals("1234567", collector.phoneNumber)
100+
}
101+
91102
@Test
92103
fun `value returns properly formatted phone number`() {
93104
val collector = PhoneNumberCollector().apply {

samples/app/src/main/java/com/pingidentity/samples/app/davinci/collector/PhoneNumber.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,14 @@ fun PhoneNumber(field: PhoneNumberCollector, onNodeUpdated: () -> Unit) {
4141
mutableStateOf(countryCodes.firstOrNull { it.countryCode == field.defaultCountryCode }
4242
?: countryCodes.first())
4343
}
44-
var phoneNumber by remember { mutableStateOf("") }
4544

4645
var isValid by remember {
4746
mutableStateOf(true)
4847
}
4948

5049
LaunchedEffect(true) {
5150
field.countryCode = selectedCountryCode.countryCode
52-
field.phoneNumber = phoneNumber
51+
field.phoneNumber = field.phoneNumber
5352
}
5453

5554
Column(
@@ -107,10 +106,11 @@ fun PhoneNumber(field: PhoneNumberCollector, onNodeUpdated: () -> Unit) {
107106
}
108107
// Phone Number Input
109108
OutlinedTextField(
110-
value = phoneNumber,
109+
value = field.phoneNumber,
111110
onValueChange = {
112-
phoneNumber = it.take(10).filter { it.isDigit() }
111+
val phoneNumber = it.take(10).filter { it.isDigit() }
113112
field.phoneNumber = phoneNumber
113+
onNodeUpdated()
114114
},
115115
label = { androidx.compose.material3.Text(field.label) },
116116
singleLine = true,

0 commit comments

Comments
 (0)