diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle index 89dce2971ae418754d9a64535590705274ecc2ff..25be009f467df291bb66c886d5c653ec3b92bff2 100644 --- a/Corona-Warn-App/build.gradle +++ b/Corona-Warn-App/build.gradle @@ -173,7 +173,8 @@ android { "-Xno-kotlin-nothing-value-exception", "-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi", "-Xuse-experimental=kotlinx.coroutines.FlowPreview", - "-Xuse-experimental=kotlin.time.ExperimentalTime" + "-Xuse-experimental=kotlin.time.ExperimentalTime", + "-Xopt-in=kotlin.RequiresOptIn" ] } } diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt index 9aa9ce21df5fb36f43c569af882b517ca8751ff5..c151d90a77c3853a014e640c38a5dce0d7f5305e 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/appconfig/ui/AppConfigTestFragment.kt @@ -28,6 +28,7 @@ class AppConfigTestFragment : Fragment(R.layout.fragment_test_appconfig), AutoIn private val timeFormatter = ISODateTimeFormat.dateTime() .withZone(DateTimeZone.forID("Europe/Berlin")) + @Suppress("DEPRECATION") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/SettingsCrashReportViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/SettingsCrashReportViewModel.kt index b02e7a18b31e5d7475a9e102204205ac43a1840c..0b43e0de5005ba6180632620c5f6ee808022fe16 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/SettingsCrashReportViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/crash.ui/SettingsCrashReportViewModel.kt @@ -31,7 +31,7 @@ class SettingsCrashReportViewModel @AssistedInject constructor( fun simulateException() { try { - val a = 2 / 0 + throw RuntimeException("Test crash reporting") } catch (e: Exception) { Timber.e(e, "Msg: ${e.message}") e.reportProblem(SettingsCrashReportViewModel::class.java.simpleName, e.message) diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt index ed246e65b60fc63a60c27263933ca1ee8315a5c0..d8968b77d5260df6292fb3eb131ad0e9685fa404 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/risklevel/ui/TestRiskLevelCalculationFragmentCWAViewModel.kt @@ -104,6 +104,7 @@ class TestRiskLevelCalculationFragmentCWAViewModel @AssistedInject constructor( .appendLine("Number of Days With Low Risk: $numberOfDaysWithLowRisk") .toString() + @Suppress("DEPRECATION") val backendParameters = appConfigProvider .currentConfig .map { it.rawConfig.riskCalculationParameters.toString() } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainer.kt index dcf91e1f6f93e69204fb752aacc52d38168133aa..c0d63aa1750ad9f55db3913d85c47c95356ff99b 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainer.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/datadonation/safetynet/AttestationContainer.kt @@ -16,31 +16,31 @@ internal data class AttestationContainer( safetyNetJws = report.jwsResult }.build() - override fun requirePass(reqs: SafetyNetRequirements) { - Timber.v("requirePass(%s)", reqs) + override fun requirePass(requirements: SafetyNetRequirements) { + Timber.v("requirePass(%s)", requirements) - if (reqs.requireBasicIntegrity && !report.basicIntegrity) { + if (requirements.requireBasicIntegrity && !report.basicIntegrity) { throw SafetyNetException( Type.BASIC_INTEGRITY_REQUIRED, "Requirement 'basicIntegrity' not met (${report.advice})." ) } - if (reqs.requireCTSProfileMatch && !report.ctsProfileMatch) { + if (requirements.requireCTSProfileMatch && !report.ctsProfileMatch) { throw SafetyNetException( Type.CTS_PROFILE_MATCH_REQUIRED, "Requirement 'ctsProfileMatch' not met (${report.advice})." ) } - if (reqs.requireBasicIntegrity && !report.evaluationTypes.contains("BASIC")) { + if (requirements.requireBasicIntegrity && !report.evaluationTypes.contains("BASIC")) { throw SafetyNetException( Type.EVALUATION_TYPE_BASIC_REQUIRED, "Evaluation type 'BASIC' not met (${report.advice})." ) } - if (reqs.requireEvaluationTypeHardwareBacked && !report.evaluationTypes.contains("HARDWARE_BACKED")) { + if (requirements.requireEvaluationTypeHardwareBacked && !report.evaluationTypes.contains("HARDWARE_BACKED")) { throw SafetyNetException( Type.EVALUATION_TYPE_HARDWARE_BACKED_REQUIRED, "Evaluation type 'HARDWARE_BACKED' not met (${report.advice})." diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/repo/DefaultTraceLocationRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/repo/DefaultTraceLocationRepository.kt index 56463d80c42ac0389e1f71d9868172ff2a14d6f4..b0c5f879dcdd3c5af499bdcce2593283cddef3db 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/repo/DefaultTraceLocationRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/eventregistration/storage/repo/DefaultTraceLocationRepository.kt @@ -32,11 +32,15 @@ class DefaultTraceLocationRepository @Inject constructor( traceLocationDatabase.traceLocationDao() } + /** + * Reruns [TraceLocation] for [id] + * @throws [IllegalArgumentException] if location not found + */ override suspend fun traceLocationForId(id: Long): TraceLocation { - val checkIn = traceLocationDao.entryForId(id) + val traceLocationEntity = traceLocationDao.entryForId(id) ?: throw IllegalArgumentException("No traceLocation found for ID=$id") - return checkIn.toTraceLocation() + return traceLocationEntity.toTraceLocation() } /** diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt index 72a049c16999f42880d6a0d159cf2501ecda5088..6005f4f3c77ec5fff21ed95b590dc8bab43deeb8 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/receiver/ExposureStateUpdateReceiver.kt @@ -51,6 +51,7 @@ class ExposureStateUpdateReceiver : BroadcastReceiver() { scope.launch(context = scope.coroutineContext) { try { + @Suppress("DEPRECATION") intent.getStringExtra(EXTRA_TOKEN)?.let { Timber.tag(TAG).w("Received unknown token from ENF: %s", it) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/category/adapter/category/TraceLocationCategory.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/category/adapter/category/TraceLocationCategory.kt index 31f49804d9db7fed35bad84e2e5799f301b78d1d..ffcb22118b5d722e610c063325d14e7dd7b5120f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/category/adapter/category/TraceLocationCategory.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/category/adapter/category/TraceLocationCategory.kt @@ -19,6 +19,7 @@ import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass import de.rki.coronawarnapp.ui.eventregistration.organizer.category.adapter.CategoryItem import de.rki.coronawarnapp.ui.eventregistration.organizer.category.adapter.category.TraceLocationUIType.EVENT import de.rki.coronawarnapp.ui.eventregistration.organizer.category.adapter.category.TraceLocationUIType.LOCATION +import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize @Parcelize @@ -28,7 +29,7 @@ data class TraceLocationCategory( @StringRes val title: Int, @StringRes val subtitle: Int? = null ) : CategoryItem, Parcelable { - override val stableId = hashCode().toLong() + @IgnoredOnParcel override val stableId = hashCode().toLong() } enum class TraceLocationUIType { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/create/TraceLocationCreateFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/create/TraceLocationCreateFragment.kt index 8c2cee8834b8484a2c07c9ddfb4da790215195f8..385d826151839cd32662301c8d045d8eef15e153 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/create/TraceLocationCreateFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/create/TraceLocationCreateFragment.kt @@ -202,7 +202,7 @@ class TraceLocationCreateFragment : Fragment(R.layout.trace_location_create_frag private fun showDurationPicker() { DurationPicker.Builder() - .duration(viewModel.checkInLength?.toContactDiaryFormat() ?: "") + .duration(viewModel.checkInLength.toContactDiaryFormat()) .title(getString(R.string.tracelocation_organizer_add_event_length_of_stay)) .build() .apply { @@ -216,7 +216,7 @@ class TraceLocationCreateFragment : Fragment(R.layout.trace_location_create_frag override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState( outState.apply { - putLong(LENGTH_OF_STAY, viewModel.checkInLength?.standardMinutes ?: 0L) + putLong(LENGTH_OF_STAY, viewModel.checkInLength.standardMinutes) putSerializable(BEGIN, viewModel.begin) putSerializable(END, viewModel.end) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/DefaultSystemInfoProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/DefaultSystemInfoProvider.kt index 5a8fccf5f9f309fadafdfb33c012833a41e394ad..8712735b3f2a5a97fb687de0711533f6c5a1dd18 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/DefaultSystemInfoProvider.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/device/DefaultSystemInfoProvider.kt @@ -1,12 +1,11 @@ package de.rki.coronawarnapp.util.device -import android.content.Context import android.content.res.Resources import android.os.Build import java.util.Locale import javax.inject.Inject -class DefaultSystemInfoProvider @Inject constructor(context: Context) : SystemInfoProvider { +class DefaultSystemInfoProvider @Inject constructor() : SystemInfoProvider { override val locale: Locale get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterInformationLegalHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterInformationLegalHelper.kt index 6a8e220b8486603651dae1ec54f7ad6f67ef1a33..72bdddee2b38640b442ac4aee9d0cb728a6690d7 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterInformationLegalHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterInformationLegalHelper.kt @@ -2,7 +2,6 @@ package de.rki.coronawarnapp.util.formatter -import android.content.Context import android.view.View import de.rki.coronawarnapp.ui.information.InformationLegalPresentation import de.rki.coronawarnapp.util.device.DefaultSystemInfoProvider @@ -15,10 +14,9 @@ import de.rki.coronawarnapp.util.device.DefaultSystemInfoProvider */ fun formatVisibilityLanguageBased( - context: Context, isContactFormView: Boolean? ): Int { - InformationLegalPresentation(DefaultSystemInfoProvider(context)).apply { + InformationLegalPresentation(DefaultSystemInfoProvider()).apply { if (!showBackupLinkToContactForm) { return if (isContactFormView == true) { View.VISIBLE diff --git a/Corona-Warn-App/src/main/res/layout/include_contact_form.xml b/Corona-Warn-App/src/main/res/layout/include_contact_form.xml index 0f3654c19de12d7e5f914941da5ed8361c447bc5..0af8211cc6d358a0b26c03d88cbfbc6cf44749e9 100644 --- a/Corona-Warn-App/src/main/res/layout/include_contact_form.xml +++ b/Corona-Warn-App/src/main/res/layout/include_contact_form.xml @@ -28,7 +28,7 @@ android:linksClickable="true" android:text="@string/information_legal_subtitle_contact_label" android:textColorLink="@color/colorTextTint" - android:visibility="@{FormatterInformationLegalHelper.formatVisibilityLanguageBased(context, true)}" + android:visibility="@{FormatterInformationLegalHelper.formatVisibilityLanguageBased(true)}" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -42,7 +42,7 @@ android:linksClickable="true" android:text="@string/information_legal_subtitle_contact_form_non_en_de" android:textColorLink="@color/colorTextTint" - android:visibility="@{FormatterInformationLegalHelper.formatVisibilityLanguageBased(context, false)}" + android:visibility="@{FormatterInformationLegalHelper.formatVisibilityLanguageBased(false)}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/information_legal_contact_form" />