mirror of
https://github.com/revanced/revanced-integrations.git
synced 2025-01-07 10:35:49 +01:00
feat(YouTube - Hide Shorts components): Hide tagged products, hide search suggestions (#615)
This commit is contained in:
parent
79a3a44961
commit
0586fb70e3
@ -17,7 +17,7 @@ import java.util.Objects;
|
|||||||
* All saved JSON text is converted to lowercase to keep the output less obnoxious.
|
* All saved JSON text is converted to lowercase to keep the output less obnoxious.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class EnumSetting<T extends Enum> extends Setting<T> {
|
public class EnumSetting<T extends Enum<?>> extends Setting<T> {
|
||||||
public EnumSetting(String key, T defaultValue) {
|
public EnumSetting(String key, T defaultValue) {
|
||||||
super(key, defaultValue);
|
super(key, defaultValue);
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ public class EnumSetting<T extends Enum> extends Setting<T> {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private T getEnumFromString(String enumName) {
|
private T getEnumFromString(String enumName) {
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
for (Enum value : defaultValue.getClass().getEnumConstants()) {
|
for (Enum<?> value : defaultValue.getClass().getEnumConstants()) {
|
||||||
if (value.name().equalsIgnoreCase(enumName)) {
|
if (value.name().equalsIgnoreCase(enumName)) {
|
||||||
// noinspection unchecked
|
// noinspection unchecked
|
||||||
return (T) value;
|
return (T) value;
|
||||||
|
@ -53,7 +53,7 @@ public class SharedPrefCategory {
|
|||||||
/**
|
/**
|
||||||
* @param value a NULL parameter removes the value from the preferences
|
* @param value a NULL parameter removes the value from the preferences
|
||||||
*/
|
*/
|
||||||
public void saveEnumAsString(@NonNull String key, @Nullable Enum value) {
|
public void saveEnumAsString(@NonNull String key, @Nullable Enum<?> value) {
|
||||||
saveObjectAsString(key, value);
|
saveObjectAsString(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ public class SharedPrefCategory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public <T extends Enum> T getEnum(@NonNull String key, @NonNull T _default) {
|
public <T extends Enum<?>> T getEnum(@NonNull String key, @NonNull T _default) {
|
||||||
Objects.requireNonNull(_default);
|
Objects.requireNonNull(_default);
|
||||||
try {
|
try {
|
||||||
String enumName = preferences.getString(key, null);
|
String enumName = preferences.getString(key, null);
|
||||||
|
@ -22,19 +22,12 @@ public final class ShortsFilter extends Filter {
|
|||||||
private final StringFilterGroup shortsCompactFeedVideoPath;
|
private final StringFilterGroup shortsCompactFeedVideoPath;
|
||||||
private final ByteArrayFilterGroup shortsCompactFeedVideoBuffer;
|
private final ByteArrayFilterGroup shortsCompactFeedVideoBuffer;
|
||||||
|
|
||||||
private final StringFilterGroup channelBar;
|
|
||||||
private final StringFilterGroup fullVideoLinkLabel;
|
|
||||||
private final StringFilterGroup videoTitle;
|
|
||||||
private final StringFilterGroup reelSoundMetadata;
|
|
||||||
private final StringFilterGroup subscribeButton;
|
private final StringFilterGroup subscribeButton;
|
||||||
private final StringFilterGroup subscribeButtonPaused;
|
|
||||||
private final StringFilterGroup soundButton;
|
|
||||||
private final StringFilterGroup infoPanel;
|
|
||||||
private final StringFilterGroup joinButton;
|
private final StringFilterGroup joinButton;
|
||||||
private final StringFilterGroup shelfHeader;
|
private final StringFilterGroup shelfHeader;
|
||||||
|
|
||||||
private final StringFilterGroup suggestedActionPath;
|
private final StringFilterGroup suggestedAction;
|
||||||
private final ByteArrayFilterGroupList suggestedActions = new ByteArrayFilterGroupList();
|
private final ByteArrayFilterGroupList suggestedActionsGroupList = new ByteArrayFilterGroupList();
|
||||||
|
|
||||||
private final StringFilterGroup actionBar;
|
private final StringFilterGroup actionBar;
|
||||||
private final ByteArrayFilterGroupList videoActionButtonGroupList = new ByteArrayFilterGroupList();
|
private final ByteArrayFilterGroupList videoActionButtonGroupList = new ByteArrayFilterGroupList();
|
||||||
@ -44,7 +37,7 @@ public final class ShortsFilter extends Filter {
|
|||||||
// Identifier components.
|
// Identifier components.
|
||||||
//
|
//
|
||||||
|
|
||||||
var shorts = new StringFilterGroup(
|
var shortsIdentifiers = new StringFilterGroup(
|
||||||
null, // Setting is based on navigation state.
|
null, // Setting is based on navigation state.
|
||||||
"shorts_shelf",
|
"shorts_shelf",
|
||||||
"inline_shorts",
|
"inline_shorts",
|
||||||
@ -52,6 +45,7 @@ public final class ShortsFilter extends Filter {
|
|||||||
"shorts_video_cell",
|
"shorts_video_cell",
|
||||||
"shorts_pivot_item"
|
"shorts_pivot_item"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Feed Shorts shelf header.
|
// Feed Shorts shelf header.
|
||||||
// Use a different filter group for this pattern, as it requires an additional check after matching.
|
// Use a different filter group for this pattern, as it requires an additional check after matching.
|
||||||
shelfHeader = new StringFilterGroup(
|
shelfHeader = new StringFilterGroup(
|
||||||
@ -59,14 +53,7 @@ public final class ShortsFilter extends Filter {
|
|||||||
"shelf_header.eml"
|
"shelf_header.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Home / subscription feed components.
|
addIdentifierCallbacks(shortsIdentifiers, shelfHeader);
|
||||||
|
|
||||||
var thanksButton = new StringFilterGroup( // Edit: Does this item show up anymore?
|
|
||||||
Settings.HIDE_SHORTS_THANKS_BUTTON,
|
|
||||||
"suggested_action"
|
|
||||||
);
|
|
||||||
|
|
||||||
addIdentifierCallbacks(shorts, shelfHeader, thanksButton);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Path components.
|
// Path components.
|
||||||
@ -80,6 +67,41 @@ public final class ShortsFilter extends Filter {
|
|||||||
shortsCompactFeedVideoBuffer = new ByteArrayFilterGroup(null, "/frame0.jpg");
|
shortsCompactFeedVideoBuffer = new ByteArrayFilterGroup(null, "/frame0.jpg");
|
||||||
|
|
||||||
// Shorts player components.
|
// Shorts player components.
|
||||||
|
StringFilterGroup pausedOverlayButtons = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_PAUSED_OVERLAY_BUTTONS,
|
||||||
|
"shorts_paused_state"
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup channelBar = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_CHANNEL_BAR,
|
||||||
|
REEL_CHANNEL_BAR_PATH
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup fullVideoLinkLabel = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_FULL_VIDEO_LINK_LABEL,
|
||||||
|
"reel_multi_format_link"
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup videoTitle = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_VIDEO_TITLE,
|
||||||
|
"shorts_video_title_item"
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup reelSoundMetadata = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_SOUND_METADATA_LABEL,
|
||||||
|
"reel_sound_metadata"
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup soundButton = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_SOUND_BUTTON,
|
||||||
|
"reel_pivot_button"
|
||||||
|
);
|
||||||
|
|
||||||
|
StringFilterGroup infoPanel = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_INFO_PANEL,
|
||||||
|
"shorts_info_panel_overview"
|
||||||
|
);
|
||||||
|
|
||||||
joinButton = new StringFilterGroup(
|
joinButton = new StringFilterGroup(
|
||||||
Settings.HIDE_SHORTS_JOIN_BUTTON,
|
Settings.HIDE_SHORTS_JOIN_BUTTON,
|
||||||
"sponsor_button"
|
"sponsor_button"
|
||||||
@ -90,109 +112,77 @@ public final class ShortsFilter extends Filter {
|
|||||||
"subscribe_button"
|
"subscribe_button"
|
||||||
);
|
);
|
||||||
|
|
||||||
subscribeButtonPaused = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_SUBSCRIBE_BUTTON_PAUSED,
|
|
||||||
"shorts_paused_state"
|
|
||||||
);
|
|
||||||
|
|
||||||
channelBar = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_CHANNEL_BAR,
|
|
||||||
REEL_CHANNEL_BAR_PATH
|
|
||||||
);
|
|
||||||
|
|
||||||
fullVideoLinkLabel = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_FULL_VIDEO_LINK_LABEL,
|
|
||||||
"reel_multi_format_link"
|
|
||||||
);
|
|
||||||
|
|
||||||
videoTitle = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_VIDEO_TITLE,
|
|
||||||
"shorts_video_title_item"
|
|
||||||
);
|
|
||||||
|
|
||||||
reelSoundMetadata = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_SOUND_METADATA_LABEL,
|
|
||||||
"reel_sound_metadata"
|
|
||||||
);
|
|
||||||
|
|
||||||
soundButton = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_SOUND_BUTTON,
|
|
||||||
"reel_pivot_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
infoPanel = new StringFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_INFO_PANEL,
|
|
||||||
"shorts_info_panel_overview"
|
|
||||||
);
|
|
||||||
|
|
||||||
actionBar = new StringFilterGroup(
|
actionBar = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
"shorts_action_bar"
|
"shorts_action_bar"
|
||||||
);
|
);
|
||||||
|
|
||||||
suggestedActionPath = new StringFilterGroup(
|
suggestedAction = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
"suggested_action.eml"
|
"suggested_action.eml"
|
||||||
);
|
);
|
||||||
|
|
||||||
addPathCallbacks(
|
addPathCallbacks(
|
||||||
shortsCompactFeedVideoPath,
|
shortsCompactFeedVideoPath, suggestedAction, actionBar, joinButton, subscribeButton,
|
||||||
joinButton, subscribeButton, subscribeButtonPaused, suggestedActionPath,
|
pausedOverlayButtons, channelBar, fullVideoLinkLabel, videoTitle, reelSoundMetadata,
|
||||||
channelBar, fullVideoLinkLabel, videoTitle, reelSoundMetadata,
|
soundButton, infoPanel
|
||||||
soundButton, infoPanel, actionBar
|
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Action buttons
|
// Action buttons
|
||||||
//
|
//
|
||||||
var shortsLikeButton = new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_LIKE_BUTTON,
|
|
||||||
"shorts_like_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
var shortsDislikeButton = new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
|
|
||||||
"shorts_dislike_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
var shortsCommentButton = new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_COMMENTS_BUTTON,
|
|
||||||
"reel_comment_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
var shortsShareButton = new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_SHARE_BUTTON,
|
|
||||||
"reel_share_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
var shortsRemixButton = new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SHORTS_REMIX_BUTTON,
|
|
||||||
"reel_remix_button"
|
|
||||||
);
|
|
||||||
|
|
||||||
videoActionButtonGroupList.addAll(
|
videoActionButtonGroupList.addAll(
|
||||||
shortsLikeButton,
|
// This also appears as the path item 'shorts_like_button.eml'
|
||||||
shortsDislikeButton,
|
new ByteArrayFilterGroup(
|
||||||
shortsCommentButton,
|
Settings.HIDE_SHORTS_LIKE_BUTTON,
|
||||||
shortsShareButton,
|
"reel_like_button",
|
||||||
shortsRemixButton
|
"reel_like_toggled_button"
|
||||||
|
),
|
||||||
|
// This also appears as the path item 'shorts_dislike_button.eml'
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_DISLIKE_BUTTON,
|
||||||
|
"reel_dislike_button",
|
||||||
|
"reel_dislike_toggled_button"
|
||||||
|
),
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_COMMENTS_BUTTON,
|
||||||
|
"reel_comment_button"
|
||||||
|
),
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_SHARE_BUTTON,
|
||||||
|
"reel_share_button"
|
||||||
|
),
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_REMIX_BUTTON,
|
||||||
|
"reel_remix_button"
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Suggested actions.
|
// Suggested actions.
|
||||||
//
|
//
|
||||||
suggestedActions.addAll(
|
suggestedActionsGroupList.addAll(
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_SHOP_BUTTON,
|
Settings.HIDE_SHORTS_SHOP_BUTTON,
|
||||||
"yt_outline_bag_"
|
"yt_outline_bag_"
|
||||||
),
|
),
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_LOCATION_BUTTON,
|
Settings.HIDE_SHORTS_TAGGED_PRODUCTS,
|
||||||
|
// Product buttons show pictures of the products, and does not have any unique icons to identify.
|
||||||
|
// Instead use a unique identifier found in the buffer.
|
||||||
|
"PAproduct_listZ"
|
||||||
|
),
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_LOCATION_LABEL,
|
||||||
"yt_outline_location_point_"
|
"yt_outline_location_point_"
|
||||||
),
|
),
|
||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_SHORTS_SAVE_SOUND_BUTTON,
|
Settings.HIDE_SHORTS_SAVE_SOUND_BUTTON,
|
||||||
"yt_outline_list_add_"
|
"yt_outline_list_add_"
|
||||||
|
),
|
||||||
|
new ByteArrayFilterGroup(
|
||||||
|
Settings.HIDE_SHORTS_SEARCH_SUGGESTIONS,
|
||||||
|
"yt_outline_search_"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -201,15 +191,15 @@ public final class ShortsFilter extends Filter {
|
|||||||
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
|
||||||
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
|
||||||
if (contentType == FilterContentType.PATH) {
|
if (contentType == FilterContentType.PATH) {
|
||||||
// Always filter if matched.
|
if (matchedGroup == subscribeButton || matchedGroup == joinButton) {
|
||||||
if (matchedGroup == soundButton ||
|
// Filter only when reelChannelBar is visible to avoid false positives.
|
||||||
matchedGroup == infoPanel ||
|
if (path.startsWith(REEL_CHANNEL_BAR_PATH)) {
|
||||||
matchedGroup == channelBar ||
|
return super.isFiltered(
|
||||||
matchedGroup == fullVideoLinkLabel ||
|
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
||||||
matchedGroup == videoTitle ||
|
);
|
||||||
matchedGroup == reelSoundMetadata ||
|
}
|
||||||
matchedGroup == subscribeButtonPaused
|
return false;
|
||||||
) return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
}
|
||||||
|
|
||||||
if (matchedGroup == shortsCompactFeedVideoPath) {
|
if (matchedGroup == shortsCompactFeedVideoPath) {
|
||||||
if (shouldHideShortsFeedItems() && contentIndex == 0
|
if (shouldHideShortsFeedItems() && contentIndex == 0
|
||||||
@ -219,32 +209,27 @@ public final class ShortsFilter extends Filter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchedGroup == subscribeButton || matchedGroup == joinButton) {
|
|
||||||
// Filter only when reelChannelBar is visible to avoid false positives.
|
|
||||||
if (path.startsWith(REEL_CHANNEL_BAR_PATH)) return super.isFiltered(
|
|
||||||
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Video action buttons (like, dislike, comment, share, remix) have the same path.
|
// Video action buttons (like, dislike, comment, share, remix) have the same path.
|
||||||
if (matchedGroup == actionBar) {
|
if (matchedGroup == actionBar) {
|
||||||
if (videoActionButtonGroupList.check(protobufBufferArray).isFiltered()) return super.isFiltered(
|
if (videoActionButtonGroupList.check(protobufBufferArray).isFiltered()) {
|
||||||
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
return super.isFiltered(
|
||||||
);
|
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
||||||
|
);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchedGroup == suggestedActionPath) {
|
if (matchedGroup == suggestedAction) {
|
||||||
if (contentIndex == 0 && suggestedActions.check(protobufBufferArray).isFiltered()) return super.isFiltered(
|
if (contentIndex == 0 && suggestedActionsGroupList.check(protobufBufferArray).isFiltered()) {
|
||||||
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
return super.isFiltered(
|
||||||
);
|
identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex
|
||||||
// else, return false;
|
);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
} else {
|
} else {
|
||||||
// Feed/search path components.
|
// Feed/search identifier components.
|
||||||
if (matchedGroup == shelfHeader) {
|
if (matchedGroup == shelfHeader) {
|
||||||
// Because the header is used in watch history and possibly other places, check for the index,
|
// Because the header is used in watch history and possibly other places, check for the index,
|
||||||
// which is 0 when the shelf header is used for Shorts.
|
// which is 0 when the shelf header is used for Shorts.
|
||||||
|
@ -159,11 +159,12 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_JOIN_BUTTON = new BooleanSetting("revanced_hide_shorts_join_button", TRUE);
|
public static final BooleanSetting HIDE_SHORTS_JOIN_BUTTON = new BooleanSetting("revanced_hide_shorts_join_button", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SUBSCRIBE_BUTTON = new BooleanSetting("revanced_hide_shorts_subscribe_button", TRUE);
|
public static final BooleanSetting HIDE_SHORTS_SUBSCRIBE_BUTTON = new BooleanSetting("revanced_hide_shorts_subscribe_button", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SUBSCRIBE_BUTTON_PAUSED = new BooleanSetting("revanced_hide_shorts_subscribe_button_paused", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_PAUSED_OVERLAY_BUTTONS = new BooleanSetting("revanced_hide_shorts_paused_overlay_buttons", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_shorts_thanks_button", TRUE);
|
|
||||||
public static final BooleanSetting HIDE_SHORTS_SHOP_BUTTON = new BooleanSetting("revanced_hide_shorts_shop_button", TRUE);
|
public static final BooleanSetting HIDE_SHORTS_SHOP_BUTTON = new BooleanSetting("revanced_hide_shorts_shop_button", TRUE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_LOCATION_BUTTON = new BooleanSetting("revanced_hide_shorts_location_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_TAGGED_PRODUCTS = new BooleanSetting("revanced_hide_shorts_tagged_products", TRUE);
|
||||||
|
public static final BooleanSetting HIDE_SHORTS_LOCATION_LABEL = new BooleanSetting("revanced_hide_shorts_location_label", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_SAVE_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_save_sound_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_SAVE_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_save_sound_button", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_LIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_like_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_LIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_like_button", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
||||||
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
|
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
|
||||||
|
Loading…
Reference in New Issue
Block a user