Ignore period in phone number entry.

Fixes #9168
This commit is contained in:
Alan Evans 2019-11-08 11:19:32 -05:00 committed by GitHub
parent a33eeed6d3
commit 5d87ad0301
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -339,13 +339,13 @@ public final class EnterPhoneNumberFragment extends BaseRegistrationFragment {
@Override
public void afterTextChanged(Editable s) {
String number = reformatText(s);
Long number = reformatText(s);
if (number == null) return;
RegistrationViewModel model = getModel();
model.setNationalNumber(Long.parseLong(number));
model.setNationalNumber(number);
setCountryDisplay(model.getNumber().getCountryDisplayName());
}
@ -360,7 +360,7 @@ public final class EnterPhoneNumberFragment extends BaseRegistrationFragment {
}
}
private String reformatText(Editable s) {
private Long reformatText(Editable s) {
if (countryFormatter == null) {
return null;
}
@ -371,17 +371,26 @@ public final class EnterPhoneNumberFragment extends BaseRegistrationFragment {
countryFormatter.clear();
String number = s.toString().replaceAll("[^\\d.]", "");
String formattedNumber = null;
StringBuilder justDigits = new StringBuilder();
for (int i = 0; i < number.length(); i++) {
formattedNumber = countryFormatter.inputDigit(number.charAt(i));
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
formattedNumber = countryFormatter.inputDigit(c);
justDigits.append(c);
}
}
if (formattedNumber != null && !s.toString().equals(formattedNumber)) {
s.replace(0, s.length(), formattedNumber);
}
return number;
if (justDigits.length() == 0) {
return null;
}
return Long.parseLong(justDigits.toString());
}
private void setCountryFormatter(@Nullable String regionCode) {