mirror of
https://github.com/revanced/revanced-integrations.git
synced 2025-05-04 00:24:34 +02:00
refactor(youtube/litho-filter): move classes to their respective file
This commit is contained in:
parent
c0c778b3e6
commit
b8f0e632c1
@ -0,0 +1,60 @@
|
|||||||
|
package app.revanced.integrations.patches;
|
||||||
|
|
||||||
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
|
||||||
|
final class ButtonsPatch extends Filter {
|
||||||
|
private final BlockRule actionButtonsRule;
|
||||||
|
private final BlockRule dislikeRule;
|
||||||
|
private final BlockRule actionBarRule;
|
||||||
|
|
||||||
|
private final BlockRule[] rules;
|
||||||
|
|
||||||
|
public ButtonsPatch() {
|
||||||
|
BlockRule like = new BlockRule(SettingsEnum.HIDE_LIKE_BUTTON, "|like_button");
|
||||||
|
dislikeRule = new BlockRule(SettingsEnum.HIDE_DISLIKE_BUTTON, "dislike_button");
|
||||||
|
BlockRule download = new BlockRule(SettingsEnum.HIDE_DOWNLOAD_BUTTON, "download_button");
|
||||||
|
actionButtonsRule = new BlockRule(SettingsEnum.HIDE_ACTION_BUTTON, "ContainerType|video_action_button");
|
||||||
|
BlockRule playlist = new BlockRule(SettingsEnum.HIDE_PLAYLIST_BUTTON, "save_to_playlist_button");
|
||||||
|
rules = new BlockRule[]{like, dislikeRule, download, actionButtonsRule, playlist};
|
||||||
|
|
||||||
|
actionBarRule = new BlockRule(null, "video_action_bar");
|
||||||
|
|
||||||
|
this.pathRegister.registerAll(
|
||||||
|
like,
|
||||||
|
dislikeRule,
|
||||||
|
download,
|
||||||
|
playlist
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean hideActionBar() {
|
||||||
|
for (BlockRule rule : rules) if (!rule.isEnabled()) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean filter(final String path, final String identifier) {
|
||||||
|
if (hideActionBar() && actionBarRule.check(identifier).isBlocked()) return true;
|
||||||
|
|
||||||
|
var currentIsActionButton = actionButtonsRule.check(path).isBlocked();
|
||||||
|
|
||||||
|
if (dislikeRule.check(path).isBlocked()) ActionButton.doNotBlockCounter = 4;
|
||||||
|
|
||||||
|
if (currentIsActionButton && ActionButton.doNotBlockCounter-- > 0) {
|
||||||
|
if (SettingsEnum.HIDE_SHARE_BUTTON.getBoolean()) {
|
||||||
|
LogHelper.debug(ButtonsPatch.class, "Hiding share button");
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((currentIsActionButton && ActionButton.doNotBlockCounter <= 0 && actionButtonsRule.isEnabled()) || pathRegister.contains(path)) {
|
||||||
|
LogHelper.debug(ButtonsPatch.class, "Blocked: " + path);
|
||||||
|
return true;
|
||||||
|
} else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class ActionButton {
|
||||||
|
public static int doNotBlockCounter = 4;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package app.revanced.integrations.patches;
|
||||||
|
|
||||||
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
|
||||||
|
final class CommentsPatch extends Filter {
|
||||||
|
|
||||||
|
public CommentsPatch() {
|
||||||
|
var comments = new BlockRule(SettingsEnum.HIDE_COMMENTS_SECTION, "video_metadata_carousel", "_comments");
|
||||||
|
var previewComment = new BlockRule(
|
||||||
|
SettingsEnum.HIDE_PREVIEW_COMMENT,
|
||||||
|
"carousel_item",
|
||||||
|
"comments_entry_point_teaser",
|
||||||
|
"comments_entry_point_simplebox"
|
||||||
|
);
|
||||||
|
|
||||||
|
this.pathRegister.registerAll(
|
||||||
|
comments,
|
||||||
|
previewComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean filter(String path, String _identifier) {
|
||||||
|
if (!pathRegister.contains(path)) return false;
|
||||||
|
|
||||||
|
LogHelper.debug(CommentsPatch.class, "Blocked: " + path);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,139 @@
|
|||||||
|
package app.revanced.integrations.patches;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import app.revanced.integrations.adremover.AdRemoverAPI;
|
||||||
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
import app.revanced.integrations.utils.ReVancedUtils;
|
||||||
|
|
||||||
|
public final class GeneralAdsPatch extends Filter {
|
||||||
|
private final String[] IGNORE = {
|
||||||
|
"home_video_with_context",
|
||||||
|
"related_video_with_context",
|
||||||
|
"comment_thread", // skip blocking anything in the comments
|
||||||
|
"download_",
|
||||||
|
"library_recent_shelf",
|
||||||
|
"menu",
|
||||||
|
"root",
|
||||||
|
"-count",
|
||||||
|
"-space",
|
||||||
|
"-button",
|
||||||
|
"playlist_add_to_option_wrapper" // do not block on "add to playlist" flyout menu
|
||||||
|
};
|
||||||
|
|
||||||
|
private final BlockRule custom = new CustomBlockRule(
|
||||||
|
SettingsEnum.ADREMOVER_CUSTOM_ENABLED,
|
||||||
|
SettingsEnum.ADREMOVER_CUSTOM_REMOVAL
|
||||||
|
);
|
||||||
|
|
||||||
|
public GeneralAdsPatch() {
|
||||||
|
var communityPosts = new BlockRule(SettingsEnum.ADREMOVER_COMMUNITY_POSTS_REMOVAL, "post_base_wrapper");
|
||||||
|
var communityGuidelines = new BlockRule(SettingsEnum.ADREMOVER_COMMUNITY_GUIDELINES_REMOVAL, "community_guidelines");
|
||||||
|
var compactBanner = new BlockRule(SettingsEnum.ADREMOVER_COMPACT_BANNER_REMOVAL, "compact_banner");
|
||||||
|
var inFeedSurvey = new BlockRule(SettingsEnum.ADREMOVER_FEED_SURVEY_REMOVAL, "in_feed_survey");
|
||||||
|
var medicalPanel = new BlockRule(SettingsEnum.ADREMOVER_MEDICAL_PANEL_REMOVAL, "medical_panel");
|
||||||
|
var paidContent = new BlockRule(SettingsEnum.ADREMOVER_PAID_CONTENT_REMOVAL, "paid_content_overlay");
|
||||||
|
var merchandise = new BlockRule(SettingsEnum.ADREMOVER_MERCHANDISE_REMOVAL, "product_carousel");
|
||||||
|
var infoPanel = new BlockRule(SettingsEnum.ADREMOVER_INFO_PANEL_REMOVAL, "publisher_transparency_panel", "single_item_information_panel");
|
||||||
|
var suggestions = new BlockRule(SettingsEnum.ADREMOVER_SUGGESTIONS_REMOVAL, "horizontal_video_shelf");
|
||||||
|
var latestPosts = new BlockRule(SettingsEnum.ADREMOVER_HIDE_LATEST_POSTS, "post_shelf");
|
||||||
|
var channelGuidelines = new BlockRule(SettingsEnum.ADREMOVER_HIDE_CHANNEL_GUIDELINES, "channel_guidelines_entry_banner");
|
||||||
|
var artistCard = new BlockRule(SettingsEnum.HIDE_ARTIST_CARD, "official_card");
|
||||||
|
var selfSponsor = new BlockRule(SettingsEnum.ADREMOVER_SELF_SPONSOR_REMOVAL, "cta_shelf_card");
|
||||||
|
var chapterTeaser = new BlockRule(SettingsEnum.ADREMOVER_CHAPTER_TEASER_REMOVAL, "expandable_metadata");
|
||||||
|
var graySeparator = new BlockRule(SettingsEnum.ADREMOVER_GRAY_SEPARATOR,
|
||||||
|
"cell_divider" // layout residue (gray line above the buttoned ad),
|
||||||
|
);
|
||||||
|
var buttonedAd = new BlockRule(SettingsEnum.ADREMOVER_BUTTONED_REMOVAL,
|
||||||
|
"video_display_full_buttoned_layout",
|
||||||
|
"full_width_square_image_layout",
|
||||||
|
"_ad_with",
|
||||||
|
"landscape_image_wide_button_layout" // add with "open outside button"
|
||||||
|
);
|
||||||
|
var generalAds = new BlockRule(
|
||||||
|
SettingsEnum.ADREMOVER_GENERAL_ADS_REMOVAL,
|
||||||
|
"ads_video_with_context",
|
||||||
|
"banner_text_icon",
|
||||||
|
"watch_metadata_app_promo",
|
||||||
|
"video_display_full_layout"
|
||||||
|
);
|
||||||
|
var movieAds = new BlockRule(
|
||||||
|
SettingsEnum.ADREMOVER_MOVIE_REMOVAL,
|
||||||
|
"browsy_bar",
|
||||||
|
"compact_movie",
|
||||||
|
"horizontal_movie_shelf",
|
||||||
|
"movie_and_show_upsell_card"
|
||||||
|
);
|
||||||
|
|
||||||
|
this.pathRegister.registerAll(
|
||||||
|
generalAds,
|
||||||
|
buttonedAd,
|
||||||
|
communityPosts,
|
||||||
|
paidContent,
|
||||||
|
suggestions,
|
||||||
|
latestPosts,
|
||||||
|
movieAds,
|
||||||
|
chapterTeaser,
|
||||||
|
communityGuidelines,
|
||||||
|
compactBanner,
|
||||||
|
inFeedSurvey,
|
||||||
|
medicalPanel,
|
||||||
|
merchandise,
|
||||||
|
infoPanel,
|
||||||
|
channelGuidelines,
|
||||||
|
artistCard,
|
||||||
|
selfSponsor
|
||||||
|
);
|
||||||
|
|
||||||
|
var carouselAd = new BlockRule(SettingsEnum.ADREMOVER_GENERAL_ADS_REMOVAL,
|
||||||
|
"carousel_ad"
|
||||||
|
);
|
||||||
|
var shorts = new BlockRule(SettingsEnum.ADREMOVER_SHORTS_REMOVAL,
|
||||||
|
"reels_player_overlay",
|
||||||
|
"shorts_shelf",
|
||||||
|
"inline_shorts"
|
||||||
|
);
|
||||||
|
|
||||||
|
this.identifierRegister.registerAll(
|
||||||
|
shorts,
|
||||||
|
graySeparator,
|
||||||
|
carouselAd
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean filter(final String path, final String identifier) {
|
||||||
|
BlockResult result;
|
||||||
|
|
||||||
|
if (custom.isEnabled() && custom.check(path).isBlocked())
|
||||||
|
result = BlockResult.CUSTOM;
|
||||||
|
else if (ReVancedUtils.containsAny(path, IGNORE))
|
||||||
|
result = BlockResult.IGNORED;
|
||||||
|
else if (pathRegister.contains(path) || identifierRegister.contains(identifier))
|
||||||
|
result = BlockResult.DEFINED;
|
||||||
|
else
|
||||||
|
result = BlockResult.UNBLOCKED;
|
||||||
|
|
||||||
|
LogHelper.debug(
|
||||||
|
GeneralAdsPatch.class,
|
||||||
|
String.format("%s (ID: %s): %s", result.message, identifier, path)
|
||||||
|
);
|
||||||
|
|
||||||
|
return result.filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum BlockResult {
|
||||||
|
UNBLOCKED(false, "Unblocked"),
|
||||||
|
IGNORED(false, "Ignored"),
|
||||||
|
DEFINED(true, "Blocked"),
|
||||||
|
CUSTOM(true, "Custom");
|
||||||
|
|
||||||
|
final Boolean filter;
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
BlockResult(boolean filter, String message) {
|
||||||
|
this.filter = filter;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -138,215 +138,3 @@ public final class LithoFilterPatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final class CommentsPatch extends Filter {
|
|
||||||
|
|
||||||
public CommentsPatch() {
|
|
||||||
var comments = new BlockRule(SettingsEnum.HIDE_COMMENTS_SECTION, "video_metadata_carousel", "_comments");
|
|
||||||
var previewComment = new BlockRule(
|
|
||||||
SettingsEnum.HIDE_PREVIEW_COMMENT,
|
|
||||||
"carousel_item",
|
|
||||||
"comments_entry_point_teaser",
|
|
||||||
"comments_entry_point_simplebox"
|
|
||||||
);
|
|
||||||
|
|
||||||
this.pathRegister.registerAll(
|
|
||||||
comments,
|
|
||||||
previewComment
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
boolean filter(String path, String _identifier) {
|
|
||||||
if (!pathRegister.contains(path)) return false;
|
|
||||||
|
|
||||||
LogHelper.debug(CommentsPatch.class, "Blocked: " + path);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final class ButtonsPatch extends Filter {
|
|
||||||
private final BlockRule actionButtonsRule;
|
|
||||||
private final BlockRule dislikeRule;
|
|
||||||
private final BlockRule actionBarRule;
|
|
||||||
|
|
||||||
private final BlockRule[] rules;
|
|
||||||
|
|
||||||
public ButtonsPatch() {
|
|
||||||
BlockRule like = new BlockRule(SettingsEnum.HIDE_LIKE_BUTTON, "|like_button");
|
|
||||||
dislikeRule = new BlockRule(SettingsEnum.HIDE_DISLIKE_BUTTON, "dislike_button");
|
|
||||||
BlockRule download = new BlockRule(SettingsEnum.HIDE_DOWNLOAD_BUTTON, "download_button");
|
|
||||||
actionButtonsRule = new BlockRule(SettingsEnum.HIDE_ACTION_BUTTON, "ContainerType|video_action_button");
|
|
||||||
BlockRule playlist = new BlockRule(SettingsEnum.HIDE_PLAYLIST_BUTTON, "save_to_playlist_button");
|
|
||||||
rules = new BlockRule[]{like, dislikeRule, download, actionButtonsRule, playlist};
|
|
||||||
|
|
||||||
actionBarRule = new BlockRule(null, "video_action_bar");
|
|
||||||
|
|
||||||
this.pathRegister.registerAll(
|
|
||||||
like,
|
|
||||||
dislikeRule,
|
|
||||||
download,
|
|
||||||
playlist
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hideActionBar() {
|
|
||||||
for (BlockRule rule : rules) if (!rule.isEnabled()) return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean filter(final String path, final String identifier) {
|
|
||||||
if (hideActionBar() && actionBarRule.check(identifier).isBlocked()) return true;
|
|
||||||
|
|
||||||
var currentIsActionButton = actionButtonsRule.check(path).isBlocked();
|
|
||||||
|
|
||||||
if (dislikeRule.check(path).isBlocked()) ActionButton.doNotBlockCounter = 4;
|
|
||||||
|
|
||||||
if (currentIsActionButton && ActionButton.doNotBlockCounter-- > 0) {
|
|
||||||
if (SettingsEnum.HIDE_SHARE_BUTTON.getBoolean()) {
|
|
||||||
LogHelper.debug(ButtonsPatch.class, "Hiding share button");
|
|
||||||
return true;
|
|
||||||
} else return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((currentIsActionButton && ActionButton.doNotBlockCounter <= 0 && actionButtonsRule.isEnabled()) || pathRegister.contains(path)) {
|
|
||||||
LogHelper.debug(ButtonsPatch.class, "Blocked: " + path);
|
|
||||||
return true;
|
|
||||||
} else return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static class ActionButton {
|
|
||||||
public static int doNotBlockCounter = 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final class GeneralAdsPatch extends Filter {
|
|
||||||
private final String[] IGNORE = {
|
|
||||||
"home_video_with_context",
|
|
||||||
"related_video_with_context",
|
|
||||||
"comment_thread", // skip blocking anything in the comments
|
|
||||||
"download_",
|
|
||||||
"library_recent_shelf",
|
|
||||||
"menu",
|
|
||||||
"root",
|
|
||||||
"-count",
|
|
||||||
"-space",
|
|
||||||
"-button",
|
|
||||||
"playlist_add_to_option_wrapper" // do not block on "add to playlist" flyout menu
|
|
||||||
};
|
|
||||||
|
|
||||||
private final BlockRule custom = new CustomBlockRule(
|
|
||||||
SettingsEnum.ADREMOVER_CUSTOM_ENABLED,
|
|
||||||
SettingsEnum.ADREMOVER_CUSTOM_REMOVAL
|
|
||||||
);
|
|
||||||
|
|
||||||
public GeneralAdsPatch() {
|
|
||||||
var communityPosts = new BlockRule(SettingsEnum.ADREMOVER_COMMUNITY_POSTS_REMOVAL, "post_base_wrapper");
|
|
||||||
var communityGuidelines = new BlockRule(SettingsEnum.ADREMOVER_COMMUNITY_GUIDELINES_REMOVAL, "community_guidelines");
|
|
||||||
var compactBanner = new BlockRule(SettingsEnum.ADREMOVER_COMPACT_BANNER_REMOVAL, "compact_banner");
|
|
||||||
var inFeedSurvey = new BlockRule(SettingsEnum.ADREMOVER_FEED_SURVEY_REMOVAL, "in_feed_survey");
|
|
||||||
var medicalPanel = new BlockRule(SettingsEnum.ADREMOVER_MEDICAL_PANEL_REMOVAL, "medical_panel");
|
|
||||||
var paidContent = new BlockRule(SettingsEnum.ADREMOVER_PAID_CONTENT_REMOVAL, "paid_content_overlay");
|
|
||||||
var merchandise = new BlockRule(SettingsEnum.ADREMOVER_MERCHANDISE_REMOVAL, "product_carousel");
|
|
||||||
var infoPanel = new BlockRule(SettingsEnum.ADREMOVER_INFO_PANEL_REMOVAL, "publisher_transparency_panel", "single_item_information_panel");
|
|
||||||
var suggestions = new BlockRule(SettingsEnum.ADREMOVER_SUGGESTIONS_REMOVAL, "horizontal_video_shelf");
|
|
||||||
var latestPosts = new BlockRule(SettingsEnum.ADREMOVER_HIDE_LATEST_POSTS, "post_shelf");
|
|
||||||
var channelGuidelines = new BlockRule(SettingsEnum.ADREMOVER_HIDE_CHANNEL_GUIDELINES, "channel_guidelines_entry_banner");
|
|
||||||
var artistCard = new BlockRule(SettingsEnum.HIDE_ARTIST_CARD, "official_card");
|
|
||||||
var selfSponsor = new BlockRule(SettingsEnum.ADREMOVER_SELF_SPONSOR_REMOVAL, "cta_shelf_card");
|
|
||||||
var chapterTeaser = new BlockRule(SettingsEnum.ADREMOVER_CHAPTER_TEASER_REMOVAL, "expandable_metadata");
|
|
||||||
var graySeparator = new BlockRule(SettingsEnum.ADREMOVER_GRAY_SEPARATOR,
|
|
||||||
"cell_divider" // layout residue (gray line above the buttoned ad),
|
|
||||||
);
|
|
||||||
var buttonedAd = new BlockRule(SettingsEnum.ADREMOVER_BUTTONED_REMOVAL,
|
|
||||||
"video_display_full_buttoned_layout",
|
|
||||||
"full_width_square_image_layout",
|
|
||||||
"_ad_with"
|
|
||||||
);
|
|
||||||
var generalAds = new BlockRule(
|
|
||||||
SettingsEnum.ADREMOVER_GENERAL_ADS_REMOVAL,
|
|
||||||
"ads_video_with_context",
|
|
||||||
"banner_text_icon",
|
|
||||||
"watch_metadata_app_promo",
|
|
||||||
"video_display_full_layout"
|
|
||||||
);
|
|
||||||
var movieAds = new BlockRule(
|
|
||||||
SettingsEnum.ADREMOVER_MOVIE_REMOVAL,
|
|
||||||
"browsy_bar",
|
|
||||||
"compact_movie",
|
|
||||||
"horizontal_movie_shelf",
|
|
||||||
"movie_and_show_upsell_card"
|
|
||||||
);
|
|
||||||
|
|
||||||
this.pathRegister.registerAll(
|
|
||||||
generalAds,
|
|
||||||
buttonedAd,
|
|
||||||
communityPosts,
|
|
||||||
paidContent,
|
|
||||||
suggestions,
|
|
||||||
latestPosts,
|
|
||||||
movieAds,
|
|
||||||
chapterTeaser,
|
|
||||||
communityGuidelines,
|
|
||||||
compactBanner,
|
|
||||||
inFeedSurvey,
|
|
||||||
medicalPanel,
|
|
||||||
merchandise,
|
|
||||||
infoPanel,
|
|
||||||
channelGuidelines,
|
|
||||||
artistCard,
|
|
||||||
selfSponsor
|
|
||||||
);
|
|
||||||
|
|
||||||
var carouselAd = new BlockRule(SettingsEnum.ADREMOVER_GENERAL_ADS_REMOVAL,
|
|
||||||
"carousel_ad"
|
|
||||||
);
|
|
||||||
var shorts = new BlockRule(SettingsEnum.ADREMOVER_SHORTS_REMOVAL,
|
|
||||||
"reels_player_overlay",
|
|
||||||
"shorts_shelf",
|
|
||||||
"inline_shorts"
|
|
||||||
);
|
|
||||||
|
|
||||||
this.identifierRegister.registerAll(
|
|
||||||
shorts,
|
|
||||||
graySeparator,
|
|
||||||
carouselAd
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean filter(final String path, final String identifier) {
|
|
||||||
BlockResult result;
|
|
||||||
|
|
||||||
if (custom.isEnabled() && custom.check(path).isBlocked())
|
|
||||||
result = BlockResult.CUSTOM;
|
|
||||||
else if (ReVancedUtils.containsAny(path, IGNORE))
|
|
||||||
result = BlockResult.IGNORED;
|
|
||||||
else if (pathRegister.contains(path) || identifierRegister.contains(identifier))
|
|
||||||
result = BlockResult.DEFINED;
|
|
||||||
else
|
|
||||||
result = BlockResult.UNBLOCKED;
|
|
||||||
|
|
||||||
LogHelper.debug(
|
|
||||||
GeneralAdsPatch.class,
|
|
||||||
String.format("%s (ID: %s): %s", result.message, identifier, path)
|
|
||||||
);
|
|
||||||
|
|
||||||
return result.filter;
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum BlockResult {
|
|
||||||
UNBLOCKED(false, "Unblocked"),
|
|
||||||
IGNORED(false, "Ignored"),
|
|
||||||
DEFINED(true, "Blocked"),
|
|
||||||
CUSTOM(true, "Custom");
|
|
||||||
|
|
||||||
final Boolean filter;
|
|
||||||
final String message;
|
|
||||||
|
|
||||||
BlockResult(boolean filter, String message) {
|
|
||||||
this.filter = filter;
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user