fixed crash in root data model

This commit is contained in:
X1nto 2021-01-17 16:52:50 +04:00
parent 1c123e55d8
commit 835ede4de6
3 changed files with 28 additions and 36 deletions

View File

@ -16,9 +16,9 @@ import kotlinx.coroutines.launch
open class DataModel(
private val jsonObject: LiveData<JsonObject?>,
private val context: Context,
open val appPkg: String,
open val appName: String,
open val appIcon: Drawable?,
val appPkg: String,
val appName: String,
val appIcon: Drawable?,
) {
private val versionCode = MutableLiveData<Int>()
@ -32,11 +32,9 @@ open class DataModel(
private fun fetch() = CoroutineScope(Dispatchers.IO).launch {
val jobj = jsonObject.value
isAppInstalled.postValue(isPackageInstalled(appPkg, context.packageManager))
isAppInstalled.postValue(isAppInstalled(appPkg))
versionCode.postValue(jobj?.int("versionCode") ?: 0)
versionName.postValue(jobj?.string("version")?.removeSuffix("-vanced") ?: context.getString(
R.string.unavailable
))
versionName.postValue(jobj?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable))
changelog.postValue(jobj?.string("changelog") ?: context.getString(R.string.unavailable))
}
@ -50,8 +48,8 @@ open class DataModel(
}
this?.let {
isAppInstalled.observe(it) {
installedVersionCode.postValue(getPkgVersionCode(appPkg))
installedVersionName.postValue(getPkgVersionName(appPkg))
installedVersionCode.value = getPkgVersionCode(appPkg)
installedVersionName.value = getPkgVersionName(appPkg)
}
}
this?.let {
@ -64,7 +62,9 @@ open class DataModel(
}
}
open fun getPkgVersionName(pkg: String): String {
open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, context.packageManager)
private fun getPkgVersionName(pkg: String): String {
val pm = context.packageManager
return if (isAppInstalled.value == true) {
pm?.getPackageInfo(pkg, 0)?.versionName?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable)
@ -84,7 +84,7 @@ open class DataModel(
} else 0
}
open fun compareInt(int1: Int?, int2: Int?): String {
private fun compareInt(int1: Int?, int2: Int?): String {
if (int2 != null && int1 != null) {
return when {
int1 == 0 -> context.getString(R.string.install)

View File

@ -2,40 +2,32 @@ package com.vanced.manager.model
import android.content.Context
import android.graphics.drawable.Drawable
import android.util.Log
import androidx.lifecycle.LiveData
import com.beust.klaxon.JsonObject
import com.vanced.manager.R
import com.vanced.manager.utils.PackageHelper
class RootDataModel(
jsonObject: LiveData<JsonObject?>,
private val context: Context,
override val appPkg: String,
override val appName: String,
override val appIcon: Drawable?,
private val scriptName: String
context: Context,
appPkg: String,
appName: String,
appIcon: Drawable?,
//BUG THIS!
//kotlin thinks that this value is null if we use
//private val scriptName: String
//Although it's impossible for it to be null.
//Ironic, isn't it?
private val scriptName: String?
): DataModel(
jsonObject, context, appPkg, appName, appIcon
) {
init {
Log.d("test", appPkg)
}
override fun getPkgVersionName(pkg: String): String {
return if (PackageHelper.scriptExists(scriptName)) {
super.getPkgVersionName(pkg)
override fun isAppInstalled(pkg: String): Boolean {
//Adapt to nullable shit
return if (scriptName?.let { PackageHelper.scriptExists(it) } == true) {
super.isAppInstalled(appPkg)
} else {
context.getString(R.string.unavailable)
}
}
override fun compareInt(int1: Int?, int2: Int?): String {
return if (PackageHelper.scriptExists(scriptName)) {
super.compareInt(int1, int2)
} else {
context.getString(R.string.install)
false
}
}

View File

@ -68,9 +68,9 @@ object PackageHelper {
else -> ""
}
}
fun isPackageInstalled(packageName: String?, packageManager: PackageManager): Boolean {
fun isPackageInstalled(packageName: String, packageManager: PackageManager): Boolean {
return try {
packageManager.getPackageInfo(packageName ?: "", 0)
packageManager.getPackageInfo(packageName, 0)
true
} catch (e: PackageManager.NameNotFoundException) {
false