mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2024-11-10 01:01:56 +01:00
feat(YouTube): Add Enable slide to seek
patch
Implementation references taken from github.com/inotia00/revanced-patches/commit/0ede1987544aa0068f28665c6c029df23a30afe2
This commit is contained in:
parent
ddda3f6e8c
commit
68d10d4779
3 changed files with 104 additions and 0 deletions
|
@ -0,0 +1,82 @@
|
||||||
|
package app.revanced.patches.youtube.interaction.seekbar
|
||||||
|
|
||||||
|
import app.revanced.extensions.exception
|
||||||
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.BytecodePatch
|
||||||
|
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
||||||
|
import app.revanced.patcher.patch.annotation.Patch
|
||||||
|
import app.revanced.patches.shared.settings.preference.impl.StringResource
|
||||||
|
import app.revanced.patches.shared.settings.preference.impl.SwitchPreference
|
||||||
|
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.DoubleSpeedSeekNoticeFingerprint
|
||||||
|
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.SlideToSeekFingerprint
|
||||||
|
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
|
||||||
|
import app.revanced.patches.youtube.misc.settings.SettingsPatch
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
|
||||||
|
@Patch(
|
||||||
|
name = "Enable slide to seek",
|
||||||
|
description = "Enable slide to seek instead of playing at 2x speed.",
|
||||||
|
dependencies = [IntegrationsPatch::class, SettingsPatch::class],
|
||||||
|
compatiblePackages = [
|
||||||
|
CompatiblePackage(
|
||||||
|
"com.google.android.youtube",
|
||||||
|
[
|
||||||
|
"18.43.45",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
@Suppress("unused")
|
||||||
|
object EnableSlideToSeekPatch : BytecodePatch(
|
||||||
|
setOf(
|
||||||
|
SlideToSeekFingerprint,
|
||||||
|
DoubleSpeedSeekNoticeFingerprint
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const val INTEGRATIONS_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/patches/SlideToSeekPatch;"
|
||||||
|
|
||||||
|
override fun execute(context: BytecodeContext) {
|
||||||
|
SettingsPatch.PreferenceScreen.INTERACTIONS.addPreferences(
|
||||||
|
SwitchPreference(
|
||||||
|
"revanced_slide_to_seek",
|
||||||
|
StringResource(
|
||||||
|
"revanced_slide_to_seek_title",
|
||||||
|
"Enable slide to seek"
|
||||||
|
),
|
||||||
|
StringResource(
|
||||||
|
"revanced_slide_to_seek_summary_on",
|
||||||
|
"Slide to seek is enabled"
|
||||||
|
),
|
||||||
|
StringResource(
|
||||||
|
"revanced_slide_to_seek_summary_off",
|
||||||
|
"Slide to seek is not enabled"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
arrayOf(
|
||||||
|
// Restore the behaviour to slide to seek.
|
||||||
|
SlideToSeekFingerprint,
|
||||||
|
// Disable the double speed seek notice.
|
||||||
|
DoubleSpeedSeekNoticeFingerprint
|
||||||
|
).map {
|
||||||
|
it.result ?: throw it.exception
|
||||||
|
}.forEach {
|
||||||
|
val insertIndex = it.scanResult.patternScanResult!!.endIndex + 1
|
||||||
|
|
||||||
|
it.mutableMethod.apply {
|
||||||
|
val isEnabledRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
|
||||||
|
|
||||||
|
addInstructions(
|
||||||
|
insertIndex,
|
||||||
|
"""
|
||||||
|
invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->isSlideToSeekDisabled()Z
|
||||||
|
move-result v$isEnabledRegister
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.util.patch.LiteralValueFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
object DoubleSpeedSeekNoticeFingerprint : LiteralValueFingerprint(
|
||||||
|
returnType = "Z",
|
||||||
|
parameters = emptyList(),
|
||||||
|
opcodes = listOf(Opcode.MOVE_RESULT),
|
||||||
|
literalSupplier = { 45411330 }
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
|
||||||
|
|
||||||
|
import app.revanced.util.patch.LiteralValueFingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
object SlideToSeekFingerprint : LiteralValueFingerprint(
|
||||||
|
returnType = "Z",
|
||||||
|
parameters = emptyList(),
|
||||||
|
opcodes = listOf(Opcode.MOVE_RESULT),
|
||||||
|
literalSupplier = { 45411329 }
|
||||||
|
)
|
Loading…
Reference in a new issue