commit a633f913d3a77add7259eea6ea4dd3a08e3315f6
parent 47a549ea2d101816a8f9c0bb900c19d7ec3f1487
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Wed, 5 Jun 2024 17:04:51 +0200
fix(mapper): streaks expiration
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
Diffstat:
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/ext/DexMethod.kt b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/ext/DexMethod.kt
@@ -6,13 +6,16 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.StringReference
-fun MethodImplementation.findConstString(string: String, contains: Boolean = false): Boolean = instructions.filterIsInstance(Instruction21c::class.java).any {
+fun MethodImplementation.findConstString(
+ string: String,
+ contains: Boolean = false,
+ startsWith: Boolean = false,
+ ignoreCase: Boolean = false
+): Boolean = instructions.filterIsInstance<Instruction21c>().any {
(it.reference as? StringReference)?.string?.let { str ->
- if (contains) {
- str.contains(string)
- } else {
- str == string
- }
+ if (contains && str.contains(string, ignoreCase = ignoreCase)) return@any true
+ if (startsWith && str.startsWith(string, ignoreCase = ignoreCase)) return@any true
+ str == string
} == true
}
diff --git a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/StreaksExpirationMapper.kt b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/StreaksExpirationMapper.kt
@@ -21,7 +21,7 @@ class StreaksExpirationMapper: AbstractClassMapper("StreaksExpirationMapper") {
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
+ if (toStringMethod.implementation?.findConstString("StreaksResult(", startsWith = true) != true) continue
streaksResultClass = clazz.type
break
}