refactor(YouTube - Hide feed components): Do not search path or buffer unless Hide mix playlists setting is enabled

This commit is contained in:
inotia00 2024-12-08 15:52:06 +09:00
parent 481b1537e0
commit 9f2276813c

View File

@ -6,6 +6,7 @@ import app.revanced.extension.shared.patches.components.ByteArrayFilterGroup;
import app.revanced.extension.shared.patches.components.Filter; import app.revanced.extension.shared.patches.components.Filter;
import app.revanced.extension.shared.patches.components.StringFilterGroup; import app.revanced.extension.shared.patches.components.StringFilterGroup;
import app.revanced.extension.shared.patches.components.StringFilterGroupList; import app.revanced.extension.shared.patches.components.StringFilterGroupList;
import app.revanced.extension.shared.utils.Logger;
import app.revanced.extension.shared.utils.StringTrieSearch; import app.revanced.extension.shared.utils.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
@ -26,7 +27,7 @@ public final class FeedComponentsFilter extends Filter {
private static final ByteArrayFilterGroup mixPlaylists = private static final ByteArrayFilterGroup mixPlaylists =
new ByteArrayFilterGroup( new ByteArrayFilterGroup(
Settings.HIDE_MIX_PLAYLISTS, null,
"&list=" "&list="
); );
private static final ByteArrayFilterGroup mixPlaylistsBufferExceptions = private static final ByteArrayFilterGroup mixPlaylistsBufferExceptions =
@ -229,11 +230,20 @@ public final class FeedComponentsFilter extends Filter {
* <p> * <p>
* Called from a different place then the other filters. * Called from a different place then the other filters.
*/ */
public static boolean filterMixPlaylists(final Object conversionContext, final byte[] bytes) { public static boolean filterMixPlaylists(final Object conversionContext, @Nullable final byte[] bytes) {
return bytes != null try {
&& mixPlaylists.check(bytes).isFiltered() if (!Settings.HIDE_MIX_PLAYLISTS.get()) {
&& !mixPlaylistsBufferExceptions.check(bytes).isFiltered() return false;
&& !mixPlaylistsContextExceptions.matches(conversionContext.toString()); }
return bytes != null
&& mixPlaylists.check(bytes).isFiltered()
&& !mixPlaylistsBufferExceptions.check(bytes).isFiltered()
&& !mixPlaylistsContextExceptions.matches(conversionContext.toString());
} catch (Exception ex) {
Logger.printException(() -> "filterMixPlaylists failure", ex);
}
return false;
} }
@Override @Override