Describe my changes
Some checks failed
Build Debug App / build (push) Failing after 5s
Build & Publish Release App / publish (push) Failing after 5s

This commit is contained in:
kmmiio99o 2025-11-11 01:21:52 +01:00
parent bc7cb499ef
commit 840d6232e3
2 changed files with 52 additions and 21 deletions

View file

@ -59,7 +59,7 @@ data class SemVer(
?: throw IllegalArgumentException("Invalid semver string $version")
fun parseOrNull(version: String): SemVer? {
val parts = version.removePrefix("v").split(".")
val parts = version.removePrefix("v").removePrefix("V").split(".")
if (parts.size != 3)
return null

View file

@ -146,27 +146,58 @@ class HomeModel(
try {
val packageManager = application.packageManager
val aliucordInstallations = packages.mapNotNull { pkg ->
// `longVersionCode` is unnecessary since Discord doesn't use `versionCodeMajor`
try {
@Suppress("DEPRECATION")
val versionCode = pkg.versionCode
val versionName = pkg.versionName ?: return@mapNotNull null
val applicationInfo = pkg.applicationInfo ?: return@mapNotNull null
InstallData(
name = packageManager.getApplicationLabel(applicationInfo).toString(),
packageName = pkg.packageName,
isUpToDate = isInstallationUpToDate(pkg),
icon = packageManager
.getApplicationIcon(applicationInfo)
val name = try {
packageManager.getApplicationLabel(applicationInfo).toString()
} catch (e: Exception) {
Log.w(BuildConfig.TAG, "Failed to get label for ${pkg.packageName}", e)
null
} ?: return@mapNotNull null
val icon = try {
packageManager.getApplicationIcon(applicationInfo)
.toBitmap()
.asImageBitmap()
.let(::BitmapPainter),
version = DiscordVersion.Existing(
.let(::BitmapPainter)
} catch (e: Exception) {
Log.w(BuildConfig.TAG, "Failed to get icon for ${pkg.packageName}", e)
null
} ?: return@mapNotNull null
// Defensive: check for any other possible nulls or bad data
if (pkg.packageName.isNullOrEmpty()) {
Log.w(BuildConfig.TAG, "Package name is null or empty for a package")
return@mapNotNull null
}
InstallData(
name = name,
packageName = pkg.packageName,
isUpToDate = try { isInstallationUpToDate(pkg) } catch (e: Exception) {
Log.w(BuildConfig.TAG, "Failed to check up-to-date for ${pkg.packageName}", e)
false
},
icon = icon,
version = try {
DiscordVersion.Existing(
type = DiscordVersion.parseVersionType(versionCode),
name = versionName.split("-")[0].trim(),
code = versionCode,
),
)
} catch (e: Exception) {
Log.w(BuildConfig.TAG, "Failed to parse version for ${pkg.packageName}", e)
null
} ?: return@mapNotNull null,
)
} catch (e: Exception) {
Log.w(BuildConfig.TAG, "Failed to process package ${pkg.packageName}", e)
null
}
}
mainThread {