fix: streak expiration info

This commit is contained in:
rhunk
2024-05-17 23:34:05 +02:00
parent 28433922c5
commit b15dada173
2 changed files with 41 additions and 2 deletions

View File

@ -10,10 +10,38 @@ class StreaksExpirationMapper: AbstractClassMapper("StreaksExpirationMapper") {
val hourGlassTimeRemainingField = string("hourGlassTimeRemainingField")
val expirationTimeField = string("expirationTimeField")
val streaksFormatterClass = string("streaksFormatterClass")
val streaksFormatterClass = classReference("streaksFormatterClass")
val formatStreaksTextMethod = string("formatStreaksTextMethod")
val simpleStreaksFormatterClass = classReference("simpleStreaksFormatterClass")
val formatSimpleStreaksTextMethod = string("formatSimpleStreaksTextMethod")
init {
mapper {
var streaksResultClass: String? = null
for (clazz in classes) {
val toStringMethod = clazz.methods.firstOrNull { it.name == "toString" } ?: continue
if (toStringMethod.implementation?.findConstString("StreaksResult(", contains = true) != true) continue
streaksResultClass = clazz.type
break
}
if (streaksResultClass == null) return@mapper
for (clazz in classes) {
val formatStreaksTextDexMethod = clazz.methods.firstOrNull { method ->
Modifier.isStatic(method.accessFlags) &&
method.returnType == "Ljava/lang/String;" &&
method.parameterTypes.let {
it.size >= 3 && it.first() == streaksResultClass && it[1] == "Ljava/lang/String;" && it[2] == "J"
}
} ?: continue
simpleStreaksFormatterClass.set(clazz.getClassName())
formatSimpleStreaksTextMethod.set(formatStreaksTextDexMethod.name)
return@mapper
}
}
mapper {
var streaksExpirationClassName: String? = null
for (clazz in classes) {