diff --git a/core-util-jvm/src/main/java/org/signal/core/util/E164Util.kt b/core-util-jvm/src/main/java/org/signal/core/util/E164Util.kt index 79b0c1e16b..a417619733 100644 --- a/core-util-jvm/src/main/java/org/signal/core/util/E164Util.kt +++ b/core-util-jvm/src/main/java/org/signal/core/util/E164Util.kt @@ -253,12 +253,18 @@ object E164Util { * a phone number. */ fun formatAsE164(input: String): String? { - return formatAsE164WithRegionCode( + val formatted = formatAsE164WithRegionCode( localNumber = localNumber, localAreaCode = localAreaCode, regionCode = localRegionCode, input = input ) + + return if (formatted == null && input.startsWith("+")) { + formatAsE164(input.substring(1)) + } else { + formatted + } } /** diff --git a/core-util-jvm/src/test/java/org/signal/core/util/E164UtilTest.kt b/core-util-jvm/src/test/java/org/signal/core/util/E164UtilTest.kt index 7b5c9124d7..1408cd1825 100644 --- a/core-util-jvm/src/test/java/org/signal/core/util/E164UtilTest.kt +++ b/core-util-jvm/src/test/java/org/signal/core/util/E164UtilTest.kt @@ -98,7 +98,9 @@ class E164UtilTest { @Test fun `formatAsE164 - short codes`() { val formatter: E164Util.Formatter = E164Util.createFormatterForE164("+14152222222") - Assert.assertEquals("40404", formatter.formatAsE164("40404")) + Assert.assertEquals("+40404", formatter.formatAsE164("+40404")) + Assert.assertEquals("7726", formatter.formatAsE164("+7726")) + Assert.assertEquals("69987", formatter.formatAsE164("+69987")) Assert.assertEquals("40404", formatter.formatAsE164("40404")) Assert.assertEquals("7726", formatter.formatAsE164("7726")) Assert.assertEquals("22000", formatter.formatAsE164("22000"))