fix(mapper): plus subscription mapper
This commit is contained in:
@@ -3,29 +3,37 @@ package me.rhunk.snapenhance.mapper.impl
|
||||
import me.rhunk.snapenhance.mapper.AbstractClassMapper
|
||||
import me.rhunk.snapenhance.mapper.ext.findConstString
|
||||
import me.rhunk.snapenhance.mapper.ext.getClassName
|
||||
import me.rhunk.snapenhance.mapper.ext.searchNextFieldReference
|
||||
|
||||
class PlusSubscriptionMapper : AbstractClassMapper("PlusSubscription"){
|
||||
val classReference = classReference("class")
|
||||
val tierField = string("tierField")
|
||||
val statusField = string("statusField")
|
||||
val originalSubscriptionTimeMillisField = string("originalSubscriptionTimeMillisField")
|
||||
val expirationTimeMillisField = string("expirationTimeMillisField")
|
||||
|
||||
init {
|
||||
mapper {
|
||||
for (clazz in classes) {
|
||||
if (clazz.directMethods.filter { it.name == "<init>" }.none {
|
||||
it.parameterTypes.size > 3 &&
|
||||
it.parameterTypes[0] == "I" &&
|
||||
it.parameterTypes[1] == "I" &&
|
||||
it.parameterTypes[2] == "J" &&
|
||||
it.parameterTypes[3] == "J"
|
||||
it.parameterTypes.size > 3
|
||||
}) continue
|
||||
|
||||
val isPlusSubscriptionInfoClass = clazz.virtualMethods.firstOrNull { it.name == "toString" }?.implementation?.let {
|
||||
val toStringMethod = clazz.virtualMethods.firstOrNull { it.name == "toString" }?.implementation ?: continue
|
||||
if (!toStringMethod.let {
|
||||
it.findConstString("SubscriptionInfo", contains = true) && it.findConstString("expirationTimeMillis", contains = true)
|
||||
}) continue
|
||||
|
||||
classReference.set(clazz.getClassName())
|
||||
|
||||
toStringMethod.apply {
|
||||
searchNextFieldReference("tier", contains = true)?.let { tierField.set(it.name) }
|
||||
searchNextFieldReference("status", contains = true)?.let { statusField.set(it.name) }
|
||||
searchNextFieldReference("original", contains = true)?.let { originalSubscriptionTimeMillisField.set(it.name) }
|
||||
searchNextFieldReference("expirationTimeMillis", contains = true)?.let { expirationTimeMillisField.set(it.name) }
|
||||
}
|
||||
|
||||
if (isPlusSubscriptionInfoClass == true) {
|
||||
classReference.set(clazz.getClassName())
|
||||
return@mapper
|
||||
}
|
||||
return@mapper
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user