fix(youtube/hide-layout-components): hide mix playlists

This commit is contained in:
oSumAtrIX 2023-07-08 04:28:12 +02:00
parent e783142741
commit 789e0c8bcb
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
2 changed files with 11 additions and 45 deletions

View File

@ -2,22 +2,21 @@ package app.revanced.integrations.patches.components;
import android.os.Build; import android.os.Build;
import android.view.View;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import app.revanced.integrations.settings.SettingsEnum; import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.ReVancedUtils; import app.revanced.integrations.utils.ReVancedUtils;
@RequiresApi(api = Build.VERSION_CODES.N)
public final class LayoutComponentsFilter extends Filter { public final class LayoutComponentsFilter extends Filter {
private final String[] exceptions; private final String[] exceptions;
private final CustomFilterGroup custom; private final CustomFilterGroup custom;
// region Mix playlists private static final ByteArrayAsStringFilterGroup mixPlaylists = new ByteArrayAsStringFilterGroup(
private final ByteArrayAsStringFilterGroup mixPlaylists; SettingsEnum.HIDE_MIX_PLAYLISTS,
private final ByteArrayAsStringFilterGroup imageHosting; "&list="
);
// endregion
@RequiresApi(api = Build.VERSION_CODES.N) @RequiresApi(api = Build.VERSION_CODES.N)
public LayoutComponentsFilter() { public LayoutComponentsFilter() {
@ -137,21 +136,6 @@ public final class LayoutComponentsFilter extends Filter {
"cell_divider" // layout residue (gray line above the buttoned ad), "cell_divider" // layout residue (gray line above the buttoned ad),
); );
// region Mix playlists
mixPlaylists = new ByteArrayAsStringFilterGroup(
SettingsEnum.HIDE_MIX_PLAYLISTS,
"&list=",
"YouTube Music"
);
imageHosting = new ByteArrayAsStringFilterGroup(
SettingsEnum.HIDE_MIX_PLAYLISTS, // Unused
"ggpht.com"
);
// endregion
this.pathFilterGroups.addAll( this.pathFilterGroups.addAll(
channelBar, channelBar,
communityPosts, communityPosts,
@ -177,18 +161,6 @@ public final class LayoutComponentsFilter extends Filter {
this.identifierFilterGroups.addAll(graySeparator); this.identifierFilterGroups.addAll(graySeparator);
} }
private boolean isMixPlaylistFiltered(final byte[] _protobufBufferArray) {
if (!mixPlaylists.isEnabled()) return false;
// Two checks are required to prevent false positives.
// First check if the current buffer potentially contains a mix playlist.
if (!mixPlaylists.check(_protobufBufferArray).isFiltered()) return false;
// Ensure that the buffer actually contains a mix playlist.
return imageHosting.check(_protobufBufferArray).isFiltered();
}
@Override @Override
public boolean isFiltered(final String path, final String identifier, final byte[] _protobufBufferArray) { public boolean isFiltered(final String path, final String identifier, final byte[] _protobufBufferArray) {
if (custom.isEnabled() && custom.check(path).isFiltered()) if (custom.isEnabled() && custom.check(path).isFiltered())
@ -197,18 +169,12 @@ public final class LayoutComponentsFilter extends Filter {
if (ReVancedUtils.containsAny(path, exceptions)) if (ReVancedUtils.containsAny(path, exceptions))
return false; // Exceptions are not filtered. return false; // Exceptions are not filtered.
if (super.isFiltered(path, identifier, _protobufBufferArray)) return super.isFiltered(path, identifier, _protobufBufferArray);
return true;
return isMixPlaylistFiltered(_protobufBufferArray);
} }
/**
* Hide the view, which shows ads in the homepage. // Called from a different place then the other filters.
* public static boolean filterMixPlaylists(final byte[] bytes) {
* @param view The view, which shows ads. return mixPlaylists.isEnabled() && mixPlaylists.check(bytes).isFiltered();
*/
public static void hideAdAttributionView(View view) {
ReVancedUtils.hideViewBy1dpUnderCondition(SettingsEnum.HIDE_GENERAL_ADS, view);
} }
} }

View File

@ -4,7 +4,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath("com.android.tools.build:gradle:8.0.1") classpath("com.android.tools.build:gradle:7.4.2")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20")
} }
} }