Query for new tachiyomix metadata from extensions (#3464)

This commit is contained in:
AntsyLich
2026-06-24 00:04:44 +06:00
committed by GitHub
parent 176a5409b2
commit 41265cce32
@@ -49,6 +49,11 @@ internal object ExtensionLoader {
private const val METADATA_SOURCE_CLASS = "tachiyomi.extension.class" private const val METADATA_SOURCE_CLASS = "tachiyomi.extension.class"
private const val METADATA_SOURCE_FACTORY = "tachiyomi.extension.factory" private const val METADATA_SOURCE_FACTORY = "tachiyomi.extension.factory"
private const val METADATA_NSFW = "tachiyomi.extension.nsfw" private const val METADATA_NSFW = "tachiyomi.extension.nsfw"
private const val METADATA_NAME = "tachiyomix.name"
private const val METADATA_EXTENSION_LIB = "tachiyomix.extensionLib"
private const val METADATA_CONTENT_WARNING = "tachiyomix.contentWarning"
const val LIB_VERSION_MIN = 1.4 const val LIB_VERSION_MIN = 1.4
const val LIB_VERSION_MAX = 1.6 const val LIB_VERSION_MAX = 1.6
@@ -228,7 +233,8 @@ internal object ExtensionLoader {
val appInfo = pkgInfo.applicationInfo!! val appInfo = pkgInfo.applicationInfo!!
val pkgName = pkgInfo.packageName val pkgName = pkgInfo.packageName
val extName = pkgManager.getApplicationLabel(appInfo).toString().substringAfter("Tachiyomi: ") val extName = appInfo.metaData.getString(METADATA_NAME)
?: pkgManager.getApplicationLabel(appInfo).toString().substringAfter("Tachiyomi: ")
val versionName = pkgInfo.versionName val versionName = pkgInfo.versionName
val versionCode = PackageInfoCompat.getLongVersionCode(pkgInfo) val versionCode = PackageInfoCompat.getLongVersionCode(pkgInfo)
@@ -238,7 +244,8 @@ internal object ExtensionLoader {
} }
// Validate lib version // Validate lib version
val libVersion = versionName.substringBeforeLast('.').toDoubleOrNull() val libVersion = appInfo.metaData.getDouble(METADATA_EXTENSION_LIB).takeUnless { it == 0.0 }
?: versionName.substringBeforeLast('.').toDoubleOrNull()
if (libVersion == null || (libVersion != LIB_VERSION_MIN && libVersion != LIB_VERSION_MAX)) { if (libVersion == null || (libVersion != LIB_VERSION_MIN && libVersion != LIB_VERSION_MAX)) {
logcat(LogPriority.WARN) { logcat(LogPriority.WARN) {
"Lib version is $libVersion, while only versions " + "Lib version is $libVersion, while only versions " +
@@ -271,7 +278,8 @@ internal object ExtensionLoader {
return LoadResult.Untrusted(extension) return LoadResult.Untrusted(extension)
} }
val isNsfw = appInfo.metaData.getInt(METADATA_NSFW) == 1 val isNsfw = appInfo.metaData.getInt(METADATA_CONTENT_WARNING) > 0 ||
appInfo.metaData.getInt(METADATA_NSFW) == 1
if (!loadNsfwSource && isNsfw) { if (!loadNsfwSource && isNsfw) {
logcat(LogPriority.WARN) { "NSFW extension $pkgName not allowed" } logcat(LogPriority.WARN) { "NSFW extension $pkgName not allowed" }
return LoadResult.Error return LoadResult.Error