diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/core/PersonCertificatesProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/core/PersonCertificatesProvider.kt index 6487c53031b85b6f36c4f32befceb2551c069c21..c07e9fc33f51aa0087b1437a5e848d9e9af87f08 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/core/PersonCertificatesProvider.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/core/PersonCertificatesProvider.kt @@ -56,7 +56,7 @@ class PersonCertificatesProvider @Inject constructor( * After calling this [personCertificates] will emit new values. * Setting it to null deletes it. */ - suspend fun setCurrentCwaUser(personIdentifier: CertificatePersonIdentifier?) { + fun setCurrentCwaUser(personIdentifier: CertificatePersonIdentifier?) { Timber.d("setCurrentCwaUser(personIdentifier=%s)", personIdentifier) personCertificatesSettings.currentCwaUser.update { personIdentifier } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/ui/details/PersonDetailsViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/ui/details/PersonDetailsViewModel.kt index 26157fe839a7d7e98f5877d207b5bd5e78dd1ecc..484a22e52eaf52a1e85642bf4887cfe8c17f9ed7 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/ui/details/PersonDetailsViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/person/ui/details/PersonDetailsViewModel.kt @@ -55,9 +55,15 @@ class PersonDetailsViewModel @AssistedInject constructor( events.postValue(Back) } + private val qrcodeCache = mutableMapOf<String, Bitmap?>() + private val qrCodeFlow: Flow<Bitmap?> = personCertificatesFlow.transform { - emit(null) - emit(qrCodeGenerator.createQrCode(it.highestPriorityCertificate.qrCode, margin = 0)) + val input = it.highestPriorityCertificate.qrCode + emit(qrcodeCache[input]) // Initial state + + val qrcode = qrcodeCache[input] ?: qrCodeGenerator.createQrCode(input, margin = 0) + qrcodeCache[input] = qrcode + emit(qrcode) } val uiState: LiveData<List<CertificateItem>> = combine(