Skip to content
This repository was archived by the owner on Dec 16, 2023. It is now read-only.

Commit 395169b

Browse files
committed
Sanitize mobile numbers
1 parent 152ace0 commit 395169b

4 files changed

Lines changed: 49 additions & 10 deletions

File tree

app/src/main/java/com/marknkamau/justjava/ui/completeSignUp/CompleteSignUpActivity.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ import androidx.lifecycle.Observer
99
import com.marknjunge.core.data.model.Resource
1010
import com.marknjunge.core.data.model.User
1111
import com.marknkamau.justjava.R
12-
import com.marknkamau.justjava.utils.isValidEmail
13-
import com.marknkamau.justjava.utils.resetErrorOnChange
14-
import com.marknkamau.justjava.utils.toast
15-
import com.marknkamau.justjava.utils.trimmedText
12+
import com.marknkamau.justjava.utils.*
1613
import kotlinx.android.synthetic.main.activity_complete_sign_up.*
1714
import org.koin.androidx.viewmodel.ext.android.viewModel
1815

@@ -80,6 +77,8 @@ class CompleteSignUpActivity : AppCompatActivity() {
8077
private fun isValid(): Boolean {
8178
var valid = true
8279

80+
etMobileNumber.setText(PhoneNumberUtils.sanitize(etMobileNumber.text.toString()))
81+
8382
if (etFirstName.trimmedText.isEmpty()) {
8483
valid = false
8584
tilFirstName.error = "Required"
@@ -93,9 +92,6 @@ class CompleteSignUpActivity : AppCompatActivity() {
9392
if (etMobileNumber.trimmedText.isEmpty()) {
9493
valid = false
9594
tilMobileNumber.error = "Required"
96-
} else if (etMobileNumber.trimmedText.length != 12) {
97-
valid = false
98-
tilMobileNumber.error = "Please enter a valid mobile number"
9995
}
10096

10197
if (etEmail.trimmedText.isEmpty()) {

app/src/main/java/com/marknkamau/justjava/ui/signup/SignUpActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class SignUpActivity : AppCompatActivity() {
6565
private fun isValid(): Boolean {
6666
var isValid = true
6767

68+
etMobileNumber.setText(PhoneNumberUtils.sanitize(etMobileNumber.text.toString()))
69+
6870
val justJavaEmailPattern = Pattern.compile("^([a-zA-Z0-9_.-])+@justjava.com+")
6971
val justJavaEmailMatcher = justJavaEmailPattern.matcher(etEmail.trimmedText)
7072

@@ -100,9 +102,6 @@ class SignUpActivity : AppCompatActivity() {
100102
if (etMobileNumber.trimmedText.isEmpty()) {
101103
tilMobileNumber.error = getString(R.string.required)
102104
isValid = false
103-
} else if (etMobileNumber.trimmedText.length != 12) {
104-
tilMobileNumber.error = "Please enter a valid mobile number"
105-
isValid = false
106105
}
107106

108107
return isValid
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.marknkamau.justjava.utils
2+
3+
object PhoneNumberUtils {
4+
fun sanitize(number: String): String {
5+
val num = number.replace(" ", "")
6+
return when {
7+
num.startsWith("0") -> num.replaceFirst("^0".toRegex(), "254")
8+
num.startsWith("+") -> num.replaceFirst("^\\+".toRegex(), "")
9+
else -> number
10+
}
11+
}
12+
13+
fun beautify(number: String): String {
14+
val num = sanitize(number)
15+
return "+${num.subSequence(0, 3)} ${num.subSequence(3, 6)} ${num.subSequence(6, 9)} ${num.subSequence(9, 12)}"
16+
}
17+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.marknkamau.justjava.utils
2+
3+
import org.junit.Assert
4+
import org.junit.Test
5+
6+
class PhoneNumberUtilsKtTest {
7+
@Test
8+
fun `starts with zero`() {
9+
val number = "0712345678"
10+
val sanitized = PhoneNumberUtils.sanitize(number)
11+
Assert.assertEquals("254712345678", sanitized)
12+
}
13+
14+
@Test
15+
fun `starts with plus`() {
16+
val number = "+254712345678"
17+
val sanitized = PhoneNumberUtils.sanitize(number)
18+
Assert.assertEquals("254712345678", sanitized)
19+
}
20+
21+
@Test
22+
fun `can beautify`() {
23+
val number = "254712345678"
24+
val pretty = PhoneNumberUtils.beautify(number)
25+
Assert.assertEquals("+254 712 345 678", pretty)
26+
}
27+
}

0 commit comments

Comments
 (0)