mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-12 05:07:46 +02:00
fix(mapper): remove friend
This commit is contained in:
@ -3,11 +3,15 @@ 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.isAbstract
|
||||
import me.rhunk.snapenhance.mapper.ext.isEnum
|
||||
import java.lang.reflect.Modifier
|
||||
|
||||
class FriendRelationshipChangerMapper : AbstractClassMapper("FriendRelationshipChanger") {
|
||||
val classReference = classReference("class")
|
||||
val addFriendMethod = string("addFriendMethod")
|
||||
|
||||
val removeFriendClass = classReference("removeFriendClass")
|
||||
val removeFriendMethod = string("removeFriendMethod")
|
||||
|
||||
init {
|
||||
@ -22,22 +26,29 @@ class FriendRelationshipChangerMapper : AbstractClassMapper("FriendRelationshipC
|
||||
it.parameters[4].type == "Ljava/lang/String;"
|
||||
}
|
||||
|
||||
val removeFriendDexMethod = classDef.methods.firstOrNull {
|
||||
it.parameterTypes.size == 5 &&
|
||||
it.parameterTypes[0] == "Ljava/lang/String;" &&
|
||||
getClass(it.parameterTypes[1])?.isEnum() == true &&
|
||||
it.parameterTypes[2] == "Ljava/lang/String;" &&
|
||||
it.parameterTypes[3] == "Ljava/lang/String;"
|
||||
}
|
||||
|
||||
this@FriendRelationshipChangerMapper.apply {
|
||||
classReference.set(classDef.getClassName())
|
||||
addFriendMethod.set(addFriendDexMethod.name)
|
||||
removeFriendMethod.set(removeFriendDexMethod?.name)
|
||||
}
|
||||
|
||||
return@mapper
|
||||
}
|
||||
}
|
||||
mapper {
|
||||
for (classDef in classes) {
|
||||
if (!classDef.isAbstract()) continue
|
||||
val removeFriendDexMethod = classDef.methods.firstOrNull {
|
||||
Modifier.isStatic(it.accessFlags) &&
|
||||
it.parameterTypes.size == 5 &&
|
||||
it.returnType.contains("io/reactivex/rxjava3") &&
|
||||
getClass(it.parameterTypes[2])?.isEnum() == true &&
|
||||
getClass(it.parameterTypes[3])?.getClassName()?.endsWith("InteractionPlacementInfo") == true
|
||||
} ?: continue
|
||||
|
||||
removeFriendClass.set(classDef.getClassName())
|
||||
removeFriendMethod.set(removeFriendDexMethod.name)
|
||||
return@mapper
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,8 +3,7 @@ package me.rhunk.snapenhance.mapper.tests
|
||||
import com.google.gson.GsonBuilder
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import me.rhunk.snapenhance.mapper.ClassMapper
|
||||
import me.rhunk.snapenhance.mapper.impl.*
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user