Redownload emoji search index if data is missing.

This commit is contained in:
Cody Henthorne
2025-11-19 14:25:30 -05:00
parent a3f1cc508e
commit 8030be031f
3 changed files with 16 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.database
import android.content.Context import android.content.Context
import android.text.TextUtils import android.text.TextUtils
import androidx.core.content.contentValuesOf import androidx.core.content.contentValuesOf
import org.signal.core.util.exists
import org.signal.core.util.readToSingleInt import org.signal.core.util.readToSingleInt
import org.signal.core.util.requireInt import org.signal.core.util.requireInt
import org.signal.core.util.requireNonNullString 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<EmojiSearchData>) { private fun SQLiteDatabase.insert(searchIndex: List<EmojiSearchData>) {
for (searchData in searchIndex) { for (searchData in searchIndex) {
for (label in searchData.tags) { for (label in searchData.tags) {

View File

@@ -60,6 +60,13 @@ public final class EmojiSearchIndexDownloadJob extends BaseJob {
long timeSinceCheck = System.currentTimeMillis() - SignalStore.emoji().getLastSearchIndexCheck(); long timeSinceCheck = System.currentTimeMillis() - SignalStore.emoji().getLastSearchIndexCheck();
boolean needsCheck = false; 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()) { if (SignalStore.emoji().hasSearchIndex()) {
needsCheck = timeSinceCheck > INTERVAL_WITH_INDEX; needsCheck = timeSinceCheck > INTERVAL_WITH_INDEX;
} else { } else {

View File

@@ -135,6 +135,10 @@ public class EmojiValues extends SignalStoreValues {
.apply(); .apply();
} }
public void clearSearchIndexVersion() {
getStore().beginWrite().remove(SEARCH_VERSION).apply();
}
public @Nullable String getSearchLanguage() { public @Nullable String getSearchLanguage() {
return getString(SEARCH_LANGUAGE, null); return getString(SEARCH_LANGUAGE, null);
} }