diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePredictive.java b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePredictive.java index d990ab93..0b5ab6d4 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePredictive.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/modes/ModePredictive.java @@ -18,6 +18,7 @@ import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.util.Characters; import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Text; +import io.github.sspanak.tt9.util.TextTools; public class ModePredictive extends InputMode { private final String LOG_TAG = getClass().getSimpleName(); @@ -329,14 +330,19 @@ public class ModePredictive extends InputMode { return; } + if (Characters.isStaticEmoji(currentWord)) { + return; + } + // increment the frequency of the given word try { - String sequence = language.getDigitSequenceForWord(currentWord); + Language workingLanguage = TextTools.isGraphic(currentWord) ? new EmojiLanguage() : language; + String sequence = workingLanguage.getDigitSequenceForWord(currentWord); - // emoji and punctuation are not in the database, so there is no point in + // punctuation and special chars are not in the database, so there is no point in // running queries that would update nothing - if (!sequence.startsWith(NaturalLanguage.PUNCTUATION_KEY) && !sequence.startsWith(NaturalLanguage.SPECIAL_CHARS_KEY)) { - WordStoreAsync.makeTopWord(language, currentWord, sequence); + if (!sequence.equals(NaturalLanguage.PUNCTUATION_KEY) && !sequence.startsWith(NaturalLanguage.SPECIAL_CHARS_KEY)) { + WordStoreAsync.makeTopWord(workingLanguage, currentWord, sequence); } } catch (Exception e) { Logger.e(LOG_TAG, "Failed incrementing priority of word: '" + currentWord + "'. " + e.getMessage()); diff --git a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java index 99f874f6..b28be3cf 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/Characters.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/Characters.java @@ -91,6 +91,14 @@ public class Characters { )) )); + public static boolean isStaticEmoji(String emoji) { + for (ArrayList group : Emoji) { + if (group.contains(emoji)) { + return true; + } + } + return false; + } public static boolean isGraphic(char ch) { return !(ch < 256 || Character.isLetterOrDigit(ch) || Character.isAlphabetic(ch)); @@ -100,7 +108,6 @@ public class Characters { return Build.VERSION.SDK_INT < Build.VERSION_CODES.M; } - public static ArrayList getEmoji(int level) { if (noEmojiSupported()) { return new ArrayList<>(TextEmoticons);