added group stories adblock

This commit is contained in:
gdlbo
2023-02-13 18:57:29 +03:00
parent b44dae69a6
commit e3c694d7c3
9 changed files with 153 additions and 46 deletions
+61 -42
View File
@@ -4978,7 +4978,24 @@ public final class R {
public static final int roundmsg = 0x7f080bd3; // 2131233747
public static final int tgs_entry_background = 0x7f080bd4; // 2131233748
public static final int yandex = 0x7f080bd7; // 2131233751
public static final int checker_background = 0x7f080bd8; // 2131233752
public static final int $splash__0 = 0x7f080bd8; // 2131233752
public static final int $splash__1 = 0x7f080bd9; // 2131233753
public static final int $splash__10 = 0x7f080bda; // 2131233754
public static final int $splash__11 = 0x7f080bdb; // 2131233755
public static final int $splash__12 = 0x7f080bdc; // 2131233756
public static final int $splash__13 = 0x7f080bdd; // 2131233757
public static final int $splash__14 = 0x7f080bde; // 2131233758
public static final int $splash__15 = 0x7f080bdf; // 2131233759
public static final int $splash__2 = 0x7f080be0; // 2131233760
public static final int $splash__3 = 0x7f080be1; // 2131233761
public static final int $splash__4 = 0x7f080be2; // 2131233762
public static final int $splash__5 = 0x7f080be3; // 2131233763
public static final int $splash__6 = 0x7f080be4; // 2131233764
public static final int $splash__7 = 0x7f080be5; // 2131233765
public static final int $splash__8 = 0x7f080be6; // 2131233766
public static final int $splash__9 = 0x7f080be7; // 2131233767
public static final int checker_background = 0x7f080be8; // 2131233768
public static final int splash = 0x7f080be9; // 2131233769
public static final int abc_control_background_material = 0x7f080032; // 2131230770
public static final int ic_action_close = 0x7f080322; // 2131231522
public static final int ic_camera_outline_28_new = 0x7f0803a0; // 2131231648
@@ -19530,47 +19547,49 @@ public final class R {
public static final int accent_color_summ = 0x7f12183b; // 2131892283
public static final int accent_color_title = 0x7f12183c; // 2131892284
public static final int accents = 0x7f12183d; // 2131892285
public static final int amoledtheme_summ = 0x7f12183e; // 2131892286
public static final int amoledtheme_title = 0x7f12183f; // 2131892287
public static final int app_open_by_default_settings = 0x7f121840; // 2131892288
public static final int audio_deleted_from_cache = 0x7f121841; // 2131892289
public static final int blockminiapps_summ = 0x7f121842; // 2131892290
public static final int blockminiapps_title = 0x7f121843; // 2131892291
public static final int businessDisabler_title = 0x7f121844; // 2131892292
public static final int by_choice = 0x7f121845; // 2131892293
public static final int calls_not_available = 0x7f121846; // 2131892294
public static final int cannot_write = 0x7f121847; // 2131892295
public static final int change_accent_color = 0x7f121848; // 2131892296
public static final int copydebuginfo_summ = 0x7f121849; // 2131892297
public static final int copydebuginfo_title = 0x7f12184a; // 2131892298
public static final int copyownlink_summ = 0x7f12184b; // 2131892299
public static final int copyownlink_title = 0x7f12184c; // 2131892300
public static final int crash_service_name = 0x7f12184d; // 2131892301
public static final int current_theme = 0x7f12184e; // 2131892302
public static final int custom_links_warning = 0x7f12184f; // 2131892303
public static final int data_updated = 0x7f121850; // 2131892304
public static final int device_info = 0x7f121851; // 2131892305
public static final int device_info_copied = 0x7f121852; // 2131892306
public static final int dialogstats = 0x7f121853; // 2131892307
public static final int downloading_update = 0x7f121854; // 2131892308
public static final int invalid_pack_link = 0x7f121855; // 2131892309
public static final int maxquality_summ = 0x7f121856; // 2131892310
public static final int maxquality_title = 0x7f121857; // 2131892311
public static final int monettheme_summ = 0x7f121858; // 2131892312
public static final int monettheme_title = 0x7f121859; // 2131892313
public static final int newsfeed_notif_summ = 0x7f12185a; // 2131892314
public static final int newsfeed_notif_title = 0x7f12185b; // 2131892315
public static final int open_bot = 0x7f12185c; // 2131892316
public static final int promotedstickers_title = 0x7f12185d; // 2131892317
public static final int select_color = 0x7f12185e; // 2131892318
public static final int select_palette = 0x7f12185f; // 2131892319
public static final int sources = 0x7f121860; // 2131892320
public static final int updateverifdata_summ = 0x7f121861; // 2131892321
public static final int updateverifdata_title = 0x7f121862; // 2131892322
public static final int useOldAppVer_summ = 0x7f121863; // 2131892323
public static final int useOldAppVer_title = 0x7f121864; // 2131892324
public static final int vkx_integration_enabled_info = 0x7f121865; // 2131892325
public static final int writebar_ios_title = 0x7f121866; // 2131892326
public static final int add_to_ads_stories_whitelist = 0x7f12183e; // 2131892286
public static final int amoledtheme_summ = 0x7f12183f; // 2131892287
public static final int amoledtheme_title = 0x7f121840; // 2131892288
public static final int app_open_by_default_settings = 0x7f121841; // 2131892289
public static final int audio_deleted_from_cache = 0x7f121842; // 2131892290
public static final int blockminiapps_summ = 0x7f121843; // 2131892291
public static final int blockminiapps_title = 0x7f121844; // 2131892292
public static final int businessDisabler_title = 0x7f121845; // 2131892293
public static final int by_choice = 0x7f121846; // 2131892294
public static final int calls_not_available = 0x7f121847; // 2131892295
public static final int cannot_write = 0x7f121848; // 2131892296
public static final int change_accent_color = 0x7f121849; // 2131892297
public static final int copydebuginfo_summ = 0x7f12184a; // 2131892298
public static final int copydebuginfo_title = 0x7f12184b; // 2131892299
public static final int copyownlink_summ = 0x7f12184c; // 2131892300
public static final int copyownlink_title = 0x7f12184d; // 2131892301
public static final int crash_service_name = 0x7f12184e; // 2131892302
public static final int current_theme = 0x7f12184f; // 2131892303
public static final int custom_links_warning = 0x7f121850; // 2131892304
public static final int data_updated = 0x7f121851; // 2131892305
public static final int device_info = 0x7f121852; // 2131892306
public static final int device_info_copied = 0x7f121853; // 2131892307
public static final int dialogstats = 0x7f121854; // 2131892308
public static final int downloading_update = 0x7f121855; // 2131892309
public static final int invalid_pack_link = 0x7f121856; // 2131892310
public static final int maxquality_summ = 0x7f121857; // 2131892311
public static final int maxquality_title = 0x7f121858; // 2131892312
public static final int monettheme_summ = 0x7f121859; // 2131892313
public static final int monettheme_title = 0x7f12185a; // 2131892314
public static final int newsfeed_notif_summ = 0x7f12185b; // 2131892315
public static final int newsfeed_notif_title = 0x7f12185c; // 2131892316
public static final int open_bot = 0x7f12185d; // 2131892317
public static final int promotedstickers_title = 0x7f12185e; // 2131892318
public static final int remove_from_ads_stories_whitelist = 0x7f12185f; // 2131892319
public static final int select_color = 0x7f121860; // 2131892320
public static final int select_palette = 0x7f121861; // 2131892321
public static final int sources = 0x7f121862; // 2131892322
public static final int updateverifdata_summ = 0x7f121863; // 2131892323
public static final int updateverifdata_title = 0x7f121864; // 2131892324
public static final int useOldAppVer_summ = 0x7f121865; // 2131892325
public static final int useOldAppVer_title = 0x7f121866; // 2131892326
public static final int vkx_integration_enabled_info = 0x7f121867; // 2131892327
public static final int writebar_ios_title = 0x7f121868; // 2131892328
}
public static final class style {
@@ -252,6 +252,30 @@ public class AdBlockHook {
return items;
}
private static void parseStoriesItem(JSONObject item) throws JSONException {
var stories = item.optJSONArray("stories");
var newStories = new JSONArray();
if (stories == null) return;
for (int j = 0; j < stories.length(); j++) {
var story = stories.optJSONObject(j);
if (!story.optBoolean("is_ads") && !story.optBoolean("is_promo")) {
if (isStoryNotAd(story)) {
newStories.put(story);
}
} else {
if (dev()) Log.d("StoriesAds", "Fetched ad, owner id " + story.optString("owner_id") + ", caption " + story.optString("caption"));
}
}
item.put("stories", newStories);
}
private static Boolean isStoryNotAd(JSONObject json) {
return !getBoolValue("storiesGroupsAdBlock", false) || (json.has("link") ? isWhitelistedAdStories(json) : true);
}
public static JSONObject storiesads(JSONObject json, boolean isDeleteFix) throws JSONException {
if (!adsstories()) {
@@ -277,6 +301,16 @@ public class AdBlockHook {
}
}
var items = json.optJSONArray("items");
if (items != null) {
for (int i = 0; i < items.length(); i++) {
var item = items.optJSONObject(i);
if (item != null) {
parseStoriesItem(item);
}
}
}
return json;
}
@@ -340,6 +374,17 @@ public class AdBlockHook {
return whitelist.contains(id);
}
public static Boolean isWhitelistedAdStories(JSONObject list) {
var id = String.valueOf(list.optInt("owner_id"));
var whitelist = AndroidUtils.getDefaultPrefs().getStringSet(
"whitelisted_stories_ad",
Collections.emptySet()
);
return whitelist.contains(id);
}
public static Boolean hasMiniAppAds(JSONObject list) {
var attachments = list.optJSONArray("attachments");
@@ -79,6 +79,13 @@ public class NewsfeedHook {
).contains(String.valueOf(AccountManagerUtils.getUserID(eup)));
}
public static boolean isWhitelistedAdStories(ExtendedCommunityProfile eup) {
return getDefaultPrefs().getStringSet(
"whitelisted_stories_ad",
Collections.emptySet()
).contains(String.valueOf(AccountManagerUtils.getUserID(eup)));
}
public static void setWhitelistedFilter(ExtendedCommunityProfile eup, boolean needWhitelist) {
var id = String.valueOf(AccountManagerUtils.getUserID(eup));
@@ -111,6 +118,22 @@ public class NewsfeedHook {
getDefaultPrefs().edit().putStringSet("whitelisted_ad_groups", mutableAdsSet).apply();
}
public static void setWhitelistedAdStories(ExtendedCommunityProfile eup, boolean needWhitelist) {
var id = String.valueOf(AccountManagerUtils.getUserID(eup));
var mutableAdsSet = new LinkedHashSet<>(getDefaultPrefs().getStringSet(
"whitelisted_stories_ad",
Collections.emptySet()));
if (needWhitelist) {
mutableAdsSet.add(id);
} else {
mutableAdsSet.remove(id);
}
getDefaultPrefs().edit().putStringSet("whitelisted_stories_ad", mutableAdsSet).apply();
}
public static void adsParams(HashSet<String> hashSet) {
if (ads()) {
hashSet.add("ads_disabled");
@@ -64,6 +64,12 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment {
findPreference("whitelisted_ad_groups").setSummary(countSet("whitelisted_ad_groups"));
findPreference("whitelisted_filters_groups").setSummary(countSet("whitelisted_filters_groups"));
findPreference("whitelisted_stories_ad").setSummary(countSet("whitelisted_stories_ad"));
findPreference("whitelisted_stories_ad").setOnPreferenceClickListener(preference -> {
remdialog("whitelisted_stories_ad", getContext());
return true;
});
findPreference("whitelisted_ad_groups").setOnPreferenceClickListener(preference -> {
remdialog("whitelisted_ad_groups", getContext());
@@ -1,8 +1,7 @@
package ru.vtosters.lite.ui.vkui;
import static ru.vtosters.lite.foaf.FoafBase.loadAndShow;
import static ru.vtosters.lite.hooks.NewsfeedHook.setWhitelistedAd;
import static ru.vtosters.lite.hooks.NewsfeedHook.setWhitelistedFilter;
import static ru.vtosters.lite.hooks.NewsfeedHook.*;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
@@ -85,6 +84,7 @@ public class MenuBuilder {
final Context ctx = ((View) apView.get(builder)).getContext();
final boolean isPageWhitelistedFilter = NewsfeedHook.isWhitelistedFilter(ecp);
final boolean isPageWhitelistedAds = NewsfeedHook.isWhitelistedAd(ecp);
final boolean isPageWhitelistedAdsStories = NewsfeedHook.isWhitelistedAdStories(ecp);
addItem(builder, AndroidUtils.getString(R.string.menu_copy_id), () -> {
copy(ctx, String.valueOf(getUserID(ecp)));
@@ -108,6 +108,12 @@ public class MenuBuilder {
return Unit.a;
});
addItem(builder, AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.remove_from_ads_stories_whitelist : R.string.add_to_ads_stories_whitelist), () -> {
setWhitelistedAdStories(ecp, !isPageWhitelistedAdsStories);
sendToast(AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success));
return Unit.a;
});
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}