From 8b11970adb7d09bc9a4be78cfaee04cb7e084177 Mon Sep 17 00:00:00 2001 From: Vitali Zaidman Date: Wed, 23 Apr 2025 04:45:01 -0700 Subject: [PATCH] accept Settings.Global.TRANSITION_ANIMATION_SCALE with a comma decimal separator (#50864) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/50864 Changelog: [Android][Fixed] Settings.Global.TRANSITION_ANIMATION_SCALE accepts comma as decimal separator Reviewed By: javache Differential Revision: D73501445 fbshipit-source-id: f7f54dbbcbc4cea1e746222febf8ec63638a73ac --- .../accessibilityinfo/AccessibilityInfoModule.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt index 7d60d02343e..2f11879a277 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/accessibilityinfo/AccessibilityInfoModule.kt @@ -105,9 +105,19 @@ internal class AccessibilityInfoModule(context: ReactApplicationContext) : val rawValue = Settings.Global.getString(contentResolver, Settings.Global.TRANSITION_ANIMATION_SCALE) - // Parse the value as a float so we can check for a single value. - val parsedValue = rawValue?.toFloat() ?: 1f - return parsedValue == 0f + if (rawValue == null) { + return false + } + + try { + // In some locales, the decimal separator is a comma instead of a dot, + // but "toFloat" would crash failing to conver these. + val parsedValue = rawValue.replace(',', '.').toFloat() + return parsedValue == 0f + } catch (e: NumberFormatException) { + // If the value is not a valid number, we assume reduced motion is not enabled + return false + } } private val isInvertColorsEnabledValue: Boolean