fixed crash in root data model
This commit is contained in:
parent
1c123e55d8
commit
835ede4de6
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue