diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/fingerprints/VersionOverrideFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/fingerprints/VersionOverrideFingerprint.kt deleted file mode 100644 index e857000d4..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/fingerprints/VersionOverrideFingerprint.kt +++ /dev/null @@ -1,14 +0,0 @@ -package app.revanced.patches.youtube.misc.oldlayout.fingerprints - -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.Opcode - -object VersionOverrideFingerprint : MethodFingerprint( - opcodes = listOf( - Opcode.IF_EQZ, - Opcode.CONST_STRING - ), - customFingerprint = { - it.definingClass.endsWith("VersionOverridePatch;") && it.name == "getVersionOverride" - } -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/patch/OldLayoutPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/patch/OldLayoutPatch.kt deleted file mode 100644 index 4a3f98bc2..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/oldlayout/patch/OldLayoutPatch.kt +++ /dev/null @@ -1,64 +0,0 @@ -package app.revanced.patches.youtube.misc.oldlayout.patch - -import app.revanced.extensions.toErrorResult -import app.revanced.patcher.annotation.Description -import app.revanced.patcher.annotation.Name -import app.revanced.patcher.annotation.Version -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.replaceInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.PatchResult -import app.revanced.patcher.patch.PatchResultSuccess -import app.revanced.patcher.patch.annotations.DependsOn -import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patches.shared.annotation.YouTubeCompatibility -import app.revanced.patches.shared.patch.options.PatchOptions -import app.revanced.patches.shared.patch.versionspoof.GeneralVersionSpoofPatch -import app.revanced.patches.youtube.misc.oldlayout.fingerprints.VersionOverrideFingerprint -import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch -import app.revanced.util.integrations.Constants.MISC_PATH - -@Patch -@Name("enable-old-layout") -@Description("Spoof the YouTube client version to use the old layout.") -@DependsOn( - [ - GeneralVersionSpoofPatch::class, - PatchOptions::class, - SettingsPatch::class - ] -) -@YouTubeCompatibility -@Version("0.0.1") -class OldLayoutPatch : BytecodePatch( - listOf( - VersionOverrideFingerprint - ) -) { - override fun execute(context: BytecodeContext): PatchResult { - - GeneralVersionSpoofPatch.injectSpoof("$MISC_PATH/VersionOverridePatch;->getVersionOverride(Ljava/lang/String;)Ljava/lang/String;") - - val clientSpoofVersion = PatchOptions.clientSpoofVersion!! - - VersionOverrideFingerprint.result?.let { - val insertIndex = it.scanResult.patternScanResult!!.endIndex - - it.mutableMethod.replaceInstruction(insertIndex, "const-string p0, \"$clientSpoofVersion\"") - - } ?: return VersionOverrideFingerprint.toErrorResult() - - /* - * Add settings - */ - SettingsPatch.addPreference( - arrayOf( - "SETTINGS: ENABLE_OLD_LAYOUT" - ) - ) - - SettingsPatch.updatePatchStatus("enable-old-layout") - - return PatchResultSuccess() - } -} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/spoofappversion/patch/SpoofAppVersionPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/spoofappversion/patch/SpoofAppVersionPatch.kt new file mode 100644 index 000000000..a6ea732b1 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/spoofappversion/patch/SpoofAppVersionPatch.kt @@ -0,0 +1,47 @@ +package app.revanced.patches.youtube.misc.spoofappversion.patch + +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.ResourceContext +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.ResourcePatch +import app.revanced.patcher.patch.annotations.DependsOn +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patches.shared.annotation.YouTubeCompatibility +import app.revanced.patches.shared.patch.versionspoof.GeneralVersionSpoofPatch +import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch +import app.revanced.util.integrations.Constants.MISC_PATH +import app.revanced.util.resources.ResourceUtils.copyXmlNode + +@Patch +@Name("spoof-app-version") +@Description("Tricks YouTube into thinking, you are running an older version of the app. One of the side effects also includes restoring the old UI.") +@DependsOn( + [ + GeneralVersionSpoofPatch::class, + SettingsPatch::class + ] +) +@YouTubeCompatibility +@Version("0.0.1") +class SpoofAppVersionPatch : ResourcePatch { + override fun execute(context: ResourceContext): PatchResult { + + GeneralVersionSpoofPatch.injectSpoof("$MISC_PATH/VersionOverridePatch;->getVersionOverride(Ljava/lang/String;)Ljava/lang/String;") + + /** + * Add settings + */ + SettingsPatch.addPreference( + arrayOf( + "SETTINGS: SPOOF_APP_VERSION" + ) + ) + + SettingsPatch.updatePatchStatus("spoof-app-version") + + return PatchResultSuccess() + } +} \ No newline at end of file diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 17090d6dd..ec6b6d8cb 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -81,9 +81,11 @@ External browser is disabled External browser is enabled Enable external browser - YouTube Layout will follow your Google Account status - Trick the YouTube version to force enable old layout - Enable old layout + "Spoofing the client version to the old version + +This will change the appearance of the app, but unknown side effects may occur +If later turned off, the old UI may remain until clear the app data" + Spoof app version New style quality settings are shown Old style quality settings are shown Enable old style quality layout diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 1cb45fd4b..461600a83 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -429,8 +429,9 @@ SETTINGS: DOUBLE_BACK_TIMEOUT --> - + + @@ -538,7 +539,7 @@ - +