diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/annotations/WatchInVRCompatibility.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/annotations/HidePlayerFlyoutMenuItemsCompatibility.kt similarity index 62% rename from src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/annotations/WatchInVRCompatibility.kt rename to src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/annotations/HidePlayerFlyoutMenuItemsCompatibility.kt index e03bee7082..c9dcebc192 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/annotations/WatchInVRCompatibility.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/annotations/HidePlayerFlyoutMenuItemsCompatibility.kt @@ -1,8 +1,8 @@ -package app.revanced.patches.youtube.layout.hide.watchinvr.annotations +package app.revanced.patches.youtube.layout.hide.player.flyoutmenupanel.annotations import app.revanced.patcher.annotation.Compatibility import app.revanced.patcher.annotation.Package @Compatibility([Package("com.google.android.youtube", arrayOf("18.16.37", "18.19.35", "18.20.39", "18.23.35"))]) @Target(AnnotationTarget.CLASS) -internal annotation class WatchInVRCompatibility \ No newline at end of file +internal annotation class HidePlayerFlyoutMenuItemsCompatibility diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/patch/HidePlayerFlyoutMenuPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/patch/HidePlayerFlyoutMenuPatch.kt new file mode 100644 index 0000000000..dcc6a5e772 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/patch/HidePlayerFlyoutMenuPatch.kt @@ -0,0 +1,108 @@ +package app.revanced.patches.youtube.layout.hide.player.flyoutmenupanel.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.settings.preference.impl.PreferenceScreen +import app.revanced.patches.shared.settings.preference.impl.StringResource +import app.revanced.patches.shared.settings.preference.impl.SwitchPreference +import app.revanced.patches.youtube.layout.hide.player.flyoutmenupanel.annotations.HidePlayerFlyoutMenuItemsCompatibility +import app.revanced.patches.youtube.misc.litho.filter.patch.LithoFilterPatch +import app.revanced.patches.youtube.misc.settings.bytecode.patch.SettingsPatch + +@Patch +@Name("Player flyout menu") +@Description("Hides player flyout menu items.") +@DependsOn([LithoFilterPatch::class, SettingsPatch::class]) +@HidePlayerFlyoutMenuItemsCompatibility +@Version("0.0.1") +class HidePlayerFlyoutMenuPatch : ResourcePatch { + override fun execute(context: ResourceContext): PatchResult { + SettingsPatch.PreferenceScreen.LAYOUT.addPreferences( + PreferenceScreen( + KEY, + StringResource("${KEY}_title", "Player flyout menu items"), + listOf( + SwitchPreference( + "${KEY}_quality", + StringResource("${KEY}_quality_title", "Hide Quality menu"), + StringResource("${KEY}_quality_on", "Quality menu item is hidden"), + StringResource("${KEY}_quality_off", "Quality menu item is shown") + ), + SwitchPreference( + "${KEY}_captions", + StringResource("${KEY}_captions_title", "Hide Captions menu"), + StringResource("${KEY}_captions_on", "Captions menu item is hidden"), + StringResource("${KEY}_captions_off", "Captions menu item is shown") + ), + SwitchPreference( + "${KEY}_loop_video", + StringResource("${KEY}_loop_video_title", "Hide Loop video menu"), + StringResource("${KEY}_loop_video_on", "Loop video menu item is hidden"), + StringResource("${KEY}_loop_video_off", "Loop video menu item is shown") + ), + SwitchPreference( + "${KEY}_ambient_mode", + StringResource("${KEY}_ambient_mode_title", "Hide Ambient mode menu"), + StringResource("${KEY}_ambient_mode_on", "Ambient mode menu item is hidden"), + StringResource("${KEY}_ambient_mode_off", "Ambient mode menu item is shown") + ), + SwitchPreference( + "${KEY}_report", + StringResource("${KEY}_report_title", "Hide Report menu"), + StringResource("${KEY}_report_on", "Report menu item is hidden"), + StringResource("${KEY}_report_off", "Report menu item is shown") + ), + SwitchPreference( + "${KEY}_help", + StringResource("${KEY}_help_title", "Hide Help menu"), + StringResource("${KEY}_help_on", "Help menu item is hidden"), + StringResource("${KEY}_help_off", "Help menu item is shown") + ), + SwitchPreference( + "${KEY}_speed", + StringResource("${KEY}_speed_title", "Hide Speed menu"), + StringResource("${KEY}_speed_on", "Speed menu item is hidden"), + StringResource("${KEY}_speed_off", "Speed menu item is shown") + ), + SwitchPreference( + "${KEY}_more_info", + StringResource("${KEY}_more_info_title", "Hide More info menu"), + StringResource("${KEY}_more_info_on", "More info menu item is hidden"), + StringResource("${KEY}_more_info_off", "More info menu item is shown") + ), + SwitchPreference( + "${KEY}_audio_track", + StringResource("${KEY}_audio_track_title", "Hide Audio track menu"), + StringResource("${KEY}_audio_track_on", "Audio track menu item is hidden"), + StringResource("${KEY}_audio_track_off", "Audio track menu item is shown") + ), + SwitchPreference( + "${KEY}_watch_in_vr", + StringResource("${KEY}_watch_in_vr_title", "Hide Watch in VR menu"), + StringResource("${KEY}_watch_in_vr_on", "Watch in VR menu item is hidden"), + StringResource("${KEY}_watch_in_vr_off", "Watch in VR menu item is shown") + ), + ), + StringResource("${KEY}_summary", "Manage the visibility of player flyout menu items") + ) + ) + + LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR) + + return PatchResultSuccess() + } + + private companion object { + const val KEY = "revanced_hide_player_flyout" + + const val FILTER_CLASS_DESCRIPTOR = + "Lapp/revanced/integrations/patches/components/PlayerFlyoutMenuItemsFilter;" + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/fingerprints/WatchInVRFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/fingerprints/WatchInVRFingerprint.kt deleted file mode 100644 index daf6190e3a..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/fingerprints/WatchInVRFingerprint.kt +++ /dev/null @@ -1,10 +0,0 @@ -package app.revanced.patches.youtube.layout.hide.watchinvr.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.AccessFlags - -object WatchInVRFingerprint : MethodFingerprint( - "V", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf("Z"), - strings = listOf("menu_item_cardboard_vr") -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/patch/WatchInVRPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/patch/WatchInVRPatch.kt deleted file mode 100644 index 08857d26dc..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/hide/watchinvr/patch/WatchInVRPatch.kt +++ /dev/null @@ -1,53 +0,0 @@ -package app.revanced.patches.youtube.layout.hide.watchinvr.patch - -import app.revanced.patcher.annotation.Description -import app.revanced.patcher.annotation.Name -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -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.settings.preference.impl.StringResource -import app.revanced.patches.shared.settings.preference.impl.SwitchPreference -import app.revanced.patches.youtube.layout.hide.watchinvr.annotations.WatchInVRCompatibility -import app.revanced.patches.youtube.layout.hide.watchinvr.fingerprints.WatchInVRFingerprint -import app.revanced.patches.youtube.misc.integrations.patch.IntegrationsPatch -import app.revanced.patches.youtube.misc.settings.bytecode.patch.SettingsPatch - -@Patch -@DependsOn([IntegrationsPatch::class, SettingsPatch::class]) -@Name("Hide watch in VR") -@Description("Hides the option to watch in VR from the player settings flyout panel.") -@WatchInVRCompatibility -class WatchInVRPatch : BytecodePatch( - listOf( - WatchInVRFingerprint - ) -) { - override fun execute(context: BytecodeContext): PatchResult { - SettingsPatch.PreferenceScreen.LAYOUT.addPreferences( - SwitchPreference( - "revanced_hide_watch_in_vr", - StringResource("revanced_hide_watch_in_vr_title", "Hide VR setting"), - StringResource("revanced_hide_watch_in_vr_summary_on", "VR setting is hidden"), - StringResource("revanced_hide_watch_in_vr_summary_off", "VR setting is shown") - ) - ) - - WatchInVRFingerprint.result!!.mutableMethod.addInstructionsWithLabels( - 0, - """ - invoke-static {}, Lapp/revanced/integrations/patches/HideWatchInVRPatch;->hideWatchInVR()Z - move-result v0 - if-eqz v0, :shown - return-void - :shown - nop - """ - ) - - return PatchResultSuccess() - } -} \ No newline at end of file