Pretty-print phone numbers.
This commit is contained in:
parent
3dc1614fbc
commit
9e5156ab73
6 changed files with 34 additions and 7 deletions
|
@ -13,6 +13,7 @@ import androidx.annotation.WorkerThread;
|
|||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase;
|
||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
import org.whispersystems.libsignal.util.Pair;
|
||||
|
@ -64,6 +65,10 @@ public class ContactRepository {
|
|||
String phone = cursor.getString(cursor.getColumnIndexOrThrow(RecipientDatabase.PHONE));
|
||||
String email = cursor.getString(cursor.getColumnIndexOrThrow(RecipientDatabase.EMAIL));
|
||||
|
||||
if (phone != null) {
|
||||
phone = PhoneNumberFormatter.prettyPrint(phone);
|
||||
}
|
||||
|
||||
return Util.getFirstNonEmpty(phone, email);
|
||||
}));
|
||||
|
||||
|
|
|
@ -104,6 +104,7 @@ import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
|
|||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||
import org.thoughtcrime.securesms.mms.Slide;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
||||
import org.thoughtcrime.securesms.profiles.UnknownSenderView;
|
||||
import org.thoughtcrime.securesms.providers.BlobProvider;
|
||||
import org.thoughtcrime.securesms.reactions.ReactionsBottomSheetDialogFragment;
|
||||
|
@ -433,7 +434,7 @@ public class ConversationFragment extends LoggingFragment {
|
|||
} else if (isSelf) {
|
||||
conversationBanner.setSubtitle(context.getString(R.string.ConversationFragment__you_can_add_notes_for_yourself_in_this_conversation));
|
||||
} else {
|
||||
String subtitle = recipient.getE164().orNull();
|
||||
String subtitle = recipient.getE164().transform(PhoneNumberFormatter::prettyPrint).orNull();
|
||||
|
||||
if (subtitle == null || subtitle.equals(title)) {
|
||||
conversationBanner.hideSubtitle();
|
||||
|
|
|
@ -11,6 +11,7 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
|||
import com.google.i18n.phonenumbers.Phonenumber;
|
||||
import com.google.i18n.phonenumbers.ShortNumberInfo;
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
@ -46,7 +47,6 @@ public class PhoneNumberFormatter {
|
|||
private final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
|
||||
private final Pattern ALPHA_PATTERN = Pattern.compile("[a-zA-Z]");
|
||||
|
||||
|
||||
public static @NonNull PhoneNumberFormatter get(Context context) {
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
|
||||
|
@ -81,6 +81,25 @@ public class PhoneNumberFormatter {
|
|||
this.localCountryCode = localCountryCode;
|
||||
}
|
||||
|
||||
public static @NonNull String prettyPrint(@NonNull String e164) {
|
||||
return get(ApplicationDependencies.getApplication()).prettyPrintFormat(e164);
|
||||
}
|
||||
|
||||
public @NonNull String prettyPrintFormat(@NonNull String e164) {
|
||||
try {
|
||||
Phonenumber.PhoneNumber parsedNumber = phoneNumberUtil.parse(e164, localCountryCode);
|
||||
|
||||
if (localNumber.isPresent() && localNumber.get().countryCode == parsedNumber.getCountryCode()) {
|
||||
return phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.NATIONAL);
|
||||
} else {
|
||||
return phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
|
||||
}
|
||||
} catch (NumberParseException e) {
|
||||
Log.w(TAG, "Failed to format number.");
|
||||
return e164;
|
||||
}
|
||||
}
|
||||
|
||||
public String format(@Nullable String number) {
|
||||
if (number == null) return "Unknown";
|
||||
if (GroupId.isEncodedGroup(number)) return number;
|
||||
|
|
|
@ -418,7 +418,7 @@ public class Recipient {
|
|||
public @NonNull String getDisplayName(@NonNull Context context) {
|
||||
String name = Util.getFirstNonEmpty(getName(context),
|
||||
getProfileName().toString(),
|
||||
e164,
|
||||
PhoneNumberFormatter.prettyPrint(e164),
|
||||
email,
|
||||
context.getString(R.string.Recipient_unknown));
|
||||
|
||||
|
@ -428,7 +428,7 @@ public class Recipient {
|
|||
public @NonNull String getDisplayNameOrUsername(@NonNull Context context) {
|
||||
String name = Util.getFirstNonEmpty(getName(context),
|
||||
getProfileName().toString(),
|
||||
e164,
|
||||
PhoneNumberFormatter.prettyPrint(e164),
|
||||
email,
|
||||
username,
|
||||
context.getString(R.string.Recipient_unknown));
|
||||
|
@ -439,7 +439,7 @@ public class Recipient {
|
|||
public @NonNull String getMentionDisplayName(@NonNull Context context) {
|
||||
String name = Util.getFirstNonEmpty(isSelf ? getProfileName().toString() : getName(context),
|
||||
isSelf ? getName(context) : getProfileName().toString(),
|
||||
e164,
|
||||
PhoneNumberFormatter.prettyPrint(e164),
|
||||
email,
|
||||
context.getString(R.string.Recipient_unknown));
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.components.AvatarImageView;
|
|||
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto;
|
||||
import org.thoughtcrime.securesms.contacts.avatars.FallbackPhoto80dp;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientExporter;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
|
@ -157,7 +158,7 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF
|
|||
}
|
||||
|
||||
String usernameNumberString = recipient.hasAUserSetDisplayName(requireContext()) && !recipient.isSelf()
|
||||
? recipient.getSmsAddress().or("").trim()
|
||||
? recipient.getSmsAddress().transform(PhoneNumberFormatter::prettyPrint).or("").trim()
|
||||
: "";
|
||||
usernameNumber.setText(usernameNumberString);
|
||||
usernameNumber.setVisibility(TextUtils.isEmpty(usernameNumberString) ? View.GONE : View.VISIBLE);
|
||||
|
|
|
@ -29,6 +29,7 @@ import org.thoughtcrime.securesms.groups.ui.GroupMemberEntry;
|
|||
import org.thoughtcrime.securesms.groups.ui.addtogroup.AddToGroupsActivity;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientUtil;
|
||||
|
@ -124,7 +125,7 @@ public final class ManageRecipientViewModel extends ViewModel {
|
|||
|
||||
private static @NonNull String getDisplaySubtitle(@NonNull Recipient recipient, @NonNull Context context) {
|
||||
if (!recipient.isSelf() && recipient.hasAUserSetDisplayName(context)) {
|
||||
return recipient.getSmsAddress().or("").trim();
|
||||
return recipient.getSmsAddress().transform(PhoneNumberFormatter::prettyPrint).or("").trim();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue