From cf4855bdd10315e2ea76510498656611ddaaf990 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sun, 4 Sep 2022 16:32:22 +0300 Subject: [PATCH] fixed newsfeed issues --- .../lite/hooks/MainActivityInjector.java | 3 +- .../lite/utils/NewsFeedFiltersUtils.java | 77 +++++++++++-------- .../ru/vtosters/lite/utils/Preferences.java | 3 + 3 files changed, 50 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java index 553061460..073a28d94 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java @@ -39,9 +39,10 @@ public class MainActivityInjector{ VkExecutors.x.q().a(() -> { getInstance().autoCleaningCache(); - setupFilters(); }); // slowTasksScheduler + setupFilters(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannels.createChannels(); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java index 350aa2139..147795921 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java @@ -25,12 +25,12 @@ import java.util.Scanner; import ru.vtosters.lite.hooks.AdBlockHook; -public class NewsFeedFiltersUtils { +public class NewsFeedFiltersUtils{ public static List mFilters; public static List mFiltersNames; public static List mFiltersLinks; - public static void setupFilters() { + public static void setupFilters(){ mFilters = new ArrayList<>(); mFiltersNames = new ArrayList<>(); mFiltersLinks = new ArrayList<>(); @@ -57,7 +57,7 @@ public class NewsFeedFiltersUtils { } } - public static void getFilter(String boolname, String filename, List list) { + public static void getFilter(String boolname, String filename, List list){ var ctx = getGlobalContext(); if (getBoolValue(boolname, false)) { @@ -66,7 +66,7 @@ public class NewsFeedFiltersUtils { if (ctx != null) { scanner = new Scanner(ctx.getAssets().open(filename)); - while (scanner.hasNextLine()) { + while(scanner.hasNextLine()) { var line = scanner.nextLine(); if (!line.isEmpty()) list.add(line.toLowerCase()); @@ -78,10 +78,10 @@ public class NewsFeedFiltersUtils { } } // Get needed filter list from assets - public static boolean injectFiltersReposts(JSONObject obj) throws JSONException { + public static boolean injectFiltersReposts(JSONObject obj) throws JSONException{ if (getBoolValue("cringerepost", false) && obj.has("copy_history")) { var copyHistoryNode = obj.optJSONArray("copy_history"); - if (copyHistoryNode != null) { + if (copyHistoryNode != null && copyHistoryNode.length() != 0) { for (int i = 0; i < copyHistoryNode.length(); i++) { var item = copyHistoryNode.optJSONObject(i); var text = item.optString("text"); @@ -96,11 +96,13 @@ public class NewsFeedFiltersUtils { return true; } - for (String filter : mFiltersLinks) { - if (text.contains(filter)) { - if (dev()) - Log.d("RepostFilter", "Fetched repost ad, owner id " + item.optString("owner_id") + ", text: " + text); - return true; + if (mFiltersLinks != null) { + for (String filter : mFiltersLinks) { + if (text.contains(filter)) { + if (dev()) + Log.d("RepostFilter", "Fetched repost ad, owner id " + item.optString("owner_id") + ", text: " + text); + return true; + } } } } @@ -109,7 +111,7 @@ public class NewsFeedFiltersUtils { return false; } - public static boolean checkCopyright(JSONObject json) throws JSONException { + public static boolean checkCopyright(JSONObject json) throws JSONException{ if (json.has("copyright")) { if (copyright_post()) return true; @@ -127,46 +129,57 @@ public class NewsFeedFiltersUtils { copyrightLink = copyright.getString("link").toLowerCase(); } - for (String filter : mFiltersNames) { - if (copyrightName != null && copyrightName.contains(filter)) return true; + if (mFiltersNames != null) { + for (String filter : mFiltersNames) { + if (copyrightName != null && copyrightName.contains(filter)) return true; + } } - for (String filter : mFiltersLinks) { - if (copyrightLink != null && copyrightLink.contains(filter)) return true; + + if (mFiltersLinks != null) { + for (String filter : mFiltersLinks) { + if (copyrightLink != null && copyrightLink.contains(filter)) return true; + } } + } return false; } - public static boolean isRecomsGroup(String src) { + public static boolean isRecomsGroup(String src){ return authorsrecomm() && src.equals("recommended_groups"); } - public static boolean isMusicBlock(String src) { + public static boolean isMusicBlock(String src){ return authorsrecomm() && (src.equals("recommended_audios") || src.equals("recommended_artists") || src.equals("recommended_playlists")); } - public static boolean isNewsBlock(String src) { + public static boolean isNewsBlock(String src){ return ads() && src.equals("tags_suggestions"); } - public static String getAllFilters() { + public static String getAllFilters(){ return getPrefsValue("spamfilters"); } - public static boolean isBadNews(String text) { + public static boolean isBadNews(String text){ var textInLowerCase = text.toLowerCase(); - for (String filter : mFilters) { - if (textInLowerCase.contains(filter)) { - if (dev()) - Log.d("VTLite", text); - return true; + + if (mFilters != null) { + for (String filter : mFilters) { + if (textInLowerCase.contains(filter)) { + if (dev()) + Log.d("NewsfeedAdBlockV2", text); + return true; + } } } + + return false; } - public static boolean checkCaption(JSONObject postJson) { + public static boolean checkCaption(JSONObject postJson){ if (postJson.has("caption")) { if (captions()) return true; var caption = postJson.optJSONObject("caption"); @@ -190,29 +203,29 @@ public class NewsFeedFiltersUtils { return false; } - public static boolean isAds(String optString) { + public static boolean isAds(String optString){ return ads() && (optString.equals("ads_easy_promote") || optString.equals("promo_button") || optString.equals("app_widget") || optString.equals("ads")); } - public static boolean isAuthorRecommendations(String optString) { + public static boolean isAuthorRecommendations(String optString){ return authorsrecomm() && optString.equals("authors_rec"); } - public static boolean isPostRecommendations(String optString) { + public static boolean isPostRecommendations(String optString){ return postsrecomm() && (optString.equals("live_recommended") || optString.equals("inline_user_rec")); } - public static boolean isFriendsRecommendations(String optString) { + public static boolean isFriendsRecommendations(String optString){ return friendsrecomm() && (optString.equals("user_rec") || optString.equals("friends_recommendations") || optString.equals("friends_recomm")); } - public static boolean isGroupAds(JSONObject obj) { + public static boolean isGroupAds(JSONObject obj){ return adsgroup() && obj.optInt("marked_as_ads", 0) == 1; } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index 6bff7155f..04b72ba74 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -5,6 +5,7 @@ import static ru.vtosters.lite.proxy.ProxyUtils.setProxy; import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; +import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature; import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; @@ -36,6 +37,8 @@ public class Preferences { public static void forceOffline() { edit().putBoolean("isdark", isDarkTheme()).commit(); + setupFilters(); + if (setoffline() && offline()) { Users.a(); }