From 41b13c3429d8cf4f967b6624eddf1aa4f0cabe19 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 12 Feb 2024 14:32:52 +0530 Subject: [PATCH] UpdatesViewModel: Allow users to filter cert-verification failed updates If a user has incompatible updates turned on, show them updates which fails certificate verification as well. Signed-off-by: Aayush Gupta --- .../store/viewmodel/all/UpdatesViewModel.kt | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt index d80f2e0c1..e93317044 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt @@ -26,6 +26,7 @@ import androidx.lifecycle.viewModelScope import com.aurora.gplayapi.data.models.App import com.aurora.store.util.CertUtil import com.aurora.store.util.DownloadWorkerUtil +import com.aurora.store.util.Preferences import dagger.hilt.android.lifecycle.HiltViewModel import java.util.Locale import javax.inject.Inject @@ -51,6 +52,11 @@ class UpdatesViewModel @Inject constructor( override fun observe() { viewModelScope.launch(Dispatchers.IO) { + val isExtendedUpdateEnabled = Preferences.getBoolean( + getApplication(), + Preferences.PREFERENCE_UPDATES_EXTENDED + ) + try { getFilteredApps().filter { val packageInfo = packageInfoMap[it.packageName] @@ -59,15 +65,21 @@ class UpdatesViewModel @Inject constructor( } else { false } - }.filter { app -> - app.certificateSetList.any { - it.certificateSet in CertUtil.getEncodedCertificateHashes( - getApplication(), - app.packageName - ) - } }.sortedBy { it.displayName.lowercase(Locale.getDefault()) }.also { apps -> - _updates.emit(apps) + if (!isExtendedUpdateEnabled) { + _updates.emit( + apps.filter { app -> + app.certificateSetList.any { + it.certificateSet in CertUtil.getEncodedCertificateHashes( + getApplication(), + app.packageName + ) + } + } + ) + } else { + _updates.emit(apps) + } } } catch (exception: Exception) { Log.d(TAG, "Failed to get updates", exception)