diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java index d42a5b7b7..56fb8e178 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java @@ -46,15 +46,17 @@ public class MenuBuilder { cfambObject = CommunityFragmentActionsMenuBuilder.class.getDeclaredField("b"); cfambObject.setAccessible(true); } catch (NoSuchFieldException | NoSuchMethodException e) { - Log.e("VTLite", "Reflection failed"); + Log.e("MenuBuilder", "Reflection failed"); e.printStackTrace(); } } public static void injectAP(final ProfileFragmentActionsMenuBuilder mb, final ActionsPopup.b builder) { try { - final ExtendedUserProfile eup = (ExtendedUserProfile) pfambObject.get(mb); - final Context ctx = ((View) Objects.requireNonNull(apView.get(builder))).getContext(); + ExtendedUserProfile eup = (ExtendedUserProfile) pfambObject.get(mb); + Context ctx = ((View) Objects.requireNonNull(apView.get(builder))).getContext(); + boolean isPageWhitelistedFilter = isWhitelistedFilter(eup); + boolean isPageWhitelistedAdsStories = isWhitelistedAdStories(eup); addItem(builder, AndroidUtils.getString(R.string.menu_copy_id), () -> { copy(ctx, String.valueOf(AccountManagerUtils.getUserID(eup))); return Unit.a; @@ -70,6 +72,17 @@ public class MenuBuilder { // return Unit.a; // }); + addItem(builder, AndroidUtils.getString(isPageWhitelistedFilter ? R.string.remove_from_filter_whitelist : R.string.add_to_filter_whitelist), () -> { + setWhitelistedFilter(eup, !isPageWhitelistedFilter); + AndroidUtils.sendToast(AndroidUtils.getString(isPageWhitelistedFilter ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); + return Unit.a; + }); + + addItem(builder, AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.remove_from_ads_stories_whitelist : R.string.add_to_ads_stories_whitelist), () -> { + setWhitelistedAdStories(eup, !isPageWhitelistedAdsStories); + AndroidUtils.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(); } @@ -77,11 +90,11 @@ public class MenuBuilder { public static void injectAP(final CommunityFragmentActionsMenuBuilder mb, final ActionsPopup.b builder) { try { - final ExtendedCommunityProfile ecp = (ExtendedCommunityProfile) cfambObject.get(mb); - final Context ctx = ((View) apView.get(builder)).getContext(); - final boolean isPageWhitelistedFilter = isWhitelistedFilter(ecp); - final boolean isPageWhitelistedAds = isWhitelistedAd(ecp); - final boolean isPageWhitelistedAdsStories = isWhitelistedAdStories(ecp); + ExtendedCommunityProfile ecp = (ExtendedCommunityProfile) cfambObject.get(mb); + Context ctx = ((View) apView.get(builder)).getContext(); + boolean isPageWhitelistedFilter = isWhitelistedFilter(ecp); + boolean isPageWhitelistedAds = isWhitelistedAd(ecp); + boolean isPageWhitelistedAdsStories = isWhitelistedAdStories(ecp); addItem(builder, AndroidUtils.getString(R.string.menu_copy_id), () -> { copy(ctx, String.valueOf(AccountManagerUtils.getUserID(ecp))); @@ -110,7 +123,6 @@ public class MenuBuilder { AndroidUtils.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(); } @@ -148,6 +160,19 @@ public class MenuBuilder { ).contains(String.valueOf(AccountManagerUtils.getUserID(eup))); } + public static boolean isWhitelistedFilter(ExtendedUserProfile eup) { + return Preferences.getPreferences().getStringSet( + "whitelisted_filters_groups", Collections.emptySet() + ).contains(String.valueOf(AccountManagerUtils.getUserID(eup))); + } + + public static boolean isWhitelistedAdStories(ExtendedUserProfile eup) { + return Preferences.getPreferences().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)); @@ -195,4 +220,36 @@ public class MenuBuilder { Preferences.getPreferences().edit().putStringSet("whitelisted_stories_ad", mutableAdsSet).apply(); } + + public static void setWhitelistedFilter(ExtendedUserProfile eup, boolean needWhitelist) { + var id = String.valueOf(AccountManagerUtils.getUserID(eup)); + + var mutableAdsSet = new LinkedHashSet<>(Preferences.getPreferences().getStringSet( + "whitelisted_filters_groups", + Collections.emptySet()) + ); + if (needWhitelist) { + mutableAdsSet.add(id); + } else { + mutableAdsSet.remove(id); + } + + Preferences.getPreferences().edit().putStringSet("whitelisted_filters_groups", mutableAdsSet).apply(); + } + + public static void setWhitelistedAdStories(ExtendedUserProfile eup, boolean needWhitelist) { + var id = String.valueOf(AccountManagerUtils.getUserID(eup)); + + var mutableAdsSet = new LinkedHashSet<>(Preferences.getPreferences().getStringSet( + "whitelisted_stories_ad", + Collections.emptySet())); + + if (needWhitelist) { + mutableAdsSet.add(id); + } else { + mutableAdsSet.remove(id); + } + + Preferences.getPreferences().edit().putStringSet("whitelisted_stories_ad", mutableAdsSet).apply(); + } } \ No newline at end of file diff --git a/smali/res/values-be/strings.xml b/smali/res/values-be/strings.xml index 5affac55e..268d491b1 100644 --- a/smali/res/values-be/strings.xml +++ b/smali/res/values-be/strings.xml @@ -6823,8 +6823,8 @@ Выдаліць з вайтліста рэкламы Дадаць у вайтліст гісторый Выдаліць з вайтліста гісторый - Група выдалена з вайтліста - Група дададзена ў вайтліст + Выдаленая з вайтлиста + Дададзена ў вайтліст Вайтліст рэкламы Вайтліст рэкламы гісторый diff --git a/smali/res/values-ru/strings.xml b/smali/res/values-ru/strings.xml index f0f7c9e17..e8bd41581 100644 --- a/smali/res/values-ru/strings.xml +++ b/smali/res/values-ru/strings.xml @@ -6191,8 +6191,8 @@ Удалить из вайтлиста рекламы Добавить в вайтлист историй Удалить из вайтлиста историй - Группа удалена из вайтлиста - Группа добавлена в вайтлист + Удалено из вайтлиста + Добавлено в вайтлист Вайтлист рекламы Вайтлист фильтров и источников diff --git a/smali/res/values-uk/strings.xml b/smali/res/values-uk/strings.xml index 955a93665..8405e32ab 100644 --- a/smali/res/values-uk/strings.xml +++ b/smali/res/values-uk/strings.xml @@ -6116,8 +6116,8 @@ Видалити з вайтліста реклами Додати до вайтліста історій Видалити з вайтліста історій - Група видалена з вайтліста - Група додана до вайтліста + Видалена з вайтліста + Додана до вайтліста Вайтліст реклами Вайтліст фільтрів та джерел diff --git a/smali/res/values/strings.xml b/smali/res/values/strings.xml index e975371ba..89cbac7ac 100644 --- a/smali/res/values/strings.xml +++ b/smali/res/values/strings.xml @@ -6329,8 +6329,8 @@ May look like a fake leaving the online" Remove from stories whitelist Add to ads stories whitelist Remove from ads stories whitelist - Group removed from whitelist - Group added to whitelist + Removed from whitelist + Added to whitelist Ads whitelist Filters whitelist and copyrights