Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit ae26a21

Browse files
authored
Merge branch 'release/3.0.x' into feature/13208_refactor_datastore_3
2 parents 955e5c2 + 8c16752 commit ae26a21

File tree

13 files changed

+113
-53
lines changed

13 files changed

+113
-53
lines changed

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/booster/BoosterNotificationService.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import de.rki.coronawarnapp.covidcertificate.notification.PersonNotificationSend
77
import de.rki.coronawarnapp.covidcertificate.person.core.PersonCertificatesSettings
88
import de.rki.coronawarnapp.tag
99
import de.rki.coronawarnapp.util.TimeStamper
10+
import kotlinx.coroutines.flow.first
1011
import timber.log.Timber
1112
import javax.inject.Inject
1213
import javax.inject.Singleton
@@ -55,7 +56,18 @@ class BoosterNotificationService @Inject constructor(
5556
personCertificatesSettings.setBoosterNotifiedAt(personIdentifier, timeStamper.nowUTC)
5657
Timber.tag(TAG).d("Person %s notified about booster rule change", codeSHA256)
5758
} else {
58-
personCertificatesSettings.acknowledgeBoosterRule(personIdentifier, newRuleId)
59+
val lastNotifiedRule = personCertificatesSettings.personsSettings.first().entries.firstOrNull {
60+
it.key.belongsToSamePerson(personIdentifier)
61+
}?.value?.lastSeenBoosterRuleIdentifier
62+
Timber.tag(TAG).d("lastNotifiedRule=%s, newRuleId=%s", lastNotifiedRule, newRuleId)
63+
if (lastNotifiedRule != null && lastNotifiedRule == newRuleId) {
64+
Timber.tag(TAG).d(
65+
"Dismissing badge because lastNotifiedRule did not change lastNotifiedRule=%s ",
66+
lastNotifiedRule
67+
)
68+
personCertificatesSettings.acknowledgeBoosterRule(personIdentifier, newRuleId)
69+
}
70+
5971
Timber.tag(TAG).d("Person %s shouldn't be notified about booster rule=%s", codeSHA256, newRuleId)
6072
}
6173

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/srs/ui/consent/SrsSubmissionConsentFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class SrsSubmissionConsentFragment : Fragment(R.layout.fragment_srs_submission_c
7070
viewModel.event.observe2(this) {
7171
when (it) {
7272
SrsSubmissionConsentNavigationEvents.NavigateToDataPrivacy ->
73-
findNavController().navigate(R.id.informationPrivacyFragment)
73+
findNavController().navigate(R.id.surveyConsentDetailFragment)
7474

7575
SrsSubmissionConsentNavigationEvents.NavigateToMainScreen ->
7676
findNavController().navigate(

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/srs/ui/done/SrsSubmissionDoneFragment.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import android.view.View
55
import android.view.accessibility.AccessibilityEvent
66
import androidx.core.view.isVisible
77
import androidx.fragment.app.Fragment
8-
import androidx.navigation.fragment.navArgs
98
import de.rki.coronawarnapp.R
109
import de.rki.coronawarnapp.databinding.FragmentSubmissionDoneBinding
1110
import de.rki.coronawarnapp.util.ContextExtensions.getDrawableCompat
@@ -14,8 +13,6 @@ import de.rki.coronawarnapp.util.ui.viewBinding
1413

1514
class SrsSubmissionDoneFragment : Fragment(R.layout.fragment_submission_done) {
1615

17-
private val args by navArgs<SrsSubmissionDoneFragmentArgs>()
18-
1916
private val binding: FragmentSubmissionDoneBinding by viewBinding()
2017

2118
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -28,8 +25,8 @@ class SrsSubmissionDoneFragment : Fragment(R.layout.fragment_submission_done) {
2825
}
2926

3027
submissionDoneButtonDone.setOnClickListener { popBackStack() }
31-
submissionDoneContent.submissionDoneContent.submissionDonePcrValidation.root.isVisible = true // TODO
32-
submissionDoneContent.submissionDoneContent.submissionDoneIllness.root.isVisible = true // TODO
28+
// Regardless of the test type we show the same screen
29+
submissionDoneContent.submissionDoneContent.submissionDoneIllness.root.isVisible = false
3330
}
3431
}
3532

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/consent/SubmissionConsentFragment.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
6464
is SubmissionNavigationEvents.NavigateToDataPrivacy -> findNavController().navigate(
6565
SubmissionConsentFragmentDirections.actionSubmissionConsentFragmentToInformationPrivacyFragment()
6666
)
67+
6768
is SubmissionNavigationEvents.ResolvePlayServicesException ->
6869
it.exception.status.startResolutionForResult(
6970
requireActivity(),
@@ -79,19 +80,22 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
7980
),
8081
navOptions
8182
)
83+
8284
is SubmissionNavigationEvents.NavigateClose -> {
8385
if (navArgs.comesFromDispatcherFragment) {
8486
findNavController().navigate(
8587
SubmissionConsentFragmentDirections.actionSubmissionConsentFragmentToHomeFragment()
8688
)
8789
} else popBackStack()
8890
}
91+
8992
is SubmissionNavigationEvents.NavigateBackToTestRegistration -> findNavController().navigate(
9093
SubmissionConsentFragmentDirections
9194
.actionSubmissionConsentFragmentToTestRegistrationSelectionFragment(
9295
navArgs.coronaTestQrCode
9396
)
9497
)
98+
9599
else -> Unit
96100
}
97101
}
@@ -113,17 +117,20 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
113117
State.Working -> {
114118
// Handled above
115119
}
120+
116121
is State.Error -> state.showExceptionDialog(this) { popBackStack() }
117122
is State.TestRegistered -> when {
118123
state.test.isPositive ->
119124
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(
120-
testIdentifier = state.test.identifier
125+
testIdentifier = state.test.identifier,
126+
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
121127
)
122128
.run { findNavController().navigate(this, navOptions) }
123129

124130
else ->
125131
NavGraphDirections.actionSubmissionTestResultPendingFragment(
126-
testIdentifier = state.test.identifier
132+
testIdentifier = state.test.identifier,
133+
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
127134
)
128135
.run { findNavController().navigate(this, navOptions) }
129136
}

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/CertificateStateHelper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fun IncludeCertificateQrcodeCardBinding.bindValidityViews(
5757
when (certificate.displayedState()) {
5858
is ExpiringSoon -> {
5959
setQrTitle(certificate, qrTitle, context)
60-
notificationBadge.isVisible = certificate.hasNotificationBadge
60+
notificationBadge.isVisible = false
6161
statusIcon.constraintLayoutParams.verticalBias = 0f
6262
statusIcon.setImageDrawable(context.getDrawableCompat(R.drawable.ic_av_timer))
6363
statusTitle.text = context.getString(
@@ -72,7 +72,7 @@ fun IncludeCertificateQrcodeCardBinding.bindValidityViews(
7272

7373
is Expired -> {
7474
setQrTitle(certificate, qrTitle, context)
75-
notificationBadge.isVisible = certificate.hasNotificationBadge
75+
notificationBadge.isVisible = false
7676
statusIcon.constraintLayoutParams.verticalBias = 1.0f
7777
statusIcon.setImageDrawable(context.getDrawableCompat(R.drawable.ic_error_outline))
7878
statusTitle.text = context.getText(R.string.certificate_qr_expired)

Corona-Warn-App/src/main/res/layout/fragment_srs_submission_consent.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@
205205
app:layout_constraintEnd_toEndOf="@id/guideline_end"
206206
app:layout_constraintStart_toStartOf="@id/guideline_start"
207207
app:layout_constraintTop_toBottomOf="@id/srs_next_step_submission"
208-
app:titleText="@string/submission_consent_main_bottom_body" />
208+
app:titleText="@string/srs_submission_consent_survey_button" />
209209

210210
<androidx.constraintlayout.widget.Guideline
211211
android:id="@+id/guideline_start"

Corona-Warn-App/src/main/res/layout/include_srs_privacy_card.xml

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@
4747
app:layout_constraintEnd_toEndOf="@id/guideline_end"
4848
app:layout_constraintStart_toStartOf="@id/guideline_start">
4949

50-
<include layout="@layout/include_bullet_point"
50+
<include
51+
layout="@layout/include_bullet_point"
5152
android:layout_width="@dimen/bullet_point_size"
5253
android:layout_height="@dimen/bullet_point_size"
53-
app:layout_constraintBaseline_toBaselineOf="@id/first_bulletpoint_title"/>
54+
app:layout_constraintBaseline_toBaselineOf="@id/first_bulletpoint_title" />
5455

5556
<TextView
5657
android:id="@+id/first_bulletpoint_title"
@@ -74,10 +75,11 @@
7475
app:layout_constraintEnd_toEndOf="@id/guideline_end"
7576
app:layout_constraintStart_toStartOf="@id/guideline_start">
7677

77-
<include layout="@layout/include_bullet_point"
78+
<include
79+
layout="@layout/include_bullet_point"
7880
android:layout_width="@dimen/bullet_point_size"
7981
android:layout_height="@dimen/bullet_point_size"
80-
app:layout_constraintBaseline_toBaselineOf="@id/second_bulletpoint_title"/>
82+
app:layout_constraintBaseline_toBaselineOf="@id/second_bulletpoint_title" />
8183

8284
<TextView
8385
android:id="@+id/second_bulletpoint_title"
@@ -101,10 +103,11 @@
101103
app:layout_constraintEnd_toEndOf="@id/guideline_end"
102104
app:layout_constraintStart_toStartOf="@id/guideline_start">
103105

104-
<include layout="@layout/include_bullet_point"
106+
<include
107+
layout="@layout/include_bullet_point"
105108
android:layout_width="@dimen/bullet_point_size"
106109
android:layout_height="@dimen/bullet_point_size"
107-
app:layout_constraintBaseline_toBaselineOf="@id/third_bulletpoint_title"/>
110+
app:layout_constraintBaseline_toBaselineOf="@id/third_bulletpoint_title" />
108111

109112
<TextView
110113
android:id="@+id/third_bulletpoint_title"
@@ -135,7 +138,7 @@
135138
layout="@layout/view_bullet_point_text"
136139
android:layout_width="0dp"
137140
android:layout_height="wrap_content"
138-
android:layout_marginTop="@dimen/spacing_tiny"
141+
android:layout_marginTop="@dimen/spacing_normal"
139142
app:itemText="@{@string/srs_submission_consent_second_bulletpoint_text}"
140143
app:layout_constraintEnd_toEndOf="@id/guideline_end"
141144
app:layout_constraintStart_toStartOf="@id/guideline_start"
@@ -152,6 +155,28 @@
152155
app:layout_constraintStart_toStartOf="@id/guideline_start"
153156
app:layout_constraintTop_toBottomOf="@id/srs_submission_consent_main_second_point" />
154157

158+
<include
159+
android:id="@+id/srs_submission_consent_main_fourth_point"
160+
layout="@layout/view_bullet_point_text"
161+
android:layout_width="0dp"
162+
android:layout_height="wrap_content"
163+
android:layout_marginTop="@dimen/spacing_tiny"
164+
app:itemText="@{@string/srs_submission_consent_fourth_bulletpoint_text}"
165+
app:layout_constraintEnd_toEndOf="@id/guideline_end"
166+
app:layout_constraintStart_toStartOf="@id/guideline_start"
167+
app:layout_constraintTop_toBottomOf="@id/srs_submission_consent_main_third_point" />
168+
169+
<include
170+
android:id="@+id/srs_submission_consent_main_fifth_point"
171+
layout="@layout/view_bullet_point_text"
172+
android:layout_width="0dp"
173+
android:layout_height="wrap_content"
174+
android:layout_marginTop="@dimen/spacing_tiny"
175+
app:itemText="@{@string/srs_submission_consent_fifth_bulletpoint_text}"
176+
app:layout_constraintEnd_toEndOf="@id/guideline_end"
177+
app:layout_constraintStart_toStartOf="@id/guideline_start"
178+
app:layout_constraintTop_toBottomOf="@id/srs_submission_consent_main_fourth_point" />
179+
155180
<include layout="@layout/merge_guidelines_side" />
156181

157182
</androidx.constraintlayout.widget.ConstraintLayout>

Corona-Warn-App/src/main/res/layout/survey_consent_detail_fragment.xml

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@
5050
android:layout_width="0dp"
5151
android:layout_height="wrap_content"
5252
android:layout_marginTop="45dp"
53+
android:layout_marginBottom="45dp"
5354
android:orientation="vertical"
5455
app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
5556
app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
56-
app:layout_constraintTop_toBottomOf="@+id/survey_details_headline">
57+
app:layout_constraintTop_toBottomOf="@+id/survey_details_headline"
58+
app:layout_constraintBottom_toBottomOf="parent">
5759

5860
<TextView
5961
android:id="@+id/legal_title"
@@ -81,30 +83,6 @@
8183

8284
</androidx.constraintlayout.widget.ConstraintLayout>
8385

84-
<TextView
85-
android:id="@+id/survey_details_bottom_info_title"
86-
style="@style/subtitle"
87-
android:layout_width="0dp"
88-
android:layout_height="wrap_content"
89-
android:layout_marginTop="33dp"
90-
android:focusable="true"
91-
android:text="@string/datadonation_survey_consent_details_title_below"
92-
app:layout_constraintEnd_toEndOf="@id/guideline_end"
93-
app:layout_constraintStart_toStartOf="@id/guideline_start"
94-
app:layout_constraintTop_toBottomOf="@id/consent_layout" />
95-
96-
<TextView
97-
android:id="@+id/survey_details_bottom_info_body"
98-
style="@style/subtitle"
99-
android:layout_width="0dp"
100-
android:layout_height="wrap_content"
101-
android:layout_marginTop="@dimen/spacing_small"
102-
android:focusable="true"
103-
android:text="@string/datadonation_survey_consent_details_text_below"
104-
app:layout_constraintEnd_toEndOf="@id/guideline_end"
105-
app:layout_constraintStart_toStartOf="@id/guideline_start"
106-
app:layout_constraintTop_toBottomOf="@id/survey_details_bottom_info_title" />
107-
10886
<androidx.constraintlayout.widget.Guideline
10987
android:id="@+id/guideline_start"
11088
android:layout_width="wrap_content"

Corona-Warn-App/src/main/res/values-de/legal_strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
<!-- XHED: Title for the information box in the survey consent detail screen -->
6868
<string name="datadonation_survey_consent_details_title">"Prüfung der Echtheit und Drittlandsübermittlung"</string>
6969
<!-- XTXT: Text for the information box in the survey consent detail screen -->
70-
<string name="datadonation_survey_consent_details_text">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um zu verhindern, dass Nutzer mehrfach an der Befragung teilnehmen und so die Ergebnisse der Befragung verfälschen. Die Kennung wird hier einmalig an Google übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA oder andere Drittländer kommen. Dort besteht möglicherweise kein dem europäischen Recht entsprechendes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass Sicherheitsbehörden im Drittland, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Google zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Google übermittelte Kennung. Die weiteren Angaben über Ihre Teilnahme an der Befragung erhält Google nicht. Möglicherweise kann Google jedoch anhand der Kennung auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat.\n\nWenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Teilnahme an dieser Befragung ist dann jedoch nicht möglich."</string>
70+
<string name="datadonation_survey_consent_details_text">"Um die Echtheit Ihrer App zu bestätigen, erzeugt Ihr Smartphone eine eindeutige Kennung, die Informationen über die Version Ihres Smartphones und der App enthält. Das ist erforderlich, um sicherzustellen, dass nur Nutzer eine Warnung nach einem positiven Selbsttest oder mit einem Testergebnis, das nicht in der App vorliegt, auslösen, die tatsächlich die Corona-Warn-App nutzen und nicht manipulierte Warnungen bereitstellen. Das Verfahren dient außerdem dazu, sicherzustellen, dass Warnungen nach einem positiven Selbsttest oder mit einem Testergebnis, das nicht in der App vorliegt, nur alle drei Monate möglich sind.\n\n\Die bei der Echtheitsprüfung erzeugte eindeutige Kennung wird beim Auslösen der Warnung einmalig an Apple übermittelt. Dabei kann es auch zu einer Datenübermittlung in die USA oder andere Drittländer kommen. Dort besteht möglicherweise kein dem europäischen Recht entsprechendes Datenschutzniveau und Ihre europäischen Datenschutzrechte können eventuell nicht durchgesetzt werden. Insbesondere besteht die Möglichkeit, dass Sicherheitsbehörden im Drittland, auch ohne einen konkreten Verdacht, auf die übermittelten Daten bei Apple zugreifen und diese auswerten, beispielsweise indem sie Daten mit anderen Informationen verknüpfen. Dies betrifft nur die an Apple übermittelte Kennung. Möglicherweise kann Apple jedoch anhand der Kennung auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones im Rahmen einer Warnung anderer stattgefunden hat.\n\n\Wenn Sie mit der Drittlandsübermittlung nicht einverstanden sind, tippen Sie bitte nicht „Einverstanden“ an. Sie können die App weiterhin nutzen, eine Warnung anderer nach einem positiven Selbsttest oder mit einem Testergebnis, das nicht in der App vorliegt, ist dann jedoch nicht möglich."</string>
7171

7272
<!-- XTXT: onboarding privacy preserving analytics (ppa) - consent title -->
7373
<string name="ppa_onboarding_consent_title">"Ihr Einverständnis"</string>

0 commit comments

Comments
 (0)