diff --git a/app/src/main/java/com/aurora/extensions/App.kt b/app/src/main/java/com/aurora/extensions/App.kt
new file mode 100644
index 000000000..b02ad7fb2
--- /dev/null
+++ b/app/src/main/java/com/aurora/extensions/App.kt
@@ -0,0 +1,22 @@
+package com.aurora.extensions
+
+import android.content.Context
+import android.content.pm.PackageManager
+import com.aurora.gplayapi.data.models.App
+import com.aurora.store.util.CertUtil
+
+fun App.isEnabled(context: Context): Boolean {
+ return context.packageManager.getApplicationInfo(
+ this.packageName,
+ PackageManager.GET_META_DATA
+ ).enabled
+}
+
+fun App.hasValidCertificate(context: Context): Boolean {
+ return this.certificateSetList.any {
+ it.certificateSet in CertUtil.getEncodedCertificateHashes(
+ context,
+ this.packageName
+ )
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt b/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
index f8261d32a..f5b5196e0 100644
--- a/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
+++ b/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
@@ -22,6 +22,7 @@ package com.aurora.store.view.custom.layouts.button
import android.content.Context
import android.util.AttributeSet
import android.widget.RelativeLayout
+import androidx.annotation.DrawableRes
import com.aurora.extensions.getString
import com.aurora.extensions.runOnUiThread
import com.aurora.store.R
@@ -72,6 +73,12 @@ class UpdateButton : RelativeLayout {
B.btnPositive.text = getString(text)
}
+ fun setIcon(@DrawableRes drawable: Int) {
+ B.btnPositive.setIconResource(drawable)
+ B.btnNegative.setIconResource(drawable)
+ B.btnQueued.setIconResource(drawable)
+ }
+
fun updateState(downloadStatus: DownloadStatus) {
val displayChild = when (downloadStatus) {
DownloadStatus.QUEUED,
diff --git a/app/src/main/java/com/aurora/store/view/epoxy/views/app/AppUpdateView.kt b/app/src/main/java/com/aurora/store/view/epoxy/views/app/AppUpdateView.kt
index e973ff853..5cbe3b4ab 100644
--- a/app/src/main/java/com/aurora/store/view/epoxy/views/app/AppUpdateView.kt
+++ b/app/src/main/java/com/aurora/store/view/epoxy/views/app/AppUpdateView.kt
@@ -32,7 +32,9 @@ import com.airbnb.epoxy.CallbackProp
import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView
import com.airbnb.epoxy.OnViewRecycled
+import com.aurora.extensions.hasValidCertificate
import com.aurora.extensions.invisible
+import com.aurora.extensions.isEnabled
import com.aurora.extensions.px
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
@@ -81,6 +83,12 @@ class AppUpdateView : RelativeLayout {
transformations(RoundedCornersTransformation(8.px.toFloat()))
}
+ if (isEnabled(context)) {
+ if (!hasValidCertificate(context)) B.btnAction.setIcon(R.drawable.ic_security_fail)
+ } else {
+ B.btnAction.setIcon(R.drawable.ic_disabled)
+ }
+
B.txtLine2.text = developerName
B.txtLine3.text = ("${CommonUtil.addSiPrefix(size)} • $updatedOn")
B.txtLine4.text = ("$versionName (${versionCode})")
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 e93317044..f8f846af9 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
@@ -23,8 +23,8 @@ import android.app.Application
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat
import androidx.lifecycle.viewModelScope
+import com.aurora.extensions.hasValidCertificate
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
@@ -67,16 +67,7 @@ class UpdatesViewModel @Inject constructor(
}
}.sortedBy { it.displayName.lowercase(Locale.getDefault()) }.also { apps ->
if (!isExtendedUpdateEnabled) {
- _updates.emit(
- apps.filter { app ->
- app.certificateSetList.any {
- it.certificateSet in CertUtil.getEncodedCertificateHashes(
- getApplication(),
- app.packageName
- )
- }
- }
- )
+ _updates.emit(apps.filter { it.hasValidCertificate(getApplication()) })
} else {
_updates.emit(apps)
}
diff --git a/app/src/main/res/drawable/ic_disabled.xml b/app/src/main/res/drawable/ic_disabled.xml
new file mode 100644
index 000000000..a13a7ff14
--- /dev/null
+++ b/app/src/main/res/drawable/ic_disabled.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_security_fail.xml b/app/src/main/res/drawable/ic_security_fail.xml
new file mode 100644
index 000000000..08b02ca58
--- /dev/null
+++ b/app/src/main/res/drawable/ic_security_fail.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/app/src/main/res/layout/view_update_button.xml b/app/src/main/res/layout/view_update_button.xml
index 773b548e1..83d37996e 100644
--- a/app/src/main/res/layout/view_update_button.xml
+++ b/app/src/main/res/layout/view_update_button.xml
@@ -36,7 +36,7 @@