Browse Source

refactor: simplify developer options click handling and toast messages (#221)

Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/221
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 5 months ago
parent
commit
27b7e50b97
1 changed files with 14 additions and 25 deletions
  1. 14 25
      app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt

+ 14 - 25
app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt

@@ -34,7 +34,7 @@ open class SettingsFragment: PreferenceFragmentCompat() {
         // Show / hide developer preference based on whether it is enabled
         lifecycleScope.launch {
             preferenceRepository.developerOptionsEnabledFlow
-                .onEach { developerPref.isVisible = it }
+                .onEach(developerPref::setVisible)
                 .collect()
         }
 
@@ -100,41 +100,30 @@ open class SettingsFragment: PreferenceFragmentCompat() {
     @Suppress("UNUSED_PARAMETER")
     private fun onAppVersionClicked(pref: Preference): Boolean {
         if (developerPref.isVisible) return false
+
         val now = System.currentTimeMillis()
-        if (now - lastClickTimestamp >= 1000) {
-            numClicks = 1
-        } else {
-            numClicks++
-        }
+        numClicks = if (now - lastClickTimestamp >= 1000) 1 else numClicks + 1
         lastClickTimestamp = now
 
-        if (numClicks == 7) {
-            lifecycleScope.launch {
-                preferenceRepository.developerOptionsEnabledFlow.updatePreference(true)
+        lifecycleScope.launch {
+            preferenceRepository.developerOptionsEnabledFlow.updatePreference(numClicks >= 7)
+        }
 
-                lastToast?.cancel()
-                Toast.makeText(
-                    requireContext(),
-                    R.string.developer_options_enabled,
-                    Toast.LENGTH_SHORT
-                ).show()
-            }
-        } else if (numClicks > 1) {
-            lastToast?.cancel()
-            lastToast = Toast.makeText(
-                requireContext(),
-                getString(R.string.developer_options_steps, 7 - numClicks),
-                Toast.LENGTH_SHORT
-            )
-            lastToast!!.show()
+        val toastText = when {
+            numClicks == 7 -> getString(R.string.developer_options_enabled)
+            numClicks > 1 -> getString(R.string.developer_options_steps, 7 - numClicks)
+            else -> return true
         }
 
+        lastToast?.cancel()
+        lastToast = Toast.makeText(requireContext(), toastText, Toast.LENGTH_SHORT)
+        lastToast!!.show()
         return true
     }
 
     protected fun CheckBoxPreference.bindBooleanFlow(flow: PreferenceFlowWrapper<Boolean>) {
         lifecycleScope.launch {
-            flow.collect { isChecked = it }
+            flow.collect(::setChecked)
         }
 
         setOnPreferenceChangeListener { _, newValue ->