From c048527dc0bc6b1b3de9c451ca909aab7ad93d0f Mon Sep 17 00:00:00 2001 From: nullptr <107796137+johnconner122@users.noreply.github.com> Date: Fri, 3 Nov 2023 23:27:23 +0500 Subject: [PATCH] fix(YouTube - Player flyout menu): Restore functionality (#502) --- .../PlayerFlyoutMenuItemsFilter.java | 28 +++++++++++++++---- .../integrations/settings/SettingsEnum.java | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/components/PlayerFlyoutMenuItemsFilter.java b/app/src/main/java/app/revanced/integrations/patches/components/PlayerFlyoutMenuItemsFilter.java index c394f84f..4e700028 100644 --- a/app/src/main/java/app/revanced/integrations/patches/components/PlayerFlyoutMenuItemsFilter.java +++ b/app/src/main/java/app/revanced/integrations/patches/components/PlayerFlyoutMenuItemsFilter.java @@ -6,26 +6,38 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import app.revanced.integrations.settings.SettingsEnum; +import app.revanced.integrations.shared.PlayerType; public class PlayerFlyoutMenuItemsFilter extends Filter { - // Search the buffer only if the flyout menu identifier is found. + // Search the buffer only if the flyout menu path is found. // Handle the searching in this class instead of adding to the global filter group (which searches all the time) private final ByteArrayFilterGroupList flyoutFilterGroupList = new ByteArrayFilterGroupList(); + private final ByteArrayFilterGroup exception; + @RequiresApi(api = Build.VERSION_CODES.N) public PlayerFlyoutMenuItemsFilter() { - identifierFilterGroupList.addAll(new StringFilterGroup(null, "overflow_menu_item.eml|")); + exception = new ByteArrayAsStringFilterGroup( + // Whitelist Quality menu item when "Hide Additional settings menu" is enabled + SettingsEnum.HIDE_ADDITIONAL_SETTINGS_MENU, + "quality_sheet" + ); + + // Using pathFilterGroupList due to new flyout panel(A/B) + pathFilterGroupList.addAll( + new StringFilterGroup(null, "overflow_menu_item.eml|") + ); flyoutFilterGroupList.addAll( - new ByteArrayAsStringFilterGroup( - SettingsEnum.HIDE_QUALITY_MENU, - "yt_outline_gear" - ), new ByteArrayAsStringFilterGroup( SettingsEnum.HIDE_CAPTIONS_MENU, "closed_caption" ), + new ByteArrayAsStringFilterGroup( + SettingsEnum.HIDE_ADDITIONAL_SETTINGS_MENU, + "yt_outline_gear" + ), new ByteArrayAsStringFilterGroup( SettingsEnum.HIDE_LOOP_VIDEO_MENU, "yt_outline_arrow_repeat_1_" @@ -64,6 +76,10 @@ public class PlayerFlyoutMenuItemsFilter extends Filter { @Override boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray, FilterGroupList matchedList, FilterGroup matchedGroup, int matchedIndex) { + // Shorts also use this player flyout panel + if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(protobufBufferArray).isFiltered()) + return false; + // Only 1 group is added to the parent class, so the matched group must be the overflow menu. if (matchedIndex == 0 && flyoutFilterGroupList.check(protobufBufferArray).isFiltered()) { // Super class handles logging. diff --git a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java index 9bb2d1b3..e6fda854 100644 --- a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java @@ -155,8 +155,8 @@ public enum SettingsEnum { ALT_THUMBNAIL_FAST_QUALITY("revanced_alt_thumbnail_fast_quality", BOOLEAN, FALSE, parents(ALT_THUMBNAIL)), //Player flyout menu items - HIDE_QUALITY_MENU("revanced_hide_player_flyout_quality", BOOLEAN, FALSE), HIDE_CAPTIONS_MENU("revanced_hide_player_flyout_captions", BOOLEAN, FALSE), + HIDE_ADDITIONAL_SETTINGS_MENU("revanced_hide_player_flyout_additional_settings", BOOLEAN, FALSE), HIDE_LOOP_VIDEO_MENU("revanced_hide_player_flyout_loop_video", BOOLEAN, FALSE), HIDE_AMBIENT_MODE_MENU("revanced_hide_player_flyout_ambient_mode", BOOLEAN, FALSE), HIDE_REPORT_MENU("revanced_hide_player_flyout_report", BOOLEAN, TRUE),