From 4ea021301e38afb302d787024bc1ae77b926f5f8 Mon Sep 17 00:00:00 2001
From: Matthias Urhahn <matthias.urhahn@sap.com>
Date: Thu, 10 Dec 2020 15:22:10 +0100
Subject: [PATCH] Fix merge regressions. * Renamed variables * Don't observe
 the countryList on the main thread (as it comes directly via appconfig now)

---
 .../consent/SubmissionConsentViewModel.kt     |   9 +-
 ...tPositiveOtherWarningNoConsentViewModel.kt |   3 +-
 ...sionResultPositiveOtherWarningViewModel.kt | 111 ------------------
 .../SubmissionYourConsentViewModel.kt         |   3 +-
 .../consent/SubmissionConsentViewModelTest.kt |   9 +-
 .../SubmissionYourConsentViewModelTest.kt     |   2 +-
 6 files changed, 18 insertions(+), 119 deletions(-)
 delete mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningViewModel.kt

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
index e720c062a..eeda799a5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModel.kt
@@ -5,18 +5,21 @@ import com.squareup.inject.assisted.AssistedInject
 import de.rki.coronawarnapp.storage.SubmissionRepository
 import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
 import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
+import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
 import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
 
 class SubmissionConsentViewModel @AssistedInject constructor(
     private val submissionRepository: SubmissionRepository,
-    interoperabilityRepository: InteroperabilityRepository
-) : CWAViewModel() {
+    interoperabilityRepository: InteroperabilityRepository,
+    dispatcherProvider: DispatcherProvider
+) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
 
     val routeToScreen: SingleLiveEvent<SubmissionNavigationEvents> = SingleLiveEvent()
 
