Skip to content

Commit 1f07fa7

Browse files
- validate certificate data; (eu-digital-green-certificates#33)
1 parent e1f8aaa commit 1f07fa7

File tree

6 files changed

+29
-4
lines changed

6 files changed

+29
-4
lines changed

app/src/main/java/dgca/verifier/app/android/model/CertificateModel.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,15 @@ data class TestModel(
6161
val testingCentre: String,
6262
val countryOfVaccination: String,
6363
val certificateIssuer: String,
64-
val certificateIdentifier: String
64+
val certificateIdentifier: String,
65+
val resultType: TestResult
6566
) : CertificateData
6667

68+
enum class TestResult(val value: String) {
69+
DETECTED("DETECTED"),
70+
NOT_DETECTED("NOT DETECTED")
71+
}
72+
6773
data class RecoveryModel(
6874
override val disease: String,
6975
val dateOfFirstPositiveTest: String,

app/src/main/java/dgca/verifier/app/android/model/Mapper.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,18 @@ fun Test.toTestModel(): TestModel {
6262
testingCentre,
6363
countryOfVaccination,
6464
certificateIssuer,
65-
certificateIdentifier
65+
certificateIdentifier,
66+
getTestResultType().toTestResult()
6667
)
6768
}
6869

70+
fun Test.TestResult.toTestResult(): TestResult {
71+
return when (this) {
72+
Test.TestResult.DETECTED -> TestResult.DETECTED
73+
Test.TestResult.NOT_DETECTED -> TestResult.NOT_DETECTED
74+
}
75+
}
76+
6977
fun Vaccination.toVaccinationModel(): VaccinationModel {
7078
return VaccinationModel(
7179
disease,

app/src/main/java/dgca/verifier/app/android/verification/TestViewHolder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import dgca.verifier.app.android.parseFromTo
3434
class TestViewHolder(private val binding: ItemTestBinding) : RecyclerView.ViewHolder(binding.root) {
3535

3636
fun bind(data: TestModel) {
37-
binding.testResultValue.text = data.testResult
37+
binding.testResultValue.text = data.resultType.value
3838
binding.dateOfCollectionValue.text = data.dateTimeOfCollection.parseFromTo(DATE_TIME, FORMATTED_DATE_TIME)
3939
binding.dateOfTestResultValue.text = data.dateTimeOfTestResult?.parseFromTo(DATE_TIME, FORMATTED_DATE_TIME)
4040
binding.diseaseValue.text = data.disease

app/src/main/java/dgca/verifier/app/android/verification/VerificationDialogFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ class VerificationDialogFragment : BottomSheetDialogFragment() {
135135
binding.actionBtn.isVisible = true
136136
binding.actionBtn.backgroundTintList = statusColor
137137
binding.actionBtn.text = actionBtnText
138+
binding.actionBtn.isVisible = true
138139
}
139140

140141
private fun getCertificateListData(certificate: CertificateModel): List<CertificateData> {

app/src/main/java/dgca/verifier/app/android/verification/VerificationViewModel.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import dgca.verifier.app.decoder.compression.CompressorService
3636
import dgca.verifier.app.decoder.cose.CoseService
3737
import dgca.verifier.app.decoder.cose.CryptoService
3838
import dgca.verifier.app.decoder.model.GreenCertificate
39+
import dgca.verifier.app.decoder.model.TestVerificationResult
3940
import dgca.verifier.app.decoder.model.VerificationResult
4041
import dgca.verifier.app.decoder.prefixvalidation.PrefixValidationService
4142
import dgca.verifier.app.decoder.schema.SchemaValidator
@@ -96,6 +97,7 @@ class VerificationViewModel @Inject constructor(
9697

9798
schemaValidator.validate(coseData.cbor, verificationResult)
9899
greenCertificate = cborService.decode(coseData.cbor, verificationResult)
100+
validateCertData(greenCertificate, verificationResult)
99101

100102
val certificate = verifierRepository.getCertificate(kid.toBase64())
101103
if (certificate == null) {
@@ -110,4 +112,12 @@ class VerificationViewModel @Inject constructor(
110112
_certificate.value = greenCertificate?.toCertificateModel()
111113
}
112114
}
115+
116+
private fun validateCertData(certificate: GreenCertificate?, verificationResult: VerificationResult) {
117+
certificate?.tests?.let {
118+
if (it.isNotEmpty()) {
119+
verificationResult.testVerification = TestVerificationResult(it.first().isTestValid())
120+
}
121+
}
122+
}
113123
}

app/src/main/res/layout/dialog_fragment_verification.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@
211211
android:text="@string/done"
212212
android:textAllCaps="false"
213213
android:textColor="@color/white"
214-
android:visibility="visible" />
214+
android:visibility="gone" />
215215

216216
<androidx.appcompat.widget.AppCompatImageView
217217
android:id="@+id/logo"

0 commit comments

Comments
 (0)