feat: OldQualityLayout, HideSuggestions, HideReels, EnableSeekbarTapping

This commit is contained in:
oSumAtrIX 2022-03-22 00:55:42 +01:00
parent 795cef129c
commit 04a7cfff20
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
8 changed files with 193 additions and 7 deletions

View File

@ -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
)
}

View File

@ -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

View File

@ -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()
}
}

View File

@ -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

View 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()
}
}

View File

@ -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()
}
}

View File

@ -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

View File

@ -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()
}
}