AppUpdateView: Show icons on incompatible updates buttons
- Slashed circle: Disabled - Shield with a cross: Fails certificate verification Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
22
app/src/main/java/com/aurora/extensions/App.kt
Normal file
22
app/src/main/java/com/aurora/extensions/App.kt
Normal file
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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})")
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user