Attempt to fix duplicate e164s due to short codes.

This commit is contained in:
Cody Henthorne
2025-05-19 10:47:11 -04:00
parent 59a9a38c1f
commit da639d086f
3 changed files with 21 additions and 5 deletions

View File

@@ -160,7 +160,7 @@ object E164Util {
val withAreaCodeRules: String = applyAreaCodeRules(localNumber, localAreaCode, correctedInput)
val parsedNumber: PhoneNumber = PhoneNumberUtil.getInstance().parse(withAreaCodeRules, regionCode)
val isShortCode = ShortNumberInfo.getInstance().isValidShortNumberForRegion(parsedNumber, regionCode) || withAreaCodeRules.length <= 5
val isShortCode = ShortNumberInfo.getInstance().isValidShortNumberForRegion(parsedNumber, regionCode) || withAreaCodeRules.trimStart('+').length <= 6
if (isShortCode) {
return correctedInput.numbersOnly().stripLeadingZerosFromE164()
}

View File

@@ -54,13 +54,18 @@ class E164UtilTest {
@Test
fun `formatAsE164 - strip leading zeros`() {
val formatter: E164Util.Formatter = E164Util.createFormatterForE164("+14152222222")
var formatter: E164Util.Formatter = E164Util.createFormatterForE164("+14152222222")
Assert.assertEquals("+15551234567", formatter.formatAsE164("+015551234567"))
Assert.assertEquals("+15551234567", formatter.formatAsE164("+0015551234567"))
Assert.assertEquals("+15551234567", formatter.formatAsE164("01115551234567"))
Assert.assertEquals("1234", formatter.formatAsE164("01234"))
Assert.assertEquals(null, formatter.formatAsE164("0"))
Assert.assertEquals(null, formatter.formatAsE164("0000000"))
formatter = E164Util.createFormatterForE164("+49 1234 567890")
Assert.assertEquals("+491234567890", formatter.formatAsE164("+0491234567890"))
Assert.assertEquals("+4912345", formatter.formatAsE164("+04912345"))
Assert.assertEquals("+491601234567", formatter.formatAsE164("+0491601234567"))
}
@Test
@@ -97,8 +102,10 @@ class E164UtilTest {
@Test
fun `formatAsE164 - short codes`() {
val formatter: E164Util.Formatter = E164Util.createFormatterForE164("+14152222222")
Assert.assertEquals("+40404", formatter.formatAsE164("+40404"))
var formatter: E164Util.Formatter = E164Util.createFormatterForE164("+14152222222")
Assert.assertEquals("40404", formatter.formatAsE164("+40404"))
Assert.assertEquals("404040", formatter.formatAsE164("+404040"))
Assert.assertEquals("404040", formatter.formatAsE164("404040"))
Assert.assertEquals("7726", formatter.formatAsE164("+7726"))
Assert.assertEquals("69987", formatter.formatAsE164("+69987"))
Assert.assertEquals("40404", formatter.formatAsE164("40404"))
@@ -119,6 +126,10 @@ class E164UtilTest {
Assert.assertEquals("988", formatter.formatAsE164("988"))
Assert.assertEquals("999", formatter.formatAsE164("999"))
Assert.assertEquals("118", formatter.formatAsE164("118"))
Assert.assertEquals("+119990001", formatter.formatAsE164("19990001"))
formatter = E164Util.createFormatterForE164("+61 2 9876 5432")
Assert.assertEquals("19990001", formatter.formatAsE164("19990001"))
}
@Test