safeguard against potential issues with custom currency key

This commit is contained in:
Helium314 2024-06-30 09:03:13 +02:00
parent 2150b399aa
commit beb52d322f
3 changed files with 8 additions and 4 deletions

View file

@ -277,7 +277,7 @@ private fun getCurrencyKey(locale: Locale): Pair<String, List<String>> {
Settings.getInstance().readCustomCurrencyKey().takeIf { it.isNotBlank() }?.let { Settings.getInstance().readCustomCurrencyKey().takeIf { it.isNotBlank() }?.let {
val split = it.trim().splitOnWhitespace() val split = it.trim().splitOnWhitespace()
if (split.isNotEmpty()) if (split.isNotEmpty())
return split[0] to (split.toSet() + genericCurrencyPopupKeys).filterNot { it == split[0] } return split[0] to (split.toSet() + genericCurrencyPopupKeys).filterNot { it == split[0] }.take(6)
} }
if (locale.country.matches(euroCountries)) if (locale.country.matches(euroCountries))
return euro return euro

View file

@ -19,6 +19,7 @@ import helium314.keyboard.latin.utils.Log
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.content.edit import androidx.core.content.edit
import androidx.core.widget.doAfterTextChanged
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
@ -43,6 +44,7 @@ import helium314.keyboard.latin.SystemBroadcastReceiver
import helium314.keyboard.latin.checkVersionUpgrade import helium314.keyboard.latin.checkVersionUpgrade
import helium314.keyboard.latin.common.FileUtils import helium314.keyboard.latin.common.FileUtils
import helium314.keyboard.latin.common.LocaleUtils.constructLocale import helium314.keyboard.latin.common.LocaleUtils.constructLocale
import helium314.keyboard.latin.common.splitOnWhitespace
import helium314.keyboard.latin.settings.SeekBarDialogPreference.ValueProxy import helium314.keyboard.latin.settings.SeekBarDialogPreference.ValueProxy
import helium314.keyboard.latin.utils.AdditionalSubtypeUtils import helium314.keyboard.latin.utils.AdditionalSubtypeUtils
import helium314.keyboard.latin.utils.CUSTOM_FUNCTIONAL_LAYOUT_NORMAL import helium314.keyboard.latin.utils.CUSTOM_FUNCTIONAL_LAYOUT_NORMAL
@ -469,7 +471,7 @@ class AdvancedSettingsFragment : SubScreenFragment() {
layout.addView(et) layout.addView(et)
val padding = ResourceUtils.toPx(8, resources) val padding = ResourceUtils.toPx(8, resources)
layout.setPadding(3 * padding, padding, padding, padding) layout.setPadding(3 * padding, padding, padding, padding)
AlertDialog.Builder(requireContext()) val d = AlertDialog.Builder(requireContext())
.setTitle(R.string.customize_currencies) .setTitle(R.string.customize_currencies)
.setView(layout) .setView(layout)
.setPositiveButton(android.R.string.ok) { _, _ -> .setPositiveButton(android.R.string.ok) { _, _ ->
@ -478,7 +480,9 @@ class AdvancedSettingsFragment : SubScreenFragment() {
} }
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.setNeutralButton(R.string.button_default) { _, _ -> sharedPreferences.edit { putString(Settings.PREF_CUSTOM_CURRENCY_KEY, "") } } .setNeutralButton(R.string.button_default) { _, _ -> sharedPreferences.edit { putString(Settings.PREF_CUSTOM_CURRENCY_KEY, "") } }
.show() .create()
et.doAfterTextChanged { d.getButton(AlertDialog.BUTTON_POSITIVE)?.isEnabled = et.text.toString().splitOnWhitespace().none { it.length > 8 } }
d.show()
} }
private fun setupKeyLongpressTimeoutSettings() { private fun setupKeyLongpressTimeoutSettings() {

View file

@ -504,7 +504,7 @@ disposition rather than other common dispositions for Latin languages. [CHAR LIM
<!-- Title for customizing currencies --> <!-- Title for customizing currencies -->
<string name="customize_currencies">Customize currencies</string> <string name="customize_currencies">Customize currencies</string>
<!-- Info for customizing currencies --> <!-- Info for customizing currencies -->
<string name="customize_currencies_detail">Set main and secondary currency symbols, separated with space</string> <string name="customize_currencies_detail">Set main and up to 6 secondary currency symbols, separated with space</string>
<!-- Message for selecting day or night background image --> <!-- Message for selecting day or night background image -->
<string name="day_or_night_image">Set image for day or night mode?</string> <string name="day_or_night_image">Set image for day or night mode?</string>
<!-- Button for selecting day --> <!-- Button for selecting day -->