From 12e89f68ecc4194fa97054f3256e9efd0186efa4 Mon Sep 17 00:00:00 2001
From: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
Date: Wed, 1 Jul 2020 08:57:23 +0200
Subject: [PATCH] Fix: Tracing clickable row switch (#787)

* added isEnabled logic like it's on the switch

* changed comment

* exchanged formatter
---
 .../ui/settings/SettingsTracingFragment.kt       | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
index 5cc6b9251..2142f7014 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
@@ -21,6 +21,7 @@ import de.rki.coronawarnapp.ui.viewmodel.SettingsViewModel
 import de.rki.coronawarnapp.ui.viewmodel.TracingViewModel
 import de.rki.coronawarnapp.util.DialogHelper
 import de.rki.coronawarnapp.util.ExternalActionHelper
+import de.rki.coronawarnapp.util.formatter.formatTracingSwitchEnabled
 import de.rki.coronawarnapp.worker.BackgroundWorkScheduler
 import kotlinx.coroutines.launch
 
@@ -102,9 +103,20 @@ class SettingsTracingFragment : Fragment(),
         switch.setOnClickListener {
             startStopTracing()
         }
-        // Additional click target to toggle switch
         row.setOnClickListener {
-            if (row.isEnabled) startStopTracing()
+            val isTracingEnabled =
+                tracingViewModel.isTracingEnabled.value ?: throw IllegalArgumentException()
+            val isBluetoothEnabled =
+                settingsViewModel.isBluetoothEnabled.value ?: throw IllegalArgumentException()
+            val isConnectionEnabled =
+                settingsViewModel.isConnectionEnabled.value ?: throw IllegalArgumentException()
+            // check if the row is clickable, this adds the switch behaviour
+            val isEnabled = formatTracingSwitchEnabled(
+                isTracingEnabled,
+                isBluetoothEnabled,
+                isConnectionEnabled
+            )
+            if (isEnabled) startStopTracing()
         }
         back.setOnClickListener {
             (activity as MainActivity).goBack()
-- 
GitLab