Skip to content

Commit 21f0460

Browse files
committed
Don't E164 shortcodes
Fixes signalapp#4478 // FREEBIE
1 parent 0c75e65 commit 21f0460

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

src/org/thoughtcrime/securesms/database/CanonicalAddressDatabase.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
import android.text.TextUtils;
2828
import android.util.Log;
2929

30+
import com.google.i18n.phonenumbers.NumberParseException;
31+
import com.google.i18n.phonenumbers.PhoneNumberUtil;
32+
import com.google.i18n.phonenumbers.Phonenumber;
33+
import com.google.i18n.phonenumbers.ShortNumberInfo;
34+
3035
import org.thoughtcrime.securesms.util.GroupUtil;
3136
import org.thoughtcrime.securesms.util.TextSecurePreferences;
3237
import org.thoughtcrime.securesms.util.VisibleForTesting;
@@ -144,7 +149,11 @@ public long getCanonicalAddressId(@NonNull String address) {
144149
long canonicalAddressId;
145150

146151
if (isNumberAddress(address) && TextSecurePreferences.isPushRegistered(context)) {
147-
address = PhoneNumberFormatter.formatNumber(address, TextSecurePreferences.getLocalNumber(context));
152+
String localNumber = TextSecurePreferences.getLocalNumber(context);
153+
154+
if (!isShortCode(localNumber, address)) {
155+
address = PhoneNumberFormatter.formatNumber(address, localNumber);
156+
}
148157
}
149158

150159
if ((canonicalAddressId = getCanonicalAddressFromCache(address)) != -1) {
@@ -228,6 +237,19 @@ static boolean isNumberAddress(@NonNull String number) {
228237
return PhoneNumberUtils.isWellFormedSmsAddress(number);
229238
}
230239

240+
private boolean isShortCode(@NonNull String localNumber, @NonNull String number) {
241+
try {
242+
PhoneNumberUtil util = PhoneNumberUtil.getInstance();
243+
Phonenumber.PhoneNumber localNumberObject = util.parse(localNumber, null);
244+
String localCountryCode = util.getRegionCodeForNumber(localNumberObject);
245+
246+
return ShortNumberInfo.getInstance().isValidShortNumberForRegion(number, localCountryCode);
247+
} catch (NumberParseException e) {
248+
Log.w(TAG, e);
249+
return false;
250+
}
251+
}
252+
231253
private static class DatabaseHelper extends SQLiteOpenHelper {
232254

233255
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {

0 commit comments

Comments
 (0)