From 35e47ba9992512a284236e6b5483204bb3f36a2c Mon Sep 17 00:00:00 2001 From: NH <=> Date: Thu, 12 Feb 2026 09:54:33 +0100 Subject: [PATCH] Add the feature to blacklist channels: Long press context menu blacklist channel + confirmation prompt Blacklisted channels tab + unblacklist channel context menu --- BrowsePresenter_from_master.java | Bin 0 -> 102452 bytes VideoMenuPresenter_from_master.java | Bin 0 -> 96170 bytes .../common/app/models/data/Video.java | 175 +- .../common/app/models/data/VideoGroup.java | 35 +- .../app/presenters/BrowsePresenter.java | 187 ++- .../dialogs/menu/VideoMenuPresenter.java | 406 +++-- .../presenters/service/SidebarService.java | 19 +- .../common/prefs/BlacklistData.java | 198 +++ .../common/prefs/MainUIData.java | 53 +- common/src/main/res/values-cs/strings.xml | 15 +- common/src/main/res/values-de/strings.xml | 10 +- common/src/main/res/values-es/strings.xml | 7 + common/src/main/res/values-fr/strings.xml | 7 + common/src/main/res/values-it/strings.xml | 7 + common/src/main/res/values-ja/strings.xml | 7 + common/src/main/res/values-ko/strings.xml | 7 + common/src/main/res/values-nl/strings.xml | 7 + common/src/main/res/values-pl/strings.xml | 12 +- common/src/main/res/values-pt-rBR/strings.xml | 1432 ++++++++-------- common/src/main/res/values-pt-rPT/strings.xml | 1439 ++++++++--------- common/src/main/res/values-ru/strings.xml | 10 +- common/src/main/res/values-tr/strings.xml | 15 +- common/src/main/res/values-uk/strings.xml | 10 +- common/src/main/res/values-vi/strings.xml | 7 + common/src/main/res/values-zh-rTW/strings.xml | 546 ++++--- common/src/main/res/values-zh/strings.xml | 7 + common/src/main/res/values/strings.xml | 7 + 27 files changed, 2551 insertions(+), 2074 deletions(-) create mode 100644 BrowsePresenter_from_master.java create mode 100644 VideoMenuPresenter_from_master.java create mode 100644 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/BlacklistData.java diff --git a/BrowsePresenter_from_master.java b/BrowsePresenter_from_master.java new file mode 100644 index 0000000000000000000000000000000000000000..3ba6d0ec461179b483fe87e7d59220c155afc877 GIT binary patch literal 102452 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 notificationStates; public Video() { - // NOP + // NOP } private Video( @@ -223,19 +224,20 @@ public static Video from(Item channel) { video.channelId = channel.getChannelId(); return video; } - ///** + /// ** // * Don't change the logic from equality by reference!
// * Or adapters won't work properly (same video may appear twice). // */ - //@Override - //public boolean equals(@Nullable Object obj) { - // return super.equals(obj); - //} + // @Override + // public boolean equals(@Nullable Object obj) { + // return super.equals(obj); + // } /** * Use with caution.
* Old logic is equality by reference!
- * Adapters may not work properly when detecting scroll position (same video may appear twice). + * Adapters may not work properly when detecting scroll position (same video may + * appear twice). */ @Override public boolean equals(@Nullable Object obj) { @@ -249,22 +251,25 @@ public boolean equals(@Nullable Object obj) { } /** - * NOTE: hashCode is used generate id that should be the same if contents of items is the same + * NOTE: hashCode is used generate id that should be the same if contents of + * items is the same */ @Override public int hashCode() { // NOTE: With full hash code won't jump to last known position - int hashCode = Helpers.hashCodeAny(videoId, playlistId, reloadPageKey, playlistParams, channelId, sectionId, channelGroupId, mediaItem); + int hashCode = Helpers.hashCodeAny(videoId, playlistId, reloadPageKey, playlistParams, channelId, sectionId, + channelGroupId, mediaItem); return hashCode != -1 ? hashCode : super.hashCode(); } public static void printDebugInfo(Context context, Video item) { MessageHelpers.showLongMessage(context, - String.format("videoId=%s, playlistId=%s, reloadPageKey=%s, playlistParams=%s, channelId=%s, mediaItem=%s, extra=%s", - item.videoId, item.playlistId, item.reloadPageKey, item.playlistParams, item.channelId, item.mediaItem, item.sectionId) - ); + String.format( + "videoId=%s, playlistId=%s, reloadPageKey=%s, playlistParams=%s, channelId=%s, mediaItem=%s, extra=%s", + item.videoId, item.playlistId, item.reloadPageKey, item.playlistParams, item.channelId, + item.mediaItem, item.sectionId)); } - + public static boolean equals(Video video1, Video video2) { if (video1 == null) { return false; @@ -317,7 +322,8 @@ public String getAuthor() { String mainTitle = metadataTitle != null ? metadataTitle : title; CharSequence subtitle = metadataSecondTitle != null ? metadataSecondTitle : secondTitle; - return hasVideo() ? extractAuthor(subtitle) : Helpers.toString(YouTubeHelper.createInfo(mainTitle, subtitle)); // BAD idea + return hasVideo() ? extractAuthor(subtitle) : Helpers.toString(YouTubeHelper.createInfo(mainTitle, subtitle)); // BAD + // idea } public VideoGroup getGroup() { @@ -347,13 +353,16 @@ private static String extractAuthor(String secondTitle) { result = secondTitle; } else { // First part may be a special label (4K, Stream, New etc) - // Two cases to detect label: 1) Description is long (4 items); 2) First item of info is too short (2 letters) + // Two cases to detect label: 1) Description is long (4 items); 2) First item of + // info is too short (2 letters) result = split.length < 4 && split[0].trim().length() > 2 ? split[0] : split[1]; } } // Skip subtitles starting with number of views (e.g. 1.4M views) - return !TextUtils.isEmpty(result) && !Helpers.isNumeric(result.substring(0, 1)) ? Helpers.abbreviate(result.trim(), MAX_AUTHOR_LENGTH_CHARS) : null; + return !TextUtils.isEmpty(result) && !Helpers.isNumeric(result.substring(0, 1)) + ? Helpers.abbreviate(result.trim(), MAX_AUTHOR_LENGTH_CHARS) + : null; } public static List