mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-04-30 14:44:35 +02:00
fix(mapper): default media item mapper
This commit is contained in:
parent
c7745e206a
commit
7908fe25f1
@ -5,6 +5,7 @@ import android.os.FileObserver
|
|||||||
import com.google.gson.JsonParser
|
import com.google.gson.JsonParser
|
||||||
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
|
import me.rhunk.snapenhance.core.event.events.impl.SendMessageWithContentEvent
|
||||||
import me.rhunk.snapenhance.core.features.Feature
|
import me.rhunk.snapenhance.core.features.Feature
|
||||||
|
import me.rhunk.snapenhance.core.util.dataBuilder
|
||||||
import me.rhunk.snapenhance.core.util.hook.HookStage
|
import me.rhunk.snapenhance.core.util.hook.HookStage
|
||||||
import me.rhunk.snapenhance.core.util.hook.hookConstructor
|
import me.rhunk.snapenhance.core.util.hook.hookConstructor
|
||||||
import me.rhunk.snapenhance.core.util.ktx.setObjectField
|
import me.rhunk.snapenhance.core.util.ktx.setObjectField
|
||||||
@ -47,9 +48,11 @@ class BypassVideoLengthRestriction :
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.mappings.useMapper(DefaultMediaItemMapper::class) {
|
context.mappings.useMapper(DefaultMediaItemMapper::class) {
|
||||||
defaultMediaItem.getAsClass()?.hookConstructor(HookStage.BEFORE) { param ->
|
defaultMediaItemClass.getAsClass()?.hookConstructor(HookStage.AFTER) { param ->
|
||||||
//set the video length argument
|
//set the video length argument
|
||||||
param.setArg(5, -1L)
|
param.thisObject<Any>().dataBuilder {
|
||||||
|
set(defaultMediaItemDurationMsField.getAsString()!!, -1L)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,13 @@ import me.rhunk.snapenhance.mapper.AbstractClassMapper
|
|||||||
import me.rhunk.snapenhance.mapper.ext.findConstString
|
import me.rhunk.snapenhance.mapper.ext.findConstString
|
||||||
import me.rhunk.snapenhance.mapper.ext.getClassName
|
import me.rhunk.snapenhance.mapper.ext.getClassName
|
||||||
import me.rhunk.snapenhance.mapper.ext.isAbstract
|
import me.rhunk.snapenhance.mapper.ext.isAbstract
|
||||||
|
import me.rhunk.snapenhance.mapper.ext.searchNextFieldReference
|
||||||
|
|
||||||
class DefaultMediaItemMapper : AbstractClassMapper("DefaultMediaItem") {
|
class DefaultMediaItemMapper : AbstractClassMapper("DefaultMediaItem") {
|
||||||
val cameraRollMediaId = classReference("cameraRollMediaIdClass")
|
val cameraRollMediaId = classReference("cameraRollMediaIdClass")
|
||||||
val durationMsField = string("durationMsField")
|
val durationMsField = string("durationMsField")
|
||||||
val defaultMediaItem = classReference("defaultMediaItemClass")
|
val defaultMediaItemClass = classReference("defaultMediaItemClass")
|
||||||
|
val defaultMediaItemDurationMsField = string("defaultMediaItemDurationMsField")
|
||||||
|
|
||||||
init {
|
init {
|
||||||
mapper {
|
mapper {
|
||||||
@ -31,10 +33,11 @@ class DefaultMediaItemMapper : AbstractClassMapper("DefaultMediaItem") {
|
|||||||
if (!superClass.isAbstract() || superClass.interfaces.isEmpty() || superClass.interfaces[0] != "Ljava/lang/Comparable;") continue
|
if (!superClass.isAbstract() || superClass.interfaces.isEmpty() || superClass.interfaces[0] != "Ljava/lang/Comparable;") continue
|
||||||
if (clazz.methods.none { it.returnType == "Landroid/net/Uri;" }) continue
|
if (clazz.methods.none { it.returnType == "Landroid/net/Uri;" }) continue
|
||||||
|
|
||||||
val constructorParameters = clazz.directMethods.firstOrNull { it.name == "<init>" }?.parameterTypes ?: continue
|
val durationInMillisDexField = clazz.methods.firstOrNull { it.name == "toString" }?.implementation?.takeIf {
|
||||||
if (constructorParameters.size < 6 || constructorParameters[5] != "J") continue
|
it.findConstString("metadata", contains = true)
|
||||||
|
}?.searchNextFieldReference("durationInMillis", contains = true) ?: continue
|
||||||
defaultMediaItem.set(clazz.getClassName())
|
defaultMediaItemClass.set(clazz.getClassName())
|
||||||
|
defaultMediaItemDurationMsField.set(durationInMillisDexField.name)
|
||||||
return@mapper
|
return@mapper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user