From 3b47b6f0d6735adfdbb5b7a5581c845a0682f3a4 Mon Sep 17 00:00:00 2001 From: Kolya Opahle <k.opahle@sap.com> Date: Thu, 4 Jun 2020 13:43:20 +0200 Subject: [PATCH] Handling a NoRegistrationTokenSetException by returning UNPAIRED state (#161) --- .../storage/SubmissionRepository.kt | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/SubmissionRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/SubmissionRepository.kt index 31f3ac152..f6ab3dad8 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/SubmissionRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/SubmissionRepository.kt @@ -1,6 +1,7 @@ package de.rki.coronawarnapp.storage import androidx.lifecycle.MutableLiveData +import de.rki.coronawarnapp.exception.NoRegistrationTokenSetException import de.rki.coronawarnapp.service.submission.SubmissionService import de.rki.coronawarnapp.util.DeviceUIState import de.rki.coronawarnapp.util.formatter.TestResult @@ -18,7 +19,7 @@ object SubmissionRepository { if (LocalData.numberOfSuccessfulSubmissions() == 1) { uiState = DeviceUIState.SUBMITTED_FINAL } else { - if (LocalData.registrationToken() != "") { + if (LocalData.registrationToken() != null) { uiState = when { LocalData.isAllowedToSubmitDiagnosisKeys() == true -> { DeviceUIState.PAIRED_POSITIVE @@ -31,27 +32,31 @@ object SubmissionRepository { } private suspend fun fetchTestResult(): DeviceUIState { - val testResult = SubmissionService.asyncRequestTestResult() + try { + val testResult = SubmissionService.asyncRequestTestResult() - if (testResult == TestResult.POSITIVE) { - LocalData.isAllowedToSubmitDiagnosisKeys(true) - } + if (testResult == TestResult.POSITIVE) { + LocalData.isAllowedToSubmitDiagnosisKeys(true) + } - val initialTestResultReceivedTimestamp = LocalData.inititalTestResultReceivedTimestamp() + val initialTestResultReceivedTimestamp = LocalData.inititalTestResultReceivedTimestamp() - if (initialTestResultReceivedTimestamp == null) { - val currentTime = System.currentTimeMillis() - LocalData.inititalTestResultReceivedTimestamp(currentTime) - testResultReceivedDate.value = Date(currentTime) - } else { - testResultReceivedDate.value = Date(initialTestResultReceivedTimestamp) - } + if (initialTestResultReceivedTimestamp == null) { + val currentTime = System.currentTimeMillis() + LocalData.inititalTestResultReceivedTimestamp(currentTime) + testResultReceivedDate.value = Date(currentTime) + } else { + testResultReceivedDate.value = Date(initialTestResultReceivedTimestamp) + } - return when (testResult) { - TestResult.NEGATIVE -> DeviceUIState.PAIRED_NEGATIVE - TestResult.POSITIVE -> DeviceUIState.PAIRED_POSITIVE - TestResult.PENDING -> DeviceUIState.PAIRED_NO_RESULT - TestResult.INVALID -> DeviceUIState.PAIRED_ERROR + return when (testResult) { + TestResult.NEGATIVE -> DeviceUIState.PAIRED_NEGATIVE + TestResult.POSITIVE -> DeviceUIState.PAIRED_POSITIVE + TestResult.PENDING -> DeviceUIState.PAIRED_NO_RESULT + TestResult.INVALID -> DeviceUIState.PAIRED_ERROR + } + } catch (err: NoRegistrationTokenSetException) { + return DeviceUIState.UNPAIRED } } -- GitLab