-    val countries = interoperabilityRepository.countryListFlow.asLiveData()
+    val countries = interoperabilityRepository.countryList
+        .asLiveData(context = dispatcherProvider.Default)
 
     fun onConsentButtonClick() {
         submissionRepository.giveConsentToSubmission()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
index 8ad813794..dd6496f0b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
@@ -31,7 +31,8 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
 
     val showEnableTracingEvent = SingleLiveEvent<Unit>()
 
-    val countryList = interoperabilityRepository.countryListFlow.asLiveData()
+    val countryList = interoperabilityRepository.countryList
+        .asLiveData(context = dispatcherProvider.Default)
 
     init {
         tekHistoryUpdater.callback = object : TEKHistoryUpdater.Callback {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningViewModel.kt
deleted file mode 100644
index a6153679a..000000000
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningViewModel.kt
+++ /dev/null
@@ -1,111 +0,0 @@
-package de.rki.coronawarnapp.ui.submission.warnothers
-
-import androidx.lifecycle.asLiveData
-import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
-import com.squareup.inject.assisted.Assisted
-import com.squareup.inject.assisted.AssistedInject
-import de.rki.coronawarnapp.exception.NoRegistrationTokenSetException
-import de.rki.coronawarnapp.nearby.ENFClient
-import de.rki.coronawarnapp.notification.TestResultNotificationService
-import de.rki.coronawarnapp.service.submission.SubmissionService
-import de.rki.coronawarnapp.storage.LocalData
-import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
-import de.rki.coronawarnapp.submission.SubmissionTask
-import de.rki.coronawarnapp.submission.Symptoms
-import de.rki.coronawarnapp.task.TaskController
-import de.rki.coronawarnapp.task.common.DefaultTaskRequest
-import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
-import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
-import de.rki.coronawarnapp.util.flow.combine
-import de.rki.coronawarnapp.util.ui.SingleLiveEvent
-import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onEach
-import timber.log.Timber
-import java.util.UUID
-
-class SubmissionResultPositiveOtherWarningViewModel @AssistedInject constructor(
-    @Assisted private val symptoms: Symptoms,
-    dispatcherProvider: DispatcherProvider,
-    private val enfClient: ENFClient,
-    private val taskController: TaskController,
-    interoperabilityRepository: InteroperabilityRepository,
-    private val testResultNotificationService: TestResultNotificationService
-) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    private var currentSubmissionRequestId: UUID? = null
-
-    private val currentSubmission = taskController.tasks
-        .map { it.find { taskInfo -> taskInfo.taskState.request.id == currentSubmissionRequestId }?.taskState }
-        .onEach {
-            it?.let {
-                when {
-                    it.isFailed -> submissionError.postValue(it.error)
-                    it.isSuccessful -> routeToScreen.postValue(SubmissionNavigationEvents.NavigateToSubmissionDone)
-                }
-            }
-        }
-
-    val uiState = combine(
-        currentSubmission,
-        interoperabilityRepository.countryList
-    ) { state, countries ->
-        WarnOthersState(
-            submitTaskState = state,
-            countryList = countries
-        )
-    }.asLiveData(context = dispatcherProvider.Default)
-
-    val submissionError = SingleLiveEvent<Throwable>()
-    val routeToScreen: SingleLiveEvent<SubmissionNavigationEvents> = SingleLiveEvent()
-
-    val requestKeySharing = SingleLiveEvent<Unit>()
-    val showEnableTracingEvent = SingleLiveEvent<Unit>()
-
-    fun onBackPressed() {
-        routeToScreen.postValue(SubmissionNavigationEvents.NavigateToTestResult)
-    }
-
-    fun onWarnOthersPressed() {
-        launch {
-            if (enfClient.isTracingEnabled.first()) {
-                requestKeySharing.postValue(Unit)
-            } else {
-                showEnableTracingEvent.postValue(Unit)
-            }
-        }
-    }
-
-    fun onKeysShared(keys: List<TemporaryExposureKey>) {
-        if (keys.isNotEmpty()) {
-            submitDiagnosisKeys(keys)
-        } else {
-            submitWithNoDiagnosisKeys()
-            routeToScreen.postValue(SubmissionNavigationEvents.NavigateToSubmissionDone)
-        }
-        testResultNotificationService.cancelPositiveTestResultNotification()
-    }
-
-    private fun submitDiagnosisKeys(keys: List<TemporaryExposureKey>) {
-        Timber.d("submitDiagnosisKeys(keys=%s, symptoms=%s)", keys, symptoms)
-        val registrationToken =
-            LocalData.registrationToken() ?: throw NoRegistrationTokenSetException()
-        val taskRequest = DefaultTaskRequest(
-            SubmissionTask::class,
-            SubmissionTask.Arguments(registrationToken, keys, symptoms)
-        )
-        currentSubmissionRequestId = taskRequest.id
-        taskController.submit(taskRequest)
-    }
-
-    private fun submitWithNoDiagnosisKeys() {
-        Timber.d("submitWithNoDiagnosisKeys()")
-        SubmissionService.submissionSuccessful()
-    }
-
-    @AssistedInject.Factory
-    interface Factory : CWAViewModelFactory<SubmissionResultPositiveOtherWarningViewModel> {
-        fun create(symptoms: Symptoms): SubmissionResultPositiveOtherWarningViewModel
-    }
-}
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
index 1d8817763..a0fce136f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
@@ -18,7 +18,8 @@ class SubmissionYourConsentViewModel @AssistedInject constructor(
 
     val clickEvent: SingleLiveEvent<SubmissionYourConsentEvents> = SingleLiveEvent()
     val consent = submissionRepository.hasGivenConsentToSubmission.asLiveData()
-    val countryList = interoperabilityRepository.countryListFlow.asLiveData()
+    val countryList = interoperabilityRepository.countryList
+        .asLiveData(context = dispatcherProvider.Default)
 
     fun goBack() {
         clickEvent.postValue(SubmissionYourConsentEvents.GoBack)
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
index ffd94b9fd..a5f39e2e9 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentViewModelTest.kt
@@ -15,6 +15,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
 import org.junit.jupiter.api.BeforeEach
 import org.junit.jupiter.api.Test
 import org.junit.jupiter.api.extension.ExtendWith
+import testhelpers.TestDispatcherProvider
 import testhelpers.extensions.InstantExecutorExtension
 
 @ExtendWith(InstantExecutorExtension::class)
@@ -30,9 +31,13 @@ class SubmissionConsentViewModelTest {
     @BeforeEach
     fun setUp() {
         MockKAnnotations.init(this)
-        every { interoperabilityRepository.countryListFlow } returns MutableStateFlow(countryList)
+        every { interoperabilityRepository.countryList } returns MutableStateFlow(countryList)
         every { submissionRepository.giveConsentToSubmission() } just Runs
-        viewModel = SubmissionConsentViewModel(submissionRepository, interoperabilityRepository)
+        viewModel = SubmissionConsentViewModel(
+            submissionRepository,
+            interoperabilityRepository,
+            dispatcherProvider = TestDispatcherProvider
+        )
     }
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
index 56b4b2e06..ae54f2e94 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
@@ -34,7 +34,7 @@ class SubmissionYourConsentViewModelTest : BaseTest() {
     @BeforeEach
     fun setUp() {
         MockKAnnotations.init(this)
-        every { interoperabilityRepository.countryListFlow } returns MutableStateFlow(countryList)
+        every { interoperabilityRepository.countryList } returns MutableStateFlow(countryList)
         every { submissionRepository.hasGivenConsentToSubmission } returns flowOf(true)
         every { submissionRepository.giveConsentToSubmission() } just Runs
         every { submissionRepository.revokeConsentToSubmission() } just Runs
-- 
GitLab