From 65cbb8481503c00b052c3f33f167287e638d62cc Mon Sep 17 00:00:00 2001 From: Kolya Opahle <k.opahle@sap.com> Date: Tue, 27 Oct 2020 17:19:13 +0100 Subject: [PATCH] Homescreen Notifications, even though keys were submitted (EXPOSUREAPP-3181, EXPOSUREAPP-3182) (#1418) * Added additional checks to notification of exposure/test-result to check for finished submission Signed-off-by: Kolya Opahle <k.opahle@sap.com> * Small changes to code style Signed-off-by: Kolya Opahle <k.opahle@sap.com> Co-authored-by: Matthias Urhahn <matthias.urhahn@sap.com> Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../main/java/de/rki/coronawarnapp/storage/LocalData.kt | 2 ++ .../de/rki/coronawarnapp/storage/SubmissionRepository.kt | 2 +- .../rki/coronawarnapp/transaction/RiskLevelTransaction.kt | 6 +++++- .../worker/DiagnosisTestResultRetrievalPeriodicWorker.kt | 7 ++++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt index 0945e1681..f029b82ca 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/storage/LocalData.kt @@ -615,6 +615,8 @@ object LocalData { ) } + fun submissionWasSuccessful(): Boolean = numberOfSuccessfulSubmissions() >= 1 + fun testGUID(): String? = getSharedPreferenceInstance().getString( CoronaWarnApplication.getAppContext() .getString(R.string.preference_test_guid), 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 cd5a6cfc3..eff4ebae8 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 @@ -114,7 +114,7 @@ object SubmissionRepository { private suspend fun refreshUIState(refreshTestResult: Boolean) { var uiState = DeviceUIState.UNPAIRED - if (LocalData.numberOfSuccessfulSubmissions() == 1) { + if (LocalData.submissionWasSuccessful()) { uiState = DeviceUIState.SUBMITTED_FINAL } else { if (LocalData.registrationToken() != null) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt index 4437bdd56..00694db84 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/transaction/RiskLevelTransaction.kt @@ -563,7 +563,11 @@ object RiskLevelTransaction : Transaction() { */ private fun updateRiskLevelScore(riskLevel: RiskLevel) { val lastCalculatedScore = RiskLevelRepository.getLastCalculatedScore() - if (RiskLevel.riskLevelChangedBetweenLowAndHigh(lastCalculatedScore, riskLevel)) { + if (RiskLevel.riskLevelChangedBetweenLowAndHigh( + lastCalculatedScore, + riskLevel + ) && !LocalData.submissionWasSuccessful() + ) { NotificationHelper.sendNotification( CoronaWarnApplication.getAppContext().getString(R.string.notification_body), NotificationCompat.PRIORITY_HIGH diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt index 8b247a223..03543b63c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/worker/DiagnosisTestResultRetrievalPeriodicWorker.kt @@ -89,13 +89,18 @@ class DiagnosisTestResultRetrievalPeriodicWorker( * @see TestResult */ private fun initiateNotification(testResult: TestResult) { + if (LocalData.isTestResultNotificationSent() || LocalData.submissionWasSuccessful()) { + return + } + if (testResult == TestResult.NEGATIVE || testResult == TestResult.POSITIVE || testResult == TestResult.INVALID ) { if (!CoronaWarnApplication.isAppInForeground) { NotificationHelper.sendNotification( CoronaWarnApplication.getAppContext() - .getString(R.string.notification_name), CoronaWarnApplication.getAppContext() + .getString(R.string.notification_name), + CoronaWarnApplication.getAppContext() .getString(R.string.notification_body), NotificationCompat.PRIORITY_HIGH ) -- GitLab