From 9ef79821f49c75afefa2a46b2b3189dc17b17df0 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Wed, 22 Nov 2023 20:32:04 +0100 Subject: [PATCH] more thoroughly test added dictionaries --- .../inputmethod/latin/DictionaryFactory.java | 2 +- .../inputmethod/latin/utils/NewDictionaryAdder.kt | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFactory.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFactory.java index 387e01ffa..ffa56e235 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFactory.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/DictionaryFactory.java @@ -96,7 +96,7 @@ public final class DictionaryFactory { public static void killDictionary(final Context context, final AssetFileAddress f) { if (f.pointsToPhysicalFile()) { f.deleteUnderlyingFile(); - // notify the user if possible (toast not showing up on Android 13+) + // notify the user if possible (toast not showing up on Android 13+ when not in settings) // but not that important, as the not working dictionary should be obvious final String wordlistId = DictionaryInfoUtils.getWordListIdFromFileName(new File(f.mFilename).getName()); new Handler(Looper.getMainLooper()).post(() -> diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/NewDictionaryAdder.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/NewDictionaryAdder.kt index dd6fcfb6d..2f51401cc 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/NewDictionaryAdder.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/NewDictionaryAdder.kt @@ -8,6 +8,7 @@ import android.net.Uri import androidx.appcompat.app.AlertDialog import org.dslul.openboard.inputmethod.dictionarypack.DictionaryPackConstants import org.dslul.openboard.inputmethod.latin.R +import org.dslul.openboard.inputmethod.latin.ReadOnlyBinaryDictionary import org.dslul.openboard.inputmethod.latin.common.FileUtils import org.dslul.openboard.inputmethod.latin.common.LocaleUtils import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader @@ -26,10 +27,7 @@ class NewDictionaryAdder(private val context: Context, private val onAdded: ((Bo cachedDictionaryFile.delete() try { val i = context.contentResolver.openInputStream(uri) - FileUtils.copyStreamToNewFile( - i, - cachedDictionaryFile - ) + FileUtils.copyStreamToNewFile(i, cachedDictionaryFile) } catch (e: IOException) { return onDictionaryLoadingError(R.string.dictionary_load_error) } @@ -38,6 +36,12 @@ class NewDictionaryAdder(private val context: Context, private val onAdded: ((Bo ?: return onDictionaryLoadingError(R.string.dictionary_file_error) val locale = newHeader.mLocaleString.toLocale() + val dict = ReadOnlyBinaryDictionary(cachedDictionaryFile.absolutePath, 0, cachedDictionaryFile.length(), false, locale, "test") + if (!dict.isValidDictionary) { + dict.close() + return onDictionaryLoadingError(R.string.dictionary_load_error) + } + if (mainLocale == null) { val localeName = LocaleUtils.getLocaleDisplayNameInSystemLocale(locale, context) val message = context.getString(R.string.add_new_dictionary_ask_locale, @@ -141,9 +145,6 @@ class NewDictionaryAdder(private val context: Context, private val onAdded: ((Bo private fun onDictionaryLoadingError(messageId: Int) { cachedDictionaryFile.delete() -// Toast.makeText(context, messageId, Toast.LENGTH_LONG).show() - // show a dialog because toasts are not showing up on some Android versions - // possibly Android 13 because of notification permission infoDialog(context, messageId) } }