From 6080c18c90f0bd6922f630c010cb36f48259024c Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 7 Dec 2020 11:01:02 -0500 Subject: [PATCH] Fix RTL display of formatted phone numbers. Fixes #10261 Thank you to @Sgn-32 for finding that it can be solved with StringUtil#isolateBidi() --- .../securesms/phonenumbers/PhoneNumberFormatter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java b/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java index 2ac0e10365..43b8313e77 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java @@ -14,6 +14,7 @@ import com.google.i18n.phonenumbers.ShortNumberInfo; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.groups.GroupId; +import org.thoughtcrime.securesms.util.StringUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.util.Pair; @@ -99,13 +100,13 @@ public class PhoneNumberFormatter { localNumber.get().countryCode == parsedNumber.getCountryCode() && NATIONAL_FORMAT_COUNTRY_CODES.contains(localNumber.get().getCountryCode())) { - return phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.NATIONAL); + return StringUtil.isolateBidi(phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.NATIONAL)); } else { - return phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL); + return StringUtil.isolateBidi(phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL)); } } catch (NumberParseException e) { Log.w(TAG, "Failed to format number."); - return e164; + return StringUtil.isolateBidi(e164); } }