Manual Extension Fixes (#2139)

* Fix manual extension icons

* Delete extension where APK Url is null
This commit is contained in:
Mitchell Syer
2026-06-28 02:08:53 -04:00
committed by GitHub
parent e2fd15158c
commit c79486b8be
2 changed files with 8 additions and 8 deletions

View File

@@ -165,7 +165,7 @@ object Extension {
dex2jar(apkFilePath, jarFilePath, fileNameWithoutType) dex2jar(apkFilePath, jarFilePath, fileNameWithoutType)
extractAssetsFromApk(apkFilePath, jarFilePath) extractAssetsFromApk(apkFilePath, jarFilePath)
extractAndCacheApkIcon(apkFilePath, apkName) extractAndCacheApkIcon(apkFilePath, packageInfo.packageName)
// clean up // clean up
File(apkFilePath).delete() File(apkFilePath).delete()
@@ -257,7 +257,7 @@ object Extension {
private fun extractAndCacheApkIcon( private fun extractAndCacheApkIcon(
apkFilePath: String, apkFilePath: String,
apkName: String, pkgName: String,
) { ) {
val iconCacheDir = "${applicationDirs.extensionsRoot}/icon" val iconCacheDir = "${applicationDirs.extensionsRoot}/icon"
try { try {
@@ -270,15 +270,15 @@ object Extension {
?.first ?.first
} }
if (iconData == null) { if (iconData == null) {
logger.warn { "No icon found in APK $apkName" } logger.warn { "No icon found in APK $pkgName" }
return return
} }
File(iconCacheDir).mkdirs() File(iconCacheDir).mkdirs()
clearCachedImage(iconCacheDir, apkName) clearCachedImage(iconCacheDir, pkgName)
saveImage("$iconCacheDir/$apkName", iconData.inputStream(), null) saveImage("$iconCacheDir/$pkgName", iconData.inputStream(), null)
} catch (e: Exception) { } catch (e: Exception) {
logger.warn(e) { "Failed to extract icon from APK $apkName" } logger.warn(e) { "Failed to extract icon from APK $pkgName" }
} }
} }
@@ -371,7 +371,7 @@ object Extension {
SourceTable.deleteWhere { SourceTable.extension eq extensionId } SourceTable.deleteWhere { SourceTable.extension eq extensionId }
if (extensionRecord[ExtensionTable.isObsolete]) { if (extensionRecord[ExtensionTable.isObsolete] || extensionRecord[ExtensionTable.apkUrl] == null) {
ExtensionTable.deleteWhere { ExtensionTable.pkgName eq pkgName } ExtensionTable.deleteWhere { ExtensionTable.pkgName eq pkgName }
} else { } else {
ExtensionTable.update({ ExtensionTable.pkgName eq pkgName }) { ExtensionTable.update({ ExtensionTable.pkgName eq pkgName }) {

View File

@@ -23,7 +23,7 @@ object ExtensionTable : IntIdTable() {
val name = varchar("name", 128) val name = varchar("name", 128)
val pkgName = varchar("pkg_name", 128) val pkgName = varchar("pkg_name", 128)
val apkUrl = varchar("apk_url", 2048) val apkUrl = varchar("apk_url", 2048).nullable()
val extensionLib = varchar("extension_lib", 16).nullable() val extensionLib = varchar("extension_lib", 16).nullable()
val versionName = varchar("version_name", 16) val versionName = varchar("version_name", 16)
val versionCode = long("version_code") val versionCode = long("version_code")