diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV2.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV2.java index 47d2491ae7..c611ad6a12 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV2.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV2.java @@ -66,8 +66,8 @@ class ContactDiscoveryV2 { KeyStore iasKeyStore = getIasKeyStore(context); try { - Map results = accountManager.getRegisteredUsers(iasKeyStore, sanitizedNumbers, BuildConfig.CDS_MRENCLAVE); - FuzzyPhoneNumberHelper.OutputResultV2 outputResult = FuzzyPhoneNumberHelper.generateOutputV2(results, inputResult); + Map results = accountManager.getRegisteredUsers(iasKeyStore, sanitizedNumbers, BuildConfig.CDS_MRENCLAVE); + FuzzyPhoneNumberHelper.OutputResult outputResult = FuzzyPhoneNumberHelper.generateOutput(results, inputResult); return new DirectoryResult(outputResult.getNumbers(), outputResult.getRewrites(), ignoredNumbers); } catch (SignatureException | UnauthenticatedQuoteException | UnauthenticatedResponseException | Quote.InvalidQuoteFormatException |InvalidKeyException e) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV3.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV3.java index 4616120216..9028c70315 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV3.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactDiscoveryV3.java @@ -46,8 +46,8 @@ class ContactDiscoveryV3 { SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager(); try { - Map results = accountManager.getRegisteredUsersWithCdsh(sanitizedNumbers, BuildConfig.CDSH_PUBLIC_KEY, BuildConfig.CDSH_CODE_HASH); - FuzzyPhoneNumberHelper.OutputResultV2 outputResult = FuzzyPhoneNumberHelper.generateOutputV2(results, inputResult); + Map results = accountManager.getRegisteredUsersWithCdsh(sanitizedNumbers, BuildConfig.CDSH_PUBLIC_KEY, BuildConfig.CDSH_CODE_HASH); + FuzzyPhoneNumberHelper.OutputResult outputResult = FuzzyPhoneNumberHelper.generateOutput(results, inputResult); return new DirectoryResult(outputResult.getNumbers(), outputResult.getRewrites(), ignoredNumbers); } catch (IOException e) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelper.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelper.java index a5465a7c4c..0c80dc2085 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelper.java @@ -30,7 +30,6 @@ class FuzzyPhoneNumberHelper { Set allNumbers = new HashSet<>(testNumbers); Map fuzzies = new HashMap<>(); - for (String number : testNumbers) { for (FuzzyVariant fuzzyVariant: FUZZY_VARIANTS) { if(fuzzyVariant.hasVariants(number)) { @@ -50,37 +49,7 @@ class FuzzyPhoneNumberHelper { * these results and our initial input set, we can decide if we need to rewrite which number we * have stored locally. */ - static @NonNull OutputResult generateOutput(@NonNull Collection registeredNumbers, @NonNull InputResult inputResult) { - Set allNumbers = new HashSet<>(registeredNumbers); - Map rewrites = new HashMap<>(); - - for (Map.Entry entry : inputResult.getFuzzies().entrySet()) { - if (registeredNumbers.contains(entry.getKey()) && registeredNumbers.contains(entry.getValue())) { - for (FuzzyVariant fuzzyVariant: FUZZY_VARIANTS) { - if(fuzzyVariant.hasVariants(entry.getKey())) { - if (fuzzyVariant.isDefaultVariant(entry.getKey())) { - allNumbers.remove(entry.getValue()); - } else { - rewrites.put(entry.getKey(), entry.getValue()); - allNumbers.remove(entry.getKey()); - } - } - } - } else if (registeredNumbers.contains(entry.getValue())) { - rewrites.put(entry.getKey(), entry.getValue()); - allNumbers.remove(entry.getKey()); - } - } - - return new OutputResult(allNumbers, rewrites); - } - - /** - * This should be run on the list of numbers we find out are registered with the server. Based on - * these results and our initial input set, we can decide if we need to rewrite which number we - * have stored locally. - */ - static @NonNull OutputResultV2 generateOutputV2(@NonNull Map registeredNumbers, @NonNull InputResult inputResult) { + static @NonNull OutputResult generateOutput(@NonNull Map registeredNumbers, @NonNull InputResult inputResult) { Map allNumbers = new HashMap<>(registeredNumbers); Map rewrites = new HashMap<>(); @@ -102,7 +71,7 @@ class FuzzyPhoneNumberHelper { } } - return new OutputResultV2(allNumbers, rewrites); + return new OutputResult(allNumbers, rewrites); } private interface FuzzyVariant { @@ -183,28 +152,10 @@ class FuzzyPhoneNumberHelper { } public static class OutputResult { - private final Set numbers; - private final Map rewrites; - - private OutputResult(@NonNull Set numbers, @NonNull Map rewrites) { - this.numbers = numbers; - this.rewrites = rewrites; - } - - public @NonNull Set getNumbers() { - return numbers; - } - - public @NonNull Map getRewrites() { - return rewrites; - } - } - - public static class OutputResultV2 { private final Map numbers; private final Map rewrites; - private OutputResultV2(@NonNull Map numbers, @NonNull Map rewrites) { + private OutputResult(@NonNull Map numbers, @NonNull Map rewrites) { this.numbers = numbers; this.rewrites = rewrites; } diff --git a/app/src/test/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelperTest.java b/app/src/test/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelperTest.java index adf7209f33..54429554c2 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelperTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/contacts/sync/FuzzyPhoneNumberHelperTest.java @@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.contacts.sync; import org.junit.Test; import org.thoughtcrime.securesms.contacts.sync.FuzzyPhoneNumberHelper.InputResult; import org.thoughtcrime.securesms.contacts.sync.FuzzyPhoneNumberHelper.OutputResult; -import org.thoughtcrime.securesms.contacts.sync.FuzzyPhoneNumberHelper.OutputResultV2; import org.whispersystems.signalservice.api.util.UuidUtil; import java.util.Arrays; @@ -101,70 +100,7 @@ public class FuzzyPhoneNumberHelperTest { @Test public void generateOutput_noMxNumbers() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(US_A, US_B), new InputResult(setOf(US_A, US_B), Collections.emptyMap())); - - assertEquals(2, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(US_A, US_B))); - assertTrue(result.getRewrites().isEmpty()); - } - - @Test - public void generateOutput_bothMatch_no1To1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A, MX_A_1), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A))); - assertTrue(result.getRewrites().isEmpty()); - } - - @Test - public void generateOutput_bothMatch_1toNo1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A, MX_A_1), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A))); - assertEquals(MX_A, result.getRewrites().get(MX_A_1)); - } - - @Test - public void generateOutput_no1Match_no1To1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A))); - assertTrue(result.getRewrites().isEmpty()); - } - - @Test - public void generateOutput_no1Match_1ToNo1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A))); - assertEquals(MX_A, result.getRewrites().get(MX_A_1)); - } - - @Test - public void generateOutput_1Match_1ToNo1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A_1), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A_1))); - assertTrue(result.getRewrites().isEmpty()); - } - - @Test - public void generateOutput_1Match_no1To1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A_1), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); - - assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A_1))); - assertEquals(MX_A_1, result.getRewrites().get(MX_A)); - } - - @Test - public void generateOutputV2_noMxNumbers() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(US_A, UUID_A, US_B, UUID_B), new InputResult(setOf(US_A, US_B), Collections.emptyMap())); + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(US_A, UUID_A, US_B, UUID_B), new InputResult(setOf(US_A, US_B), Collections.emptyMap())); assertEquals(2, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(US_A)); @@ -173,8 +109,8 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_bothMatch_no1To1() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(MX_A, UUID_A, MX_A_1, UUID_B), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); + public void generateOutput_bothMatch_no1To1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A, UUID_A, MX_A_1, UUID_B), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); assertEquals(1, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(MX_A)); @@ -182,8 +118,8 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_bothMatch_1toNo1() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(MX_A, UUID_A, MX_A_1, UUID_B), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); + public void generateOutput_bothMatch_1toNo1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A, UUID_A, MX_A_1, UUID_B), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); assertEquals(1, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(MX_A)); @@ -191,8 +127,8 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_no1Match_no1To1() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(MX_A, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); + public void generateOutput_no1Match_no1To1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); assertEquals(1, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(MX_A)); @@ -200,8 +136,8 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_no1Match_1ToNo1() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(MX_A, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); + public void generateOutput_no1Match_1ToNo1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); assertEquals(1, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(MX_A)); @@ -209,8 +145,8 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_1Match_1ToNo1() { - OutputResultV2 result = FuzzyPhoneNumberHelper.generateOutputV2(mapOf(MX_A_1, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); + public void generateOutput_1Match_1ToNo1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A_1, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A_1, MX_A))); assertEquals(1, result.getNumbers().size()); assertEquals(UUID_A, result.getNumbers().get(MX_A_1)); @@ -218,11 +154,11 @@ public class FuzzyPhoneNumberHelperTest { } @Test - public void generateOutputV2_1Match_no1To1() { - OutputResult result = FuzzyPhoneNumberHelper.generateOutput(setOf(MX_A_1), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); + public void generateOutput_1Match_no1To1() { + OutputResult result = FuzzyPhoneNumberHelper.generateOutput(mapOf(MX_A_1, UUID_A), new InputResult(setOf(MX_A, MX_A_1), Collections.singletonMap(MX_A, MX_A_1))); assertEquals(1, result.getNumbers().size()); - assertTrue(result.getNumbers().containsAll(setOf(MX_A_1))); + assertEquals(UUID_A, result.getNumbers().get(MX_A_1)); assertEquals(MX_A_1, result.getRewrites().get(MX_A)); }