diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt index 43c90b8caf570ddcb58fa976c916431039d38209..915dd7d5ca342daa7132d3fa205e0774050e5c46 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt @@ -32,6 +32,7 @@ import de.rki.coronawarnapp.util.bluetooth.BluetoothSupport import de.rki.coronawarnapp.util.encryptionmigration.EncryptionErrorResetTool import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper import de.rki.coronawarnapp.util.ui.SingleLiveEvent +import de.rki.coronawarnapp.vaccination.core.repository.VaccinationRepository import io.mockk.MockKAnnotations import io.mockk.Runs import io.mockk.every @@ -71,6 +72,7 @@ class HomeFragmentTest : BaseUITest() { @MockK lateinit var traceLocationOrganizerSettings: TraceLocationOrganizerSettings @MockK lateinit var timeStamper: TimeStamper @MockK lateinit var bluetoothSupport: BluetoothSupport + @MockK lateinit var vaccinationRepository: VaccinationRepository private lateinit var homeFragmentViewModel: HomeFragmentViewModel @@ -300,7 +302,8 @@ class HomeFragmentTest : BaseUITest() { tracingSettings = tracingSettings, traceLocationOrganizerSettings = traceLocationOrganizerSettings, timeStamper = timeStamper, - bluetoothSupport = bluetoothSupport + bluetoothSupport = bluetoothSupport, + vaccinationRepository = vaccinationRepository, ) ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt index 6424e86df8339719e1e8641db5759b3df15b768c..8ba4b3d16c63934c206fd5f958151d0f20306a8a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt @@ -38,7 +38,9 @@ import de.rki.coronawarnapp.util.lists.modular.mods.DataBinderMod import de.rki.coronawarnapp.util.lists.modular.mods.SavedStateMod import de.rki.coronawarnapp.util.lists.modular.mods.StableIdMod import de.rki.coronawarnapp.util.lists.modular.mods.TypedVHCreatorMod +import de.rki.coronawarnapp.vaccination.ui.homecards.CompleteVaccinationHomeCard import de.rki.coronawarnapp.vaccination.ui.homecards.CreateVaccinationHomeCard +import de.rki.coronawarnapp.vaccination.ui.homecards.IncompleteVaccinationHomeCard class HomeAdapter : ModularAdapter<HomeAdapter.HomeItemVH<HomeItem, ViewBinding>>(), @@ -78,6 +80,12 @@ class HomeAdapter : TypedVHCreatorMod({ data[it] is TestUnregisteredCard.Item }) { TestUnregisteredCard(it) }, TypedVHCreatorMod({ data[it] is StatisticsHomeCard.Item }) { StatisticsHomeCard(it) }, TypedVHCreatorMod({ data[it] is CreateVaccinationHomeCard.Item }) { CreateVaccinationHomeCard(it) }, + TypedVHCreatorMod({ data[it] is CompleteVaccinationHomeCard.Item }) { + CompleteVaccinationHomeCard(it) + }, + TypedVHCreatorMod({ data[it] is IncompleteVaccinationHomeCard.Item }) { + IncompleteVaccinationHomeCard(it) + }, SavedStateMod<HomeItemVH<HomeItem, ViewBinding>>() // For statistics card scroll position ) ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index 90c3eb66d26de5461cd8309e67d3a693d40550d9..16723f7947106b539cf5e737ef5d00317b4fd4fb 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -67,12 +67,16 @@ import de.rki.coronawarnapp.util.TimeStamper import de.rki.coronawarnapp.util.bluetooth.BluetoothSupport import de.rki.coronawarnapp.util.coroutine.DispatcherProvider import de.rki.coronawarnapp.util.encryptionmigration.EncryptionErrorResetTool +import de.rki.coronawarnapp.util.flow.combine import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper import de.rki.coronawarnapp.util.ui.SingleLiveEvent import de.rki.coronawarnapp.util.viewmodel.CWAViewModel import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory +import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson +import de.rki.coronawarnapp.vaccination.core.repository.VaccinationRepository +import de.rki.coronawarnapp.vaccination.ui.homecards.CompleteVaccinationHomeCard import de.rki.coronawarnapp.vaccination.ui.homecards.CreateVaccinationHomeCard -import kotlinx.coroutines.flow.combine +import de.rki.coronawarnapp.vaccination.ui.homecards.IncompleteVaccinationHomeCard import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -95,6 +99,7 @@ class HomeFragmentViewModel @AssistedInject constructor( private val traceLocationOrganizerSettings: TraceLocationOrganizerSettings, private val timeStamper: TimeStamper, private val bluetoothSupport: BluetoothSupport, + private val vaccinationRepository: VaccinationRepository, ) : CWAViewModel(dispatcherProvider = dispatcherProvider) { private val tracingStateProvider by lazy { tracingStateProviderFactory.create(isDetailsMode = false) } @@ -286,8 +291,9 @@ class HomeFragmentViewModel @AssistedInject constructor( coronaTestRepository.latestPCRT, coronaTestRepository.latestRAT, statisticsProvider.current.distinctUntilChanged(), - appConfigProvider.currentConfig.map { it.coronaTestParameters }.distinctUntilChanged() - ) { tracingItem, testPCR, testRAT, statsData, coronaTestParameters -> + appConfigProvider.currentConfig.map { it.coronaTestParameters }.distinctUntilChanged(), + vaccinationRepository.vaccinationInfos + ) { tracingItem, testPCR, testRAT, statsData, coronaTestParameters, vaccinatedPersons -> val statePCR = testPCR.toSubmissionState() val stateRAT = testRAT.toSubmissionState(timeStamper.nowUTC, coronaTestParameters) mutableListOf<HomeItem>().apply { @@ -301,6 +307,24 @@ class HomeFragmentViewModel @AssistedInject constructor( else -> add(tracingItem) } + vaccinatedPersons.forEach { + val card = when (it.vaccinationStatus) { + VaccinatedPerson.Status.COMPLETE -> CompleteVaccinationHomeCard.Item( + vaccinatedPerson = it, + onClickAction = { + // TODO + } + ) + VaccinatedPerson.Status.INCOMPLETE -> IncompleteVaccinationHomeCard.Item( + vaccinatedPerson = it, + onClickAction = { + // TODO + } + ) + } + add(card) + } + if (bluetoothSupport.isAdvertisingSupported == false) { add( IncompatibleCard.Item( diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt index 5be20e9fa039068af920b122f382e7e13e2ff2ba..cd2e82d4ec7e071415c350a40c085aefef4fbe9b 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/VaccinatedPerson.kt @@ -1,12 +1,11 @@ package de.rki.coronawarnapp.vaccination.core -import de.rki.coronawarnapp.vaccination.core.repository.storage.PersonData +import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinatedPersonData import de.rki.coronawarnapp.vaccination.core.server.valueset.VaccinationValueSet - import org.joda.time.LocalDate data class VaccinatedPerson( - internal val data: PersonData, + internal val data: VaccinatedPersonData, private val valueSet: VaccinationValueSet?, val isUpdatingData: Boolean = false, val lastError: Throwable? = null, @@ -14,9 +13,6 @@ data class VaccinatedPerson( val identifier: VaccinatedPersonIdentifier get() = data.identifier - val vaccinationStatus: Status - get() = if (proofCertificates.isNotEmpty()) Status.COMPLETE else Status.INCOMPLETE - val vaccinationCertificates: Set<VaccinationCertificate> get() = data.vaccinations.map { it.toVaccinationCertificate(valueSet) @@ -27,12 +23,21 @@ data class VaccinatedPerson( it.toProofCertificate(valueSet) }.toSet() + val vaccinationStatus: Status + get() = if (proofCertificates.isNotEmpty()) Status.COMPLETE else Status.INCOMPLETE + + val vaccineName: String + get() = vaccinationCertificates.first().vaccineName + val firstName: String? get() = vaccinationCertificates.first().firstName val lastName: String get() = vaccinationCertificates.first().lastName + val fullName: String + get() = "$firstName $lastName" + val dateOfBirth: LocalDate get() = vaccinationCertificates.first().dateOfBirth diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt index 1a3cb68addd4d000e4cf92bd0a64d13c9340e0c3..cb0b66367cf7eaa8dc02759c4aa7bf2155e79fdd 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepository.kt @@ -13,7 +13,7 @@ import de.rki.coronawarnapp.vaccination.core.personIdentifier import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateQRCode import de.rki.coronawarnapp.vaccination.core.repository.errors.VaccinatedPersonNotFoundException import de.rki.coronawarnapp.vaccination.core.repository.errors.VaccinationCertificateNotFoundException -import de.rki.coronawarnapp.vaccination.core.repository.storage.PersonData +import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinatedPersonData import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinationStorage import de.rki.coronawarnapp.vaccination.core.repository.storage.toProofContainer import de.rki.coronawarnapp.vaccination.core.repository.storage.toVaccinationContainer @@ -96,7 +96,7 @@ class VaccinationRepository @Inject constructor( } } else { VaccinatedPerson( - data = PersonData( + data = VaccinatedPersonData( vaccinations = emptySet(), proofs = emptySet() ), diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/PersonData.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinatedPersonData.kt similarity index 95% rename from Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/PersonData.kt rename to Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinatedPersonData.kt index 527f570ce6f7538bea563fd77e4739ef735fbaab..d7216981a06ad3e09e0299d9762908430dd7265c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/PersonData.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinatedPersonData.kt @@ -4,7 +4,7 @@ import com.google.gson.annotations.SerializedName import de.rki.coronawarnapp.vaccination.core.VaccinatedPersonIdentifier import org.joda.time.Instant -data class PersonData( +data class VaccinatedPersonData( @SerializedName("vaccinationData") val vaccinations: Set<VaccinationContainer>, @SerializedName("proofData") val proofs: Set<ProofContainer>, @SerializedName("lastSuccessfulProofCertificateRun") val lastSuccessfulPCRunAt: Instant = Instant.EPOCH, diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinationStorage.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinationStorage.kt index 15753b86bf2fbaa06e0431de786fea901bab1e44..eaf695fc980778e144af97a752077e5b37882925 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinationStorage.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/core/repository/storage/VaccinationStorage.kt @@ -3,6 +3,7 @@ package de.rki.coronawarnapp.vaccination.core.repository.storage import android.content.Context import androidx.core.content.edit import com.google.gson.Gson +import de.rki.coronawarnapp.util.CWADebug import de.rki.coronawarnapp.util.di.AppContext import de.rki.coronawarnapp.util.serialization.BaseGson import de.rki.coronawarnapp.util.serialization.fromJson @@ -25,7 +26,7 @@ class VaccinationStorage @Inject constructor( baseGson } - var personContainers: Set<PersonData> + var personContainers: Set<VaccinatedPersonData> get() { Timber.tag(TAG).d("vaccinatedPersons - load()") val persons = prefs.all.mapNotNull { (key, value) -> @@ -33,7 +34,7 @@ class VaccinationStorage @Inject constructor( return@mapNotNull null } value as String - gson.fromJson<PersonData>(value).also { + gson.fromJson<VaccinatedPersonData>(value).also { Timber.tag(TAG).v("Person loaded: %s", it) requireNotNull(it.identifier) } @@ -57,6 +58,22 @@ class VaccinationStorage @Inject constructor( } } + init { + // TODO REMOVE when all is done + if (CWADebug.isDebugBuildOrMode && !CWADebug.isAUnitTest) { + personContainers = setOf( + VaccinatedPersonData( + vaccinations = setOf( + VaccinationContainer() + ), + proofs = setOf( + ProofContainer() // Remove me to get an incomplete state + ) + ) + ) + } + } + companion object { private const val TAG = "VaccinationStorage" private const val PKEY_PERSON_PREFIX = "vaccination.person." diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CompleteVaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CompleteVaccinationHomeCard.kt new file mode 100644 index 0000000000000000000000000000000000000000..17965fc0f43db77bd64ce10681508f3081861655 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CompleteVaccinationHomeCard.kt @@ -0,0 +1,38 @@ +package de.rki.coronawarnapp.vaccination.ui.homecards + +import android.view.ViewGroup +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.VaccinationHomeCompleteCardBinding +import de.rki.coronawarnapp.ui.main.home.HomeAdapter +import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer +import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson + +class CompleteVaccinationHomeCard(parent: ViewGroup) : + HomeAdapter.HomeItemVH<CompleteVaccinationHomeCard.Item, VaccinationHomeCompleteCardBinding>( + R.layout.home_card_container_layout, + parent + ) { + + override val viewBinding = lazy { + VaccinationHomeCompleteCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) + } + + override val onBindData: VaccinationHomeCompleteCardBinding.( + item: Item, + payloads: List<Any> + ) -> Unit = { item, payloads -> + val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item + + personName.text = curItem.vaccinatedPerson.fullName + + itemView.setOnClickListener { curItem.onClickAction(item) } + } + + data class Item( + override val vaccinatedPerson: VaccinatedPerson, + val onClickAction: (Item) -> Unit, + ) : VaccinationStatusItem, HasPayloadDiffer { + + override fun diffPayload(old: Any, new: Any): Any? = if (old::class == new::class) new else null + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CreateVaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CreateVaccinationHomeCard.kt index 6c180b85984a04ab347f1bbeae004bcbfe9ed61d..d0a98e8a129130882ee02e013bdff80c6b042537 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CreateVaccinationHomeCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/CreateVaccinationHomeCard.kt @@ -2,22 +2,22 @@ package de.rki.coronawarnapp.vaccination.ui.homecards import android.view.ViewGroup import de.rki.coronawarnapp.R -import de.rki.coronawarnapp.databinding.HomeVaccinationRegistrationCardBinding +import de.rki.coronawarnapp.databinding.VaccinationHomeRegistrationCardBinding import de.rki.coronawarnapp.ui.main.home.HomeAdapter import de.rki.coronawarnapp.ui.main.home.items.HomeItem import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer class CreateVaccinationHomeCard(parent: ViewGroup) : - HomeAdapter.HomeItemVH<CreateVaccinationHomeCard.Item, HomeVaccinationRegistrationCardBinding>( + HomeAdapter.HomeItemVH<CreateVaccinationHomeCard.Item, VaccinationHomeRegistrationCardBinding>( R.layout.home_card_container_layout, parent ) { override val viewBinding = lazy { - HomeVaccinationRegistrationCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) + VaccinationHomeRegistrationCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) } - override val onBindData: HomeVaccinationRegistrationCardBinding.( + override val onBindData: VaccinationHomeRegistrationCardBinding.( item: Item, payloads: List<Any> ) -> Unit = { item, payloads -> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/IncompleteVaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/IncompleteVaccinationHomeCard.kt new file mode 100644 index 0000000000000000000000000000000000000000..37472a274df59c1acc8b14752c260bcc810f44da --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/IncompleteVaccinationHomeCard.kt @@ -0,0 +1,38 @@ +package de.rki.coronawarnapp.vaccination.ui.homecards + +import android.view.ViewGroup +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.VaccinationHomeIncompleteCardBinding +import de.rki.coronawarnapp.ui.main.home.HomeAdapter +import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer +import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson + +class IncompleteVaccinationHomeCard(parent: ViewGroup) : + HomeAdapter.HomeItemVH<IncompleteVaccinationHomeCard.Item, VaccinationHomeIncompleteCardBinding>( + R.layout.home_card_container_layout, + parent + ) { + + override val viewBinding = lazy { + VaccinationHomeIncompleteCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) + } + + override val onBindData: VaccinationHomeIncompleteCardBinding.( + item: Item, + payloads: List<Any> + ) -> Unit = { item, payloads -> + val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item + + personName.text = curItem.vaccinatedPerson.fullName + + itemView.setOnClickListener { curItem.onClickAction(item) } + } + + data class Item( + override val vaccinatedPerson: VaccinatedPerson, + val onClickAction: (Item) -> Unit, + ) : VaccinationStatusItem, HasPayloadDiffer { + + override fun diffPayload(old: Any, new: Any): Any? = if (old::class == new::class) new else null + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/VaccinationStatusItem.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/VaccinationStatusItem.kt new file mode 100644 index 0000000000000000000000000000000000000000..5968607a69242fb9f81af3997ade2335978e40c9 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecards/VaccinationStatusItem.kt @@ -0,0 +1,11 @@ +package de.rki.coronawarnapp.vaccination.ui.homecards + +import de.rki.coronawarnapp.ui.main.home.items.HomeItem +import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson + +interface VaccinationStatusItem : HomeItem { + val vaccinatedPerson: VaccinatedPerson + + override val stableId: Long + get() = vaccinatedPerson.identifier.hashCode().toLong() +} diff --git a/Corona-Warn-App/src/main/res/drawable-night/vaccination_card_icon_registration.xml b/Corona-Warn-App/src/main/res/drawable-night/vaccination_card_icon_registration.xml new file mode 100644 index 0000000000000000000000000000000000000000..50b94148be3b91e2f1da06b50ac8334f96c072aa --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/vaccination_card_icon_registration.xml @@ -0,0 +1,17 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="78dp" + android:height="72dp" + android:viewportWidth="78" + android:viewportHeight="72"> + <path + android:pathData="M44.2502,0V4.3846H46.4425V6.7139C42.0321,7.1507 38.05,8.8463 34.7958,11.5096L33.1516,9.8654L34.6588,8.3582L31.5759,5.2752L25.41,11.4411L28.4929,14.524L30.0001,13.0168L31.6444,14.6611C28.9811,17.9153 27.2855,21.8974 26.8487,26.3077H24.5194V24.1154H20.1348V32.8846H24.5194V30.6923H26.8487C27.2855,35.1369 29.0153,39.1447 31.7129,42.4075L30.0001,43.9832L28.4929,42.476L25.41,45.5589L31.5759,51.7248L34.6588,48.6418L33.1516,47.1346L34.7958,45.4219C38.0586,48.1023 42.0236,49.8493 46.4425,50.2861V52.6154H44.2502V57H53.0194V52.6154H50.8271V50.2861C55.2459,49.8493 59.2109,48.1023 62.4737,45.4219H62.5422L64.1179,47.1346L62.6107,48.6418L65.6937,51.7248L71.8595,45.5589L68.7766,42.476L67.2694,43.9832L65.5566,42.4075C65.5609,42.3989 65.5588,42.386 65.5566,42.3732C65.5545,42.3604 65.5524,42.3475 65.5566,42.3389C68.2371,39.0762 69.9841,35.1112 70.4208,30.6923H72.7501V32.8846H77.1348V24.1154H72.7501V26.3077H70.4208C69.9841,21.8974 68.2885,17.9153 65.6251,14.6611L67.2694,13.0168L68.7766,14.524L71.8595,11.4411L65.6937,5.2752L62.6107,8.3582L64.1179,9.8654L62.4737,11.5096C59.2195,8.8463 55.2374,7.1507 50.8271,6.7139V4.3846H53.0194V0H44.2502ZM48.6352,10.9604C58.3465,10.9604 66.1737,18.7876 66.1737,28.4989C66.1737,38.2101 58.3465,46.0373 48.6352,46.0373C38.924,46.0373 31.0968,38.2101 31.0968,28.4989C31.0968,18.7876 38.924,10.9604 48.6352,10.9604ZM39.8653,18.9777C39.8653,17.1622 41.3382,15.6893 43.1537,15.6893C44.9692,15.6893 46.4422,17.1622 46.4422,18.9777C46.4422,20.7933 44.9692,22.2662 43.1537,22.2662C41.3382,22.2662 39.8653,20.7933 39.8653,18.9777ZM54.1157,15.6893C52.3002,15.6893 50.8273,17.1622 50.8273,18.9777C50.8273,20.7933 52.3002,22.2662 54.1157,22.2662C55.9312,22.2662 57.4042,20.7933 57.4042,18.9777C57.4042,17.1622 55.9312,15.6893 54.1157,15.6893ZM34.3848,28.499C34.3848,26.6834 35.8578,25.2105 37.6733,25.2105C39.4888,25.2105 40.9618,26.6834 40.9618,28.499C40.9618,30.3145 39.4888,31.7874 37.6733,31.7874C35.8578,31.7874 34.3848,30.3145 34.3848,28.499ZM48.6353,25.2105C46.8198,25.2105 45.3468,26.6834 45.3468,28.499C45.3468,30.3145 46.8198,31.7874 48.6353,31.7874C50.4508,31.7874 51.9237,30.3145 51.9237,28.499C51.9237,26.6834 50.4508,25.2105 48.6353,25.2105ZM56.3075,28.499C56.3075,26.6834 57.7804,25.2105 59.5959,25.2105C61.4114,25.2105 62.8844,26.6834 62.8844,28.499C62.8844,30.3145 61.4114,31.7874 59.5959,31.7874C57.7804,31.7874 56.3075,30.3145 56.3075,28.499ZM43.1537,34.7339C41.3382,34.7339 39.8653,36.2069 39.8653,38.0224C39.8653,39.8379 41.3382,41.3108 43.1537,41.3108C44.9692,41.3108 46.4422,39.8379 46.4422,38.0224C46.4422,36.2069 44.9692,34.7339 43.1537,34.7339ZM50.8273,38.0224C50.8273,36.2069 52.3002,34.7339 54.1157,34.7339C55.9312,34.7339 57.4042,36.2069 57.4042,38.0224C57.4042,39.8379 55.9312,41.3108 54.1157,41.3108C52.3002,41.3108 50.8273,39.8379 50.8273,38.0224Z" + android:fillColor="#ffffff" + android:fillAlpha="0.2" + android:fillType="evenOdd" /> + <path + android:pathData="M22,18L0,27.8182V42.5455C0,56.1682 9.3867,68.9073 22,72C34.6133,68.9073 44,56.1682 44,42.5455V27.8182L22,18Z" + android:fillColor="#007FAD" /> + <path + android:pathData="M11.29,43.7909L8,47.2335L17.3333,57L36,37.4671L32.71,34L17.3333,50.0902L11.29,43.7909Z" + android:fillColor="#ffffff" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_card_impfzertifikat_registrieren.xml b/Corona-Warn-App/src/main/res/drawable/ic_card_impfzertifikat_registrieren.xml deleted file mode 100644 index c09ec8966768290cadcbf677d8c7c40fcf855524..0000000000000000000000000000000000000000 --- a/Corona-Warn-App/src/main/res/drawable/ic_card_impfzertifikat_registrieren.xml +++ /dev/null @@ -1,30 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="96dp" - android:height="80dp" - android:viewportWidth="96" - android:viewportHeight="80"> - <group> - <clip-path - android:pathData="M14,15C14,12.7909 15.7909,11 18,11H346C348.209,11 350,12.7909 350,15V322C350,324.209 348.209,326 346,326H18C15.7909,326 14,324.209 14,322V15Z" - android:fillType="evenOdd"/> - </group> - <path - android:pathData="m55.3966,16.0397c0,-0.873 -1.013,-1.582 -2.26,-1.582 -1.247,0 -2.26,0.709 -2.26,1.582 0,0.874 1.013,1.583 2.26,1.583 1.247,0 2.26,-0.709 2.26,-1.583zM40.2356,19.2917c0.506,-0.068 0.985,0.045 1.315,0.355 0.663,0.618 0.482,1.786 -0.401,2.609 -0.884,0.825 -2.134,0.993 -2.794,0.375 -0.662,-0.616 -0.482,-1.784 0.401,-2.609 0.442,-0.412 0.973,-0.662 1.479,-0.73zM55.3966,22.8997c0,-1.165 -1.013,-2.111 -2.26,-2.111 -1.247,0 -2.26,0.946 -2.26,2.111 0,1.165 1.013,2.11 2.26,2.11 1.247,0 2.26,-0.945 2.26,-2.11zM67.5176,20.0217c-0.441,-0.413 -0.973,-0.662 -1.479,-0.73 -0.506,-0.067 -0.984,0.045 -1.315,0.355 -0.662,0.618 -0.482,1.786 0.402,2.609 0.881,0.825 2.131,0.993 2.794,0.375 0.662,-0.616 0.481,-1.784 -0.402,-2.609zM46.7466,24.4977c-0.441,-0.413 -1.019,-0.618 -1.598,-0.618 -0.578,0 -1.157,0.207 -1.598,0.618 -0.883,0.823 -0.881,2.159 0,2.984 0.882,0.825 2.312,0.825 3.196,0 0.881,-0.825 0.881,-2.159 0,-2.984zM61.1256,23.8797c0.578,0 1.156,0.206 1.598,0.618 0.884,0.825 0.884,2.161 0,2.984 -0.884,0.825 -2.314,0.825 -3.196,0 -0.881,-0.823 -0.883,-2.161 0,-2.984 0.441,-0.412 1.02,-0.618 1.598,-0.618zM36.1876,33.4497c0,-1.165 -0.759,-2.11 -1.695,-2.11 -0.935,0 -1.694,0.945 -1.694,2.11 0,1.165 0.759,2.111 1.694,2.111 0.936,0 1.695,-0.946 1.695,-2.111zM41.8376,31.3417c1.248,0 2.26,0.945 2.26,2.11 0,1.165 -1.012,2.111 -2.26,2.111 -1.247,0 -2.26,-0.946 -2.26,-2.111 0,-1.165 1.013,-2.11 2.26,-2.11zM55.3966,33.4517c0,-1.165 -1.012,-2.11 -2.26,-2.11 -1.247,0 -2.259,0.945 -2.259,2.11 0,1.165 1.012,2.111 2.259,2.111 1.248,0 2.26,-0.946 2.26,-2.111zM64.4356,31.3417c1.248,0 2.26,0.945 2.26,2.11 0,1.165 -1.012,2.111 -2.26,2.111 -1.247,0 -2.26,-0.946 -2.26,-2.111 0,-1.165 1.013,-2.11 2.26,-2.11zM73.4756,33.4517c0,-1.165 -0.759,-2.11 -1.695,-2.11 -0.935,0 -1.694,0.945 -1.694,2.11 0,1.165 0.759,2.111 1.694,2.111 0.936,0 1.695,-0.946 1.695,-2.111zM45.1476,38.7997c0.579,0 1.156,0.207 1.598,0.618 0.884,0.825 0.884,2.161 0,2.985 -0.883,0.825 -2.314,0.825 -3.195,0 -0.882,-0.824 -0.884,-2.162 0,-2.985 0.44,-0.411 1.019,-0.618 1.597,-0.618zM62.7246,39.4177c-0.441,-0.412 -1.02,-0.618 -1.598,-0.618 -0.579,0 -1.157,0.207 -1.598,0.618 -0.884,0.823 -0.884,2.159 0,2.985 0.881,0.825 2.312,0.825 3.196,0 0.881,-0.826 0.881,-2.162 0,-2.985zM53.1366,41.8917c1.248,0 2.26,0.945 2.26,2.11 0,1.165 -1.012,2.111 -2.26,2.111 -1.247,0 -2.259,-0.946 -2.259,-2.111 0,-1.165 1.012,-2.11 2.259,-2.11zM41.1486,44.6467c-0.44,-0.413 -0.972,-0.662 -1.478,-0.73 -0.506,-0.067 -0.984,0.045 -1.315,0.355 -0.663,0.616 -0.48,1.784 0.401,2.609 0.882,0.825 2.132,0.993 2.794,0.375 0.662,-0.616 0.482,-1.784 -0.402,-2.609zM66.6026,43.9167c0.506,-0.067 0.985,0.045 1.316,0.355 0.662,0.618 0.482,1.786 -0.402,2.609 -0.883,0.825 -2.134,0.993 -2.794,0.375 -0.662,-0.619 -0.482,-1.786 0.402,-2.609 0.441,-0.413 0.973,-0.662 1.478,-0.73zM55.3966,50.8617c0,-0.874 -1.012,-1.583 -2.26,-1.583 -1.247,0 -2.259,0.709 -2.259,1.583 0,0.873 1.012,1.583 2.259,1.583 1.248,0 2.26,-0.71 2.26,-1.583z" - android:fillColor="#83d2f2" - android:fillAlpha="0.5" - android:fillType="evenOdd"/> - <path - android:pathData="M50.4455,4.9911A1.9904,2.0095 49.0092,0 0,50.1592 4.9959C49.2723,5.0764 48.3874,5.1935 47.5084,5.3492A1.9904,2.0095 49.0092,0 0,45.8659 7.6669A1.9904,2.0095 49.0092,0 0,48.1713 9.2854C48.9369,9.1498 49.7087,9.0469 50.484,8.9765A1.9904,2.0095 49.0092,0 0,52.3153 6.8042A1.9904,2.0095 49.0092,0 0,50.4455 4.9911zM65.0893,7.2665A1.9904,2.0095 49.0092,0 0,63.1476 8.4804A1.9904,2.0095 49.0092,0 0,64.1812 11.102C64.8912,11.4043 65.5902,11.7396 66.2743,12.1038A1.9904,2.0095 49.0092,0 0,68.9882 11.275A1.9904,2.0095 49.0092,0 0,68.1838 8.5724C67.4021,8.1562 66.5995,7.7718 65.7806,7.4232A1.9904,2.0095 49.0092,0 0,65.0893 7.2665zM34.4084,11.5162A1.9904,2.0095 49.0092,0 0,33.0344 11.9745C32.3395,12.5458 31.6721,13.1474 31.0328,13.7795A1.9904,2.0095 49.0092,0 0,31.0051 16.6078A1.9904,2.0095 49.0092,0 0,33.8351 16.6086C34.3865,16.0634 34.9632,15.542 35.5617,15.0499A1.9904,2.0095 49.0092,0 0,35.8507 12.2367A1.9904,2.0095 49.0092,0 0,34.4084 11.5162zM78.1376,18.4506A1.9904,2.0095 49.0092,0 0,76.9489 18.737A1.9904,2.0095 49.0092,0 0,76.2574 21.4848C76.6535,22.1434 77.0176,22.8183 77.3457,23.5072A1.9904,2.0095 49.0092,0 0,80.0105 24.4327A1.9904,2.0095 49.0092,0 0,80.9644 21.7628C80.5789,20.9532 80.1527,20.1667 79.6938,19.4036A1.9904,2.0095 49.0092,0 0,78.1376 18.4506zM25.416,26.1755A1.9904,2.0095 49.0092,0 0,23.2719 27.7637C23.081,28.6457 22.9341,29.5351 22.8333,30.4302A1.9904,2.0095 49.0092,0 0,24.5982 32.6239A1.9904,2.0095 49.0092,0 0,26.8117 30.8407C26.8974,30.0791 27.0211,29.322 27.1832,28.573A1.9904,2.0095 49.0092,0 0,25.6503 26.2104A1.9904,2.0095 49.0092,0 0,25.416 26.1755zM81.692,33.3108A1.9904,2.0095 49.0092,0 0,79.545 35.1747C79.4872,35.9424 79.3938,36.704 79.2606,37.4559A1.9904,2.0095 49.0092,0 0,80.8822 39.7577A1.9904,2.0095 49.0092,0 0,83.2025 38.1165C83.3603,37.2258 83.469,36.3316 83.5363,35.4373A1.9904,2.0095 49.0092,0 0,81.692 33.3108zM27.7088,43.1317A1.9904,2.0095 49.0092,0 0,26.6262 43.3605A1.9904,2.0095 49.0092,0 0,25.7737 46.0625C26.1887,46.8559 26.6415,47.6264 27.1284,48.3724A1.9904,2.0095 49.0092,0 0,29.8964 48.9387A1.9904,2.0095 49.0092,0 0,30.4877 46.1687C30.0678,45.5255 29.6781,44.8635 29.3239,44.1864A1.9904,2.0095 49.0092,0 0,27.7088 43.1317zM74.6091,49.0167A1.9904,2.0095 49.0092,0 0,73.0652 49.6517C72.5332,50.2161 71.9757,50.7552 71.3951,51.267A1.9904,2.0095 49.0092,0 0,71.2054 54.0886A1.9904,2.0095 49.0092,0 0,74.029 54.2534C74.7046,53.6579 75.3508,53.0317 75.9673,52.3778A1.9904,2.0095 49.0092,0 0,75.8949 49.5527A1.9904,2.0095 49.0092,0 0,74.6091 49.0167zM39.9986,55.0042A1.9904,2.0095 49.0092,0 0,38.1111 56.1218A1.9904,2.0095 49.0092,0 0,39.0036 58.7968C39.8005,59.1884 40.6129,59.5446 41.4403,59.866A1.9904,2.0095 49.0092,0 0,44.0405 58.7245A1.9904,2.0095 49.0092,0 0,42.9219 56.1384C42.2,55.8579 41.492,55.548 40.7981,55.2071A1.9904,2.0095 49.0092,0 0,39.9986 55.0042zM59.5115,57.4057A1.9904,2.0095 49.0092,0 0,58.9875 57.4459C58.2263,57.6058 57.4591,57.7319 56.6851,57.8279A1.9904,2.0095 49.0092,0 0,54.9238 60.0595A1.9904,2.0095 49.0092,0 0,57.1401 61.7955C58.0229,61.686 58.9039,61.5407 59.7777,61.3571A1.9904,2.0095 49.0092,0 0,61.3455 58.9895A1.9904,2.0095 49.0092,0 0,59.5115 57.4057z" - android:strokeLineJoin="round" - android:fillColor="#83d2f2" - android:strokeColor="#00000000" - android:fillType="nonZero" - android:fillAlpha="0.5" - android:strokeLineCap="round"/> - <path - android:pathData="m27.1986,23.9497 l-22,9.818v14.727c0,13.623 9.387,26.362 22,29.455 12.613,-3.093 22,-15.832 22,-29.455v-14.727z" - android:fillColor="#007fad"/> - <path - android:pathData="m16.4886,49.7407 l-3.29,3.443 9.333,9.766 18.667,-19.533 -3.29,-3.467 -15.377,16.09z" - android:fillColor="#ffffff"/> -</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml new file mode 100644 index 0000000000000000000000000000000000000000..47227abb719d617b587e8270164fbde8a3e9aaf8 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml @@ -0,0 +1,17 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="78dp" + android:height="72dp" + android:viewportWidth="78" + android:viewportHeight="72"> + <path + android:pathData="M44.2502,0V4.3846H46.4425V6.7139C42.0321,7.1507 38.05,8.8463 34.7958,11.5096L33.1516,9.8654L34.6588,8.3582L31.5759,5.2752L25.41,11.4411L28.4929,14.524L30.0001,13.0168L31.6444,14.6611C28.9811,17.9153 27.2855,21.8974 26.8487,26.3077H24.5194V24.1154H20.1348V32.8846H24.5194V30.6923H26.8487C27.2855,35.1369 29.0153,39.1447 31.7129,42.4075L30.0001,43.9832L28.4929,42.476L25.41,45.5589L31.5759,51.7248L34.6588,48.6418L33.1516,47.1346L34.7958,45.4219C38.0586,48.1023 42.0236,49.8493 46.4425,50.2861V52.6154H44.2502V57H53.0194V52.6154H50.8271V50.2861C55.2459,49.8493 59.2109,48.1023 62.4737,45.4219H62.5422L64.1179,47.1346L62.6107,48.6418L65.6937,51.7248L71.8595,45.5589L68.7766,42.476L67.2694,43.9832L65.5566,42.4075C65.5609,42.3989 65.5588,42.386 65.5566,42.3732C65.5545,42.3604 65.5524,42.3475 65.5566,42.3389C68.2371,39.0762 69.9841,35.1112 70.4208,30.6923H72.7501V32.8846H77.1348V24.1154H72.7501V26.3077H70.4208C69.9841,21.8974 68.2885,17.9153 65.6251,14.6611L67.2694,13.0168L68.7766,14.524L71.8595,11.4411L65.6937,5.2752L62.6107,8.3582L64.1179,9.8654L62.4737,11.5096C59.2195,8.8463 55.2374,7.1507 50.8271,6.7139V4.3846H53.0194V0H44.2502ZM48.6352,10.9604C58.3465,10.9604 66.1737,18.7876 66.1737,28.4989C66.1737,38.2101 58.3465,46.0373 48.6352,46.0373C38.924,46.0373 31.0968,38.2101 31.0968,28.4989C31.0968,18.7876 38.924,10.9604 48.6352,10.9604ZM39.8653,18.9777C39.8653,17.1622 41.3382,15.6893 43.1537,15.6893C44.9692,15.6893 46.4422,17.1622 46.4422,18.9777C46.4422,20.7933 44.9692,22.2662 43.1537,22.2662C41.3382,22.2662 39.8653,20.7933 39.8653,18.9777ZM54.1157,15.6893C52.3002,15.6893 50.8273,17.1622 50.8273,18.9777C50.8273,20.7933 52.3002,22.2662 54.1157,22.2662C55.9312,22.2662 57.4042,20.7933 57.4042,18.9777C57.4042,17.1622 55.9312,15.6893 54.1157,15.6893ZM34.3848,28.499C34.3848,26.6834 35.8578,25.2105 37.6733,25.2105C39.4888,25.2105 40.9618,26.6834 40.9618,28.499C40.9618,30.3145 39.4888,31.7874 37.6733,31.7874C35.8578,31.7874 34.3848,30.3145 34.3848,28.499ZM48.6353,25.2105C46.8198,25.2105 45.3468,26.6834 45.3468,28.499C45.3468,30.3145 46.8198,31.7874 48.6353,31.7874C50.4508,31.7874 51.9237,30.3145 51.9237,28.499C51.9237,26.6834 50.4508,25.2105 48.6353,25.2105ZM56.3075,28.499C56.3075,26.6834 57.7804,25.2105 59.5959,25.2105C61.4114,25.2105 62.8844,26.6834 62.8844,28.499C62.8844,30.3145 61.4114,31.7874 59.5959,31.7874C57.7804,31.7874 56.3075,30.3145 56.3075,28.499ZM43.1537,34.7339C41.3382,34.7339 39.8653,36.2069 39.8653,38.0224C39.8653,39.8379 41.3382,41.3108 43.1537,41.3108C44.9692,41.3108 46.4422,39.8379 46.4422,38.0224C46.4422,36.2069 44.9692,34.7339 43.1537,34.7339ZM50.8273,38.0224C50.8273,36.2069 52.3002,34.7339 54.1157,34.7339C55.9312,34.7339 57.4042,36.2069 57.4042,38.0224C57.4042,39.8379 55.9312,41.3108 54.1157,41.3108C52.3002,41.3108 50.8273,39.8379 50.8273,38.0224Z" + android:fillColor="#ffffff" + android:fillAlpha="0.2" + android:fillType="evenOdd" /> + <path + android:pathData="M22,18L0,27.8182V42.5455C0,56.1682 9.3867,68.9073 22,72C34.6133,68.9073 44,56.1682 44,42.5455V27.8182L22,18Z" + android:fillColor="#ffffff" /> + <path + android:pathData="M11.29,43.7909L8,47.2335L17.3333,57L36,37.4671L32.71,34L17.3333,50.0902L11.29,43.7909Z" + android:fillColor="#007FAD" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml new file mode 100644 index 0000000000000000000000000000000000000000..f51cc4182dc3e363ea51e1759488a01cf48f9831 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml @@ -0,0 +1,20 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="78dp" + android:height="73dp" + android:viewportWidth="78" + android:viewportHeight="73"> + <path + android:pathData="M44.4167,0V4.3846H46.609V6.7139C42.1987,7.1507 38.2165,8.8463 34.9623,11.5096L33.3181,9.8654L34.8253,8.3582L31.7424,5.2752L25.5765,11.4411L28.6594,14.524L30.1667,13.0168L31.8109,14.6611C29.1476,17.9153 27.452,21.8974 27.0152,26.3077H24.6859V24.1154H20.3013V32.8846H24.6859V30.6923H27.0152C27.452,35.1369 29.1818,39.1447 31.8794,42.4075L30.1667,43.9832L28.6594,42.476L25.5765,45.5589L31.7424,51.7248L34.8253,48.6418L33.3181,47.1346L34.9623,45.4219C38.2251,48.1023 42.1901,49.8493 46.609,50.2861V52.6154H44.4167V57H53.1859V52.6154H50.9936V50.2861C55.4124,49.8493 59.3774,48.1023 62.6402,45.4219H62.7087L64.2844,47.1346L62.7772,48.6418L65.8602,51.7248L72.026,45.5589L68.9431,42.476L67.4359,43.9832L65.7231,42.4075C65.7274,42.3989 65.7253,42.386 65.7231,42.3732C65.721,42.3604 65.7189,42.3475 65.7231,42.3389C68.4036,39.0762 70.1506,35.1112 70.5873,30.6923H72.9166V32.8846H77.3013V24.1154H72.9166V26.3077H70.5873C70.1506,21.8974 68.455,17.9153 65.7916,14.6611L67.4359,13.0168L68.9431,14.524L72.026,11.4411L65.8602,5.2752L62.7772,8.3582L64.2844,9.8654L62.6402,11.5096C59.386,8.8463 55.4039,7.1507 50.9936,6.7139V4.3846H53.1859V0H44.4167ZM48.8017,10.9604C58.513,10.9604 66.3402,18.7876 66.3402,28.4989C66.3402,38.2101 58.513,46.0373 48.8017,46.0373C39.0905,46.0373 31.2633,38.2101 31.2633,28.4989C31.2633,18.7876 39.0905,10.9604 48.8017,10.9604ZM40.0318,18.9777C40.0318,17.1622 41.5047,15.6893 43.3202,15.6893C45.1357,15.6893 46.6087,17.1622 46.6087,18.9777C46.6087,20.7933 45.1357,22.2662 43.3202,22.2662C41.5047,22.2662 40.0318,20.7933 40.0318,18.9777ZM54.2822,15.6893C52.4667,15.6893 50.9938,17.1622 50.9938,18.9777C50.9938,20.7933 52.4667,22.2662 54.2822,22.2662C56.0977,22.2662 57.5707,20.7933 57.5707,18.9777C57.5707,17.1622 56.0977,15.6893 54.2822,15.6893ZM34.5513,28.499C34.5513,26.6834 36.0243,25.2105 37.8398,25.2105C39.6553,25.2105 41.1283,26.6834 41.1283,28.499C41.1283,30.3145 39.6553,31.7874 37.8398,31.7874C36.0243,31.7874 34.5513,30.3145 34.5513,28.499ZM48.8018,25.2105C46.9863,25.2105 45.5133,26.6834 45.5133,28.499C45.5133,30.3145 46.9863,31.7874 48.8018,31.7874C50.6173,31.7874 52.0902,30.3145 52.0902,28.499C52.0902,26.6834 50.6173,25.2105 48.8018,25.2105ZM56.474,28.499C56.474,26.6834 57.9469,25.2105 59.7624,25.2105C61.5779,25.2105 63.0509,26.6834 63.0509,28.499C63.0509,30.3145 61.5779,31.7874 59.7624,31.7874C57.9469,31.7874 56.474,30.3145 56.474,28.499ZM43.3202,34.7339C41.5047,34.7339 40.0318,36.2069 40.0318,38.0224C40.0318,39.8379 41.5047,41.3108 43.3202,41.3108C45.1357,41.3108 46.6087,39.8379 46.6087,38.0224C46.6087,36.2069 45.1357,34.7339 43.3202,34.7339ZM50.9938,38.0224C50.9938,36.2069 52.4667,34.7339 54.2822,34.7339C56.0977,34.7339 57.5707,36.2069 57.5707,38.0224C57.5707,39.8379 56.0977,41.3108 54.2822,41.3108C52.4667,41.3108 50.9938,39.8379 50.9938,38.0224Z" + android:fillColor="#ffffff" + android:fillAlpha="0.2" + android:fillType="evenOdd" /> + <path + android:pathData="M17.167,70V24.5532V22L40.167,30.1702V47.5319L33.9508,61.8298L17.167,70Z" + android:fillColor="#616F7E" /> + <path + android:pathData="M21.6667,18.4167L0,26.5417V43.0355C0,56.7126 9.2354,69.4688 21.6667,72.5834C34.0979,69.4688 43.3333,56.7126 43.3333,43.0355V26.5417L21.6667,18.4167ZM37.9167,43.0355C37.9167,53.8688 31.0104,63.8897 21.6667,66.9501C12.3229,63.8897 5.4167,53.8959 5.4167,43.0355V30.3063L21.6667,24.2126L37.9167,30.3063V43.0355Z" + android:fillColor="#ffffff" /> + <path + android:pathData="M21.667,68.5V24V21.5L3.167,29.5V46.5L8.167,60.5L21.667,68.5Z" + android:fillColor="#ffffff" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_registration.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_registration.xml new file mode 100644 index 0000000000000000000000000000000000000000..492a32adae7c54cae2edae371eea25d4581b537c --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_registration.xml @@ -0,0 +1,17 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="78dp" + android:height="72dp" + android:viewportWidth="78" + android:viewportHeight="72"> + <path + android:pathData="M44.2502,0V4.3846H46.4425V6.7139C42.0321,7.1507 38.05,8.8463 34.7958,11.5096L33.1516,9.8654L34.6588,8.3582L31.5759,5.2752L25.41,11.4411L28.4929,14.524L30.0001,13.0168L31.6444,14.6611C28.9811,17.9153 27.2855,21.8974 26.8487,26.3077H24.5194V24.1154H20.1348V32.8846H24.5194V30.6923H26.8487C27.2855,35.1369 29.0153,39.1447 31.7129,42.4075L30.0001,43.9832L28.4929,42.476L25.41,45.5589L31.5759,51.7248L34.6588,48.6418L33.1516,47.1346L34.7958,45.4219C38.0586,48.1023 42.0236,49.8493 46.4425,50.2861V52.6154H44.2502V57H53.0194V52.6154H50.8271V50.2861C55.2459,49.8493 59.2109,48.1023 62.4737,45.4219H62.5422L64.1179,47.1346L62.6107,48.6418L65.6937,51.7248L71.8595,45.5589L68.7766,42.476L67.2694,43.9832L65.5566,42.4075C65.5609,42.3989 65.5588,42.386 65.5566,42.3732C65.5545,42.3604 65.5524,42.3475 65.5566,42.3389C68.2371,39.0762 69.9841,35.1112 70.4208,30.6923H72.7501V32.8846H77.1348V24.1154H72.7501V26.3077H70.4208C69.9841,21.8974 68.2885,17.9153 65.6251,14.6611L67.2694,13.0168L68.7766,14.524L71.8595,11.4411L65.6937,5.2752L62.6107,8.3582L64.1179,9.8654L62.4737,11.5096C59.2195,8.8463 55.2374,7.1507 50.8271,6.7139V4.3846H53.0194V0H44.2502ZM48.6352,10.9604C58.3465,10.9604 66.1737,18.7876 66.1737,28.4989C66.1737,38.2101 58.3465,46.0373 48.6352,46.0373C38.924,46.0373 31.0968,38.2101 31.0968,28.4989C31.0968,18.7876 38.924,10.9604 48.6352,10.9604ZM39.8653,18.9777C39.8653,17.1622 41.3382,15.6893 43.1537,15.6893C44.9692,15.6893 46.4422,17.1622 46.4422,18.9777C46.4422,20.7933 44.9692,22.2662 43.1537,22.2662C41.3382,22.2662 39.8653,20.7933 39.8653,18.9777ZM54.1157,15.6893C52.3002,15.6893 50.8273,17.1622 50.8273,18.9777C50.8273,20.7933 52.3002,22.2662 54.1157,22.2662C55.9312,22.2662 57.4042,20.7933 57.4042,18.9777C57.4042,17.1622 55.9312,15.6893 54.1157,15.6893ZM34.3848,28.499C34.3848,26.6834 35.8578,25.2105 37.6733,25.2105C39.4888,25.2105 40.9618,26.6834 40.9618,28.499C40.9618,30.3145 39.4888,31.7874 37.6733,31.7874C35.8578,31.7874 34.3848,30.3145 34.3848,28.499ZM48.6353,25.2105C46.8198,25.2105 45.3468,26.6834 45.3468,28.499C45.3468,30.3145 46.8198,31.7874 48.6353,31.7874C50.4508,31.7874 51.9237,30.3145 51.9237,28.499C51.9237,26.6834 50.4508,25.2105 48.6353,25.2105ZM56.3075,28.499C56.3075,26.6834 57.7804,25.2105 59.5959,25.2105C61.4114,25.2105 62.8844,26.6834 62.8844,28.499C62.8844,30.3145 61.4114,31.7874 59.5959,31.7874C57.7804,31.7874 56.3075,30.3145 56.3075,28.499ZM43.1537,34.7339C41.3382,34.7339 39.8653,36.2069 39.8653,38.0224C39.8653,39.8379 41.3382,41.3108 43.1537,41.3108C44.9692,41.3108 46.4422,39.8379 46.4422,38.0224C46.4422,36.2069 44.9692,34.7339 43.1537,34.7339ZM50.8273,38.0224C50.8273,36.2069 52.3002,34.7339 54.1157,34.7339C55.9312,34.7339 57.4042,36.2069 57.4042,38.0224C57.4042,39.8379 55.9312,41.3108 54.1157,41.3108C52.3002,41.3108 50.8273,39.8379 50.8273,38.0224Z" + android:fillColor="#007FAD" + android:fillAlpha="0.1" + android:fillType="evenOdd" /> + <path + android:pathData="M22,18L0,27.8182V42.5455C0,56.1682 9.3867,68.9073 22,72C34.6133,68.9073 44,56.1682 44,42.5455V27.8182L22,18Z" + android:fillColor="#007FAD" /> + <path + android:pathData="M11.29,43.7909L8,47.2335L17.3333,57L36,37.4671L32.71,34L17.3333,50.0902L11.29,43.7909Z" + android:fillColor="#ffffff" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml new file mode 100644 index 0000000000000000000000000000000000000000..598ddd22dd51745335c2100a4b5b9c4e82c24891 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/vaccination_compelete_gradient" + android:padding="@dimen/card_padding"> + + + <ImageView + android:id="@+id/show_more_action" + android:layout_width="@dimen/icon_size_risk_card" + android:layout_height="@dimen/icon_size_risk_card" + android:importantForAccessibility="no" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_forward" + app:tint="@color/colorStableLight" /> + + <ImageView + android:id="@+id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/show_more_action" + app:srcCompat="@drawable/vaccination_card_icon_complete" /> + + <TextView + android:id="@+id/card_title" + style="@style/body2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:accessibilityHeading="true" + android:focusable="false" + android:text="@string/vaccination_card_status_title" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintEnd_toStartOf="@id/show_more_action" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/vaccination_label" + style="@style/headline5Bold" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="16dp" + android:accessibilityHeading="true" + android:focusable="false" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/card_title" + android:text="@string/vaccination_card_status_vaccination_name" /> + + <TextView + android:id="@+id/person_name" + style="@style/body1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:accessibilityHeading="true" + android:focusable="false" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/vaccination_label" + tools:text="François-Joan d'Arsøns - van Halen" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml new file mode 100644 index 0000000000000000000000000000000000000000..6967cbc8040d458ae636b9683426fa628ff153d8 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/vaccination_incomplete" + android:padding="@dimen/card_padding"> + + + <ImageView + android:id="@+id/show_more_action" + android:layout_width="@dimen/icon_size_risk_card" + android:layout_height="@dimen/icon_size_risk_card" + android:importantForAccessibility="no" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_forward" + app:tint="@color/colorStableLight" /> + + <ImageView + android:id="@+id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/show_more_action" + app:srcCompat="@drawable/vaccination_card_icon_incomplete" /> + + + <TextView + android:id="@+id/card_title" + style="@style/body2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:accessibilityHeading="true" + android:focusable="false" + android:text="@string/vaccination_card_status_title" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintEnd_toStartOf="@id/show_more_action" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/vaccination_label" + style="@style/headline5Bold" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="16dp" + android:accessibilityHeading="true" + android:focusable="false" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/card_title" + android:text="@string/vaccination_card_status_vaccination_name" /> + + <TextView + android:id="@+id/vaccination_state" + style="@style/body1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:accessibilityHeading="true" + android:focusable="false" + android:text="@string/vaccination_card_status_vaccination_incomplete" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintBottom_toTopOf="@+id/person_name" + app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/vaccination_label" + app:layout_constraintVertical_chainStyle="packed" /> + + <TextView + android:id="@+id/person_name" + style="@style/body1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginEnd="16dp" + android:accessibilityHeading="true" + android:focusable="false" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/vaccination_state" + tools:text="François-Joan d'Arsøns - van Halen" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/home_vaccination_registration_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_registration_card.xml similarity index 96% rename from Corona-Warn-App/src/main/res/layout/home_vaccination_registration_card.xml rename to Corona-Warn-App/src/main/res/layout/vaccination_home_registration_card.xml index d2ac24a8cb7d2ca4049c866700a3f0a317ddaa33..2be066af08c0c27deb751432415e7542e439d709 100644 --- a/Corona-Warn-App/src/main/res/layout/home_vaccination_registration_card.xml +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_registration_card.xml @@ -37,7 +37,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/title" /> - <androidx.appcompat.widget.AppCompatImageView + <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -45,7 +45,7 @@ android:importantForAccessibility="no" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/body" - app:srcCompat="@drawable/ic_card_impfzertifikat_registrieren" /> + app:srcCompat="@drawable/vaccination_card_icon_registration" /> <androidx.constraintlayout.widget.Barrier android:id="@+id/button_barrier" diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index a37854f4243ca3662f20b30953c4fa6f80765a76..2aa31ae7ce1146fa12208128971837c8b737a842 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -2019,13 +2019,6 @@ <!-- XBUT: Trace location check-ins invalid qr code dialog negative button --> <string name="trace_location_attendee_invalid_qr_code_dialog_negative_button">Abbrechen</string> - <!-- XHED: Title for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_registration_title">"Impfzertifikat registrieren"</string> - <!-- YTXT: Body text for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_registration_body">"Scannen Sie den QR-Code auf Ihrem Impfzertifikat, um Ihre Impfung zu registrieren und einen digitalen Impfnachweis zu erhalten."</string> - <!-- XBUT: button for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_register">"Registrieren"</string> - <!-- #################################### Incompatibility warning card ###################################### --> diff --git a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml index 509205f64ece1fc1a0817d0e4f99756e0eb34ff6..1fd6ee3729767021ca1c383a4c8587067116bc21 100644 --- a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml @@ -53,4 +53,21 @@ <string name="vaccination_list_refresh_button">Aktualisieren</string> <!-- XACT: Vaccination List Qr-Code for screen readers --> <string name="vaccination_list_qr_code_accessibility">Qr-Code</string> + + <!-- #################################### + Homescreen cards + ###################################### --> + <!-- XHED: Title for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_registration_title">"Impfzertifikat registrieren"</string> + <!-- YTXT: Body text for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_registration_body">"Scannen Sie den QR-Code auf Ihrem Impfzertifikat, um Ihre Impfung zu registrieren und einen digitalen Impfnachweis zu erhalten."</string> + <!-- XBUT: button for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_register">"Registrieren"</string> + + <!-- XHED: Homescreen vaccination status card title --> + <string name="vaccination_card_status_title">Digitaler Impfnachweis</string> + <!-- XHED: Homescreen vaccination status card vaccination name --> + <string name="vaccination_card_status_vaccination_name">SARS-CoV-2 Impfschutz</string> + <!-- XTXT: Homescreen vaccination status card vaccination status label --> + <string name="vaccination_card_status_vaccination_incomplete">Unvollständiger Impfschutz</string> </resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index a31b14a0043338efab8b1d5d248e56e542a7a270..7efe85f0eb8209f0aa50b46895d4cb6a5d2f3188 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -2025,13 +2025,6 @@ <!-- XBUT: Trace location check-ins invalid qr code dialog negative button --> <string name="trace_location_attendee_invalid_qr_code_dialog_negative_button">"Cancel"</string> - <!-- XHED: Title for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_registration_title">"Impfzertifikat registrieren"</string> - <!-- YTXT: Body text for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_registration_body">"Scannen Sie den QR-Code auf Ihrem Impfzertifikat, um Ihre Impfung zu registrieren und einen digitalen Impfnachweis zu erhalten."</string> - <!-- XBUT: button for Vaccination Certificate Registration Home Card --> - <string name="vaccination_card_register">"Registrieren"</string> - <!-- #################################### Incompatibility warning card ###################################### --> diff --git a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml index 19d6084dc695afb1f146a754c1d42ecae2d85e1a..04f9233d6649d9f8eb0d881f880591b9bc7b6c66 100644 --- a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml @@ -53,4 +53,21 @@ <string name="vaccination_list_refresh_button">Aktualisieren</string> <!-- XACT: Vaccination List Qr-Code for screen readers --> <string name="vaccination_list_qr_code_accessibility">Qr-Code</string> + + <!-- #################################### + Homescreen cards + ###################################### --> + <!-- XHED: Title for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_registration_title">"Impfzertifikat registrieren"</string> + <!-- YTXT: Body text for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_registration_body">"Scannen Sie den QR-Code auf Ihrem Impfzertifikat, um Ihre Impfung zu registrieren und einen digitalen Impfnachweis zu erhalten."</string> + <!-- XBUT: button for Vaccination Certificate Registration Home Card --> + <string name="vaccination_card_register">"Registrieren"</string> + + <!-- XHED: Homescreen card title --> + <string name="vaccination_card_status_title">Digitaler Impfnachweis</string> + <!-- XHED: Homescreen vaccination status card vaccination name --> + <string name="vaccination_card_status_vaccination_name">SARS-CoV-2 Impfschutz</string> + <!-- XTXT: Homescreen card vaccination status label --> + <string name="vaccination_card_status_vaccination_incomplete">Unvollständiger Impfschutz</string> </resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt index 3e45f0f9e0e9dd99e70cab18024572854c0acc9a..20cdd3a3532661af3174fb773bf43bc587ceffee 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt @@ -21,6 +21,7 @@ import de.rki.coronawarnapp.util.TimeStamper import de.rki.coronawarnapp.util.bluetooth.BluetoothSupport import de.rki.coronawarnapp.util.encryptionmigration.EncryptionErrorResetTool import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper +import de.rki.coronawarnapp.vaccination.core.repository.VaccinationRepository import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations import io.mockk.coEvery @@ -62,6 +63,7 @@ class HomeFragmentViewModelTest : BaseTest() { @MockK lateinit var traceLocationOrganizerSettings: TraceLocationOrganizerSettings @MockK lateinit var timeStamper: TimeStamper @MockK lateinit var bluetoothSupport: BluetoothSupport + @MockK lateinit var vaccinationRepository: VaccinationRepository @BeforeEach fun setup() { @@ -74,6 +76,8 @@ class HomeFragmentViewModelTest : BaseTest() { every { coronaTestRepository.coronaTests } returns emptyFlow() + every { vaccinationRepository.vaccinationInfos } returns emptyFlow() + coEvery { appConfigProvider.currentConfig } returns emptyFlow() coEvery { statisticsProvider.current } returns emptyFlow() @@ -100,7 +104,8 @@ class HomeFragmentViewModelTest : BaseTest() { tracingSettings = tracingSettings, traceLocationOrganizerSettings = traceLocationOrganizerSettings, timeStamper = timeStamper, - bluetoothSupport = bluetoothSupport + bluetoothSupport = bluetoothSupport, + vaccinationRepository = vaccinationRepository, ) @Test diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/VaccinationTestData.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/VaccinationTestData.kt index df5f31e9f4646e0caefeb6ca43b3589fcfa63a84..7f89c0a020ad09ff06b1231b4a70b5dca1b3aa56 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/VaccinationTestData.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/VaccinationTestData.kt @@ -4,8 +4,8 @@ import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateData import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateHeader import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateQRCode import de.rki.coronawarnapp.vaccination.core.qrcode.VaccinationCertificateV1 -import de.rki.coronawarnapp.vaccination.core.repository.storage.PersonData import de.rki.coronawarnapp.vaccination.core.repository.storage.ProofContainer +import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinatedPersonData import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinationContainer import de.rki.coronawarnapp.vaccination.core.server.proof.ProofCertificateData import de.rki.coronawarnapp.vaccination.core.server.proof.ProofCertificateResponse @@ -165,7 +165,7 @@ object VaccinationTestData { get() = "VGhpc0lzQVByb29mQ09TRQ".decodeBase64()!! } - val PERSON_A_DATA_2VAC_PROOF = PersonData( + val PERSON_A_DATA_2VAC_PROOF = VaccinatedPersonData( vaccinations = setOf(PERSON_A_VAC_1_CONTAINER, PERSON_A_VAC_2_CONTAINER), proofs = setOf(PERSON_A_PROOF_1_CONTAINER), ) @@ -213,7 +213,7 @@ object VaccinationTestData { preParsedData = PERSON_B_VAC_1_DATA } - val PERSON_B_DATA_1VAC_NOPROOF = PersonData( + val PERSON_B_DATA_1VAC_NOPROOF = VaccinatedPersonData( vaccinations = setOf(PERSON_B_VAC_1_CONTAINER), proofs = emptySet() ) diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepositoryTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepositoryTest.kt index dfb4b86a2e1d75f27c252e63f4949b8ca958a23d..8e26cdd9d304c7e03552cd17b9ec9d66fa9c365d 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepositoryTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/vaccination/core/repository/VaccinationRepositoryTest.kt @@ -2,7 +2,7 @@ package de.rki.coronawarnapp.vaccination.core.repository import de.rki.coronawarnapp.util.TimeStamper import de.rki.coronawarnapp.vaccination.core.VaccinationTestData -import de.rki.coronawarnapp.vaccination.core.repository.storage.PersonData +import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinatedPersonData import de.rki.coronawarnapp.vaccination.core.repository.storage.VaccinationStorage import de.rki.coronawarnapp.vaccination.core.server.proof.VaccinationProofServer import de.rki.coronawarnapp.vaccination.core.server.valueset.VaccinationValueSet @@ -30,7 +30,7 @@ class VaccinationRepositoryTest : BaseTest() { @MockK lateinit var vaccinationProofServer: VaccinationProofServer @MockK lateinit var vaccinationValueSet: VaccinationValueSet - private var testStorage: Set<PersonData> = emptySet() + private var testStorage: Set<VaccinatedPersonData> = emptySet() private var nowUTC = Instant.ofEpochMilli(1234567890)