mirror of
https://github.com/revanced/revanced-patches
synced 2024-11-10 11:59:23 +01:00
feat: OldQualityLayout, HideSuggestions, HideReels, EnableSeekbarTapping
This commit is contained in:
parent
795cef129c
commit
04a7cfff20
@ -1,9 +1,9 @@
|
||||
package app.revanced.patches
|
||||
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patches.ads.VideoAds
|
||||
import app.revanced.patches.layouts.CreateButtonRemover
|
||||
import app.revanced.patches.layouts.MinimizedPlayback
|
||||
import app.revanced.patches.ad.VideoAds
|
||||
import app.revanced.patches.interaction.EnableSeekbarTapping
|
||||
import app.revanced.patches.layout.*
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
/**
|
||||
@ -18,6 +18,10 @@ object Index {
|
||||
val patches: Array<KClass<out Patch>> = arrayOf(
|
||||
VideoAds::class,
|
||||
MinimizedPlayback::class,
|
||||
CreateButtonRemover::class
|
||||
CreateButtonRemover::class,
|
||||
HideReels::class,
|
||||
HideSuggestions::class,
|
||||
OldQualityLayout::class,
|
||||
EnableSeekbarTapping::class
|
||||
)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package app.revanced.patches.ads
|
||||
package app.revanced.patches.ad
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
@ -0,0 +1,49 @@
|
||||
package app.revanced.patches.interaction
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.PatchResult
|
||||
import app.revanced.patcher.patch.PatchResultSuccess
|
||||
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||
import org.objectweb.asm.Opcodes
|
||||
import org.objectweb.asm.tree.*
|
||||
|
||||
class EnableSeekbarTapping : Patch("enable-seekbar-tapping") {
|
||||
override fun execute(cache: Cache): PatchResult {
|
||||
val patchData = cache.methods["enable-seekbar-tapping"]
|
||||
val methodOPatchData = cache.methods["enable-seekbar-tapping-method-o"]
|
||||
val methodPPatchData = cache.methods["enable-seekbar-tapping-method-p"]
|
||||
|
||||
val elseLabel = LabelNode()
|
||||
patchData.method.instructions.insertAt(
|
||||
patchData.scanData.endIndex,
|
||||
InsnNode(Opcodes.ACONST_NULL),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
"fi/razerman/youtube/preferences/BooleanPreferences",
|
||||
"isTapSeekingEnabled",
|
||||
"()Z"
|
||||
),
|
||||
JumpInsnNode(Opcodes.IFEQ, elseLabel),
|
||||
VarInsnNode(Opcodes.ALOAD, 0),
|
||||
VarInsnNode(Opcodes.ILOAD, 6),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKEVIRTUAL,
|
||||
methodOPatchData.declaringClass.name,
|
||||
methodOPatchData.method.name,
|
||||
"(I)V"
|
||||
),
|
||||
VarInsnNode(Opcodes.ALOAD, 0),
|
||||
VarInsnNode(Opcodes.ILOAD, 6),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKEVIRTUAL,
|
||||
methodPPatchData.declaringClass.name,
|
||||
methodPPatchData.method.name,
|
||||
"(I)V"
|
||||
),
|
||||
elseLabel
|
||||
)
|
||||
|
||||
return PatchResultSuccess()
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package app.revanced.patches.layouts
|
||||
package app.revanced.patches.layout
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
29
src/main/kotlin/app/revanced/patches/layout/HideReels.kt
Normal file
29
src/main/kotlin/app/revanced/patches/layout/HideReels.kt
Normal file
@ -0,0 +1,29 @@
|
||||
package app.revanced.patches.layout
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.PatchResult
|
||||
import app.revanced.patcher.patch.PatchResultSuccess
|
||||
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||
import org.objectweb.asm.Opcodes
|
||||
import org.objectweb.asm.tree.MethodInsnNode
|
||||
import org.objectweb.asm.tree.VarInsnNode
|
||||
|
||||
class HideReels : Patch("hide-reels") {
|
||||
override fun execute(cache: Cache): PatchResult {
|
||||
val patchData = cache.methods["hide-reel-patch"]
|
||||
|
||||
patchData.method.instructions.insertAt(
|
||||
patchData.scanData.endIndex + 1,
|
||||
VarInsnNode(Opcodes.ALOAD, 18),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
"fi/razerman/youtube/XAdRemover",
|
||||
"HideReels",
|
||||
"(Landroid/view/View;)V"
|
||||
)
|
||||
)
|
||||
|
||||
return PatchResultSuccess()
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package app.revanced.patches.layout
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.PatchResult
|
||||
import app.revanced.patcher.patch.PatchResultError
|
||||
import app.revanced.patcher.patch.PatchResultSuccess
|
||||
import app.revanced.patcher.signature.Signature
|
||||
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||
import org.objectweb.asm.Opcodes
|
||||
import org.objectweb.asm.Type
|
||||
import org.objectweb.asm.tree.MethodInsnNode
|
||||
import org.objectweb.asm.tree.VarInsnNode
|
||||
|
||||
class HideSuggestions : Patch("hide-suggestions") {
|
||||
override fun execute(cache: Cache): PatchResult {
|
||||
val method = cache.methods["hide-suggestions-patch"].findParentMethod(
|
||||
Signature(
|
||||
"hide-suggestions-method",
|
||||
Type.VOID_TYPE,
|
||||
Opcodes.ACC_PUBLIC or Opcodes.ACC_FINAL,
|
||||
arrayOf(Type.BOOLEAN_TYPE),
|
||||
arrayOf(
|
||||
Opcodes.ALOAD,
|
||||
Opcodes.ILOAD,
|
||||
Opcodes.PUTFIELD,
|
||||
Opcodes.ALOAD,
|
||||
Opcodes.GETFIELD
|
||||
)
|
||||
)
|
||||
) ?: return PatchResultError("Parent method hide-suggestions-method has not been found")
|
||||
|
||||
method.method.instructions.insertAt(
|
||||
0,
|
||||
VarInsnNode(Opcodes.ILOAD, 1),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
"java/lang/Boolean",
|
||||
"valueOf",
|
||||
"(Z)Ljava/lang/Boolean"
|
||||
),
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
"fi/razerman/youtube/XAdRemover",
|
||||
"HideReels",
|
||||
"(Landroid/view/View;)V"
|
||||
)
|
||||
)
|
||||
|
||||
return PatchResultSuccess()
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package app.revanced.patches.layouts
|
||||
package app.revanced.patches.layout
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
@ -0,0 +1,52 @@
|
||||
package app.revanced.patches.layout
|
||||
|
||||
import app.revanced.patcher.cache.Cache
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.PatchResult
|
||||
import app.revanced.patcher.patch.PatchResultError
|
||||
import app.revanced.patcher.patch.PatchResultSuccess
|
||||
import app.revanced.patcher.signature.Signature
|
||||
import app.revanced.patcher.util.ExtraTypes
|
||||
import app.revanced.patcher.writer.ASMWriter.insertAt
|
||||
import org.objectweb.asm.Opcodes
|
||||
import org.objectweb.asm.tree.JumpInsnNode
|
||||
import org.objectweb.asm.tree.MethodInsnNode
|
||||
import org.objectweb.asm.tree.VarInsnNode
|
||||
|
||||
class OldQualityLayout : Patch("old-quality-restore") {
|
||||
override fun execute(cache: Cache): PatchResult {
|
||||
val method = cache.methods["old-quality-patch"].findParentMethod(
|
||||
Signature(
|
||||
"old-quality-patch-method",
|
||||
ExtraTypes.Any,
|
||||
Opcodes.ACC_PUBLIC or Opcodes.ACC_FINAL,
|
||||
arrayOf(),
|
||||
arrayOf(
|
||||
Opcodes.ALOAD,
|
||||
Opcodes.GETFIELD,
|
||||
Opcodes.ISTORE,
|
||||
Opcodes.ICONST_3,
|
||||
Opcodes.ISTORE
|
||||
)
|
||||
)
|
||||
) ?: return PatchResultError("Parent method old-quality-patch-method has not been found")
|
||||
|
||||
method.method.instructions.insertAt(
|
||||
0,
|
||||
MethodInsnNode(
|
||||
Opcodes.INVOKESTATIC,
|
||||
"fi/razerman/youtube/XGlobals",
|
||||
"useOldStyleQualitySettings",
|
||||
"()Z"
|
||||
),
|
||||
VarInsnNode(Opcodes.ISTORE, 1),
|
||||
VarInsnNode(Opcodes.ILOAD, 1),
|
||||
JumpInsnNode(
|
||||
Opcodes.IFNE,
|
||||
(method.method.instructions[method.scanData.endIndex + 3] as JumpInsnNode).label
|
||||
),
|
||||
)
|
||||
|
||||
return PatchResultSuccess()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user