Add unicode wildcards for equivalent latin characters in contact search.

fork-5.53.8
Karalix 2020-11-16 16:44:32 +01:00 zatwierdzone przez Greyson Parrelli
rodzic 5a91c7e84a
commit 32d79ead15
1 zmienionych plików z 60 dodań i 0 usunięć

Wyświetl plik

@ -2600,12 +2600,72 @@ public class RecipientDatabase extends Database {
pattern.append("[");
pattern.append(point.toLowerCase());
pattern.append(point.toUpperCase());
pattern.append(getAccentuatedCharRegex(point.toLowerCase()));
pattern.append("]");
}
return "*" + pattern.toString() + "*";
}
private static @NonNull String getAccentuatedCharRegex(@NonNull String query) {
switch (query) {
case "a" :
return "À-Åà-åĀ-ąǍǎǞ-ǡǺ-ǻȀ-ȃȦȧȺɐ-ɒḀḁẚẠ-ặ";
case "b" :
return "ßƀ-ƅɃɓḂ-ḇ";
case "c" :
return "çÇĆ-čƆ-ƈȻȼɔḈḉ";
case "d" :
return "ÐðĎ-đƉ-ƍȡɖɗḊ-ḓ";
case "e" :
return "È-Ëè-ëĒ-ěƎ-ƐǝȄ-ȇȨȩɆɇɘ-ɞḔ-ḝẸ-ệ";
case "f" :
return "ƑƒḞḟ";
case "g" :
return "Ĝ-ģƓǤ-ǧǴǵḠḡ";
case "h" :
return "Ĥ-ħƕǶȞȟḢ-ḫẖ";
case "i" :
return "Ì-Ïì-ïĨ-ıƖƗǏǐȈ-ȋɨɪḬ-ḯỈ-ị";
case "j" :
return "ĴĵǰȷɈɉɟ";
case "k" :
return "Ķ-ĸƘƙǨǩḰ-ḵ";
case "l" :
return "Ĺ-łƚȴȽɫ-ɭḶ-ḽ";
case "m" :
return "Ɯɯ-ɱḾ-ṃ";
case "n" :
return "ÑñŃ-ŋƝƞǸǹȠȵɲ-ɴṄ-ṋ";
case "o" :
return "Ò-ÖØò-öøŌ-őƟ-ơǑǒǪ-ǭǾǿȌ-ȏȪ-ȱṌ-ṓỌ-ợ";
case "p" :
return "ƤƥṔ-ṗ";
case "q" :
return "";
case "r" :
return "Ŕ-řƦȐ-ȓɌɍṘ-ṟ";
case "s" :
return "Ś-šƧƨȘșȿṠ-ṩ";
case "t" :
return "Ţ-ŧƫ-ƮȚțȾṪ-ṱẗ";
case "u" :
return "Ù-Üù-üŨ-ųƯ-ƱǓ-ǜȔ-ȗɄṲ-ṻỤ-ự";
case "v" :
return "ƲɅṼ-ṿ";
case "w" :
return "ŴŵẀ-ẉẘ";
case "x" :
return "Ẋ-ẍ";
case "y" :
return "ÝýÿŶ-ŸƔƳƴȲȳɎɏẎẏỲ-ỹỾỿẙ";
case "z" :
return "Ź-žƵƶɀẐ-ẕ";
default :
return "";
}
}
public @NonNull List<Recipient> getRecipientsForMultiDeviceSync() {
String subquery = "SELECT " + ThreadDatabase.TABLE_NAME + "." + ThreadDatabase.RECIPIENT_ID + " FROM " + ThreadDatabase.TABLE_NAME;
String selection = REGISTERED + " = ? AND " +