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