From dbb966f7af765b4780020cf6d88a10779e4467ab Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 21 Jan 2024 17:30:31 +0100 Subject: [PATCH] better deal with missing layouts in debug mode --- .../inputmethod/latin/utils/SubtypeSettings.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt index 53bb68f2b..59d63af46 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/SubtypeSettings.kt @@ -240,10 +240,15 @@ private fun loadEnabledSubtypes(context: Context) { for (localeAndLayout in subtypeStrings) { require(localeAndLayout.size == 2) val subtypesForLocale = resourceSubtypesByLocale[localeAndLayout.first()] - if (DebugFlags.DEBUG_ENABLED) // should not happen, but should not crash for normal user - require(subtypesForLocale != null) - else if (subtypesForLocale == null) + if (subtypesForLocale == null) { + val message = "no resource subtype for $localeAndLayout" + Log.w(TAG, message) + if (DebugFlags.DEBUG_ENABLED) + Toast.makeText(context, message, Toast.LENGTH_LONG).show() + else // don't remove in debug mode + removeEnabledSubtype(prefs, localeAndLayout.joinToString(LOCALE_LAYOUT_SEPARATOR)) continue + } val subtype = subtypesForLocale.firstOrNull { SubtypeLocaleUtils.getKeyboardLayoutSetName(it) == localeAndLayout.last() } ?: additionalSubtypes.firstOrNull { it.locale() == localeAndLayout.first() && SubtypeLocaleUtils.getKeyboardLayoutSetName(it) == localeAndLayout.last() }