feat(core): auto download voice notes

This commit is contained in:
rhunk
2024-08-13 00:49:05 +02:00
parent e6e33822e7
commit 2f3007964a
11 changed files with 204 additions and 201 deletions

View File

@ -37,7 +37,6 @@ class ClassMapper(
MemoriesPresenterMapper(),
StreaksExpirationMapper(),
COFObservableMapper(),
PlaybackViewContextMapper(),
)
}

View File

@ -1,33 +0,0 @@
package me.rhunk.snapenhance.mapper.impl
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import me.rhunk.snapenhance.mapper.AbstractClassMapper
import me.rhunk.snapenhance.mapper.ext.getClassName
class PlaybackViewContextMapper: AbstractClassMapper("Playback View Context Mapper") {
val componentContextClass = classReference("componentContextClass")
val setOnPlayButtonTapedMethod = string("setOnPlayButtonTapedMethod")
init {
mapper {
val playbackViewClass = getClass("Lcom/snap/voicenotes/PlaybackView;") ?: return@mapper
val componentContextDexClass = getClass(playbackViewClass.methods.firstOrNull {
it.name == "create" && it.parameters.size > 3
}?.parameterTypes?.get(2)) ?: return@mapper
componentContextClass.set(componentContextDexClass.getClassName())
val setOnPlayButtonTapedDexMethod = componentContextDexClass.methods.firstOrNull { method ->
method.name != "<init>" && method.implementation?.instructions?.any {
if (it is Instruction22c && it.reference is FieldReference) {
(it.reference as FieldReference).name == "_onPlayButtonTapped"
} else false
} == true
} ?: return@mapper
setOnPlayButtonTapedMethod.set(setOnPlayButtonTapedDexMethod.name)
}
}
}