diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchTable.kt index 144d2ac064..9fbcf47577 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchTable.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.database import android.content.Context import android.text.TextUtils import androidx.core.content.contentValuesOf +import org.signal.core.util.exists import org.signal.core.util.readToSingleInt import org.signal.core.util.requireInt import org.signal.core.util.requireNonNullString @@ -104,6 +105,10 @@ class EmojiSearchTable(context: Context, databaseHelper: SignalDatabase) : Datab } } + fun hasSearchIndexData(): Boolean { + return readableDatabase.exists(TABLE_NAME).run() + } + private fun SQLiteDatabase.insert(searchIndex: List) { for (searchData in searchIndex) { for (label in searchData.tags) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java index 1bc0f61ff6..d9f6912fce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/EmojiSearchIndexDownloadJob.java @@ -60,6 +60,13 @@ public final class EmojiSearchIndexDownloadJob extends BaseJob { long timeSinceCheck = System.currentTimeMillis() - SignalStore.emoji().getLastSearchIndexCheck(); boolean needsCheck = false; + if (SignalStore.emoji().hasSearchIndex() && !SignalDatabase.emojiSearch().hasSearchIndexData()) { + Log.w(TAG, "Emoji search data missing with metadata, clearing version to redownload."); + SignalStore.emoji().clearSearchIndexVersion(); + scheduleImmediately(); + return; + } + if (SignalStore.emoji().hasSearchIndex()) { needsCheck = timeSinceCheck > INTERVAL_WITH_INDEX; } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java index caa921feb9..1ba3b71816 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java @@ -135,6 +135,10 @@ public class EmojiValues extends SignalStoreValues { .apply(); } + public void clearSearchIndexVersion() { + getStore().beginWrite().remove(SEARCH_VERSION).apply(); + } + public @Nullable String getSearchLanguage() { return getString(SEARCH_LANGUAGE, null); }