This commit is contained in:
gdlbo
2024-02-16 03:02:58 +03:00
parent 18f40e0da9
commit 9efccb37ad
12 changed files with 518 additions and 217 deletions
@@ -0,0 +1,67 @@
package com.vk.newsfeed.holders;
import android.annotation.SuppressLint;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.vk.core.ui.themes.VKThemeHelper;
import com.vk.dto.newsfeed.entries.NewsEntry;
import com.vk.dto.newsfeed.entries.Post;
import com.vk.dto.newsfeed.entries.PromoPost;
import com.vk.extensions.ViewExtKt;
import com.vtosters.lite.R;
import ru.vtosters.lite.utils.newsfeed.NewsFeedFiltersUtils;
import ru.vtosters.sponsorpost.internal.VotesPreferences;
import ru.vtosters.sponsorpost.utils.PostsPreferences;
public final class AdMarkHolder extends BaseNewsEntryHolder<NewsEntry> {
private final TextView F;
@SuppressLint("ResourceType")
public AdMarkHolder(ViewGroup viewGroup) {
super(R.layout.marked_as_ads, viewGroup);
View view = ((RecyclerView.ViewHolder) this).itemView;
this.F = ViewExtKt.a(view, R.id.text, (View.OnClickListener) null);
}
@SuppressLint("ResourceType")
public void b(NewsEntry newsEntry) { // onBind
String disclamer = null;
Drawable drawable = null;
int height = 0;
if (newsEntry instanceof Post) {
Post post = ((Post) newsEntry);
if (post.L1()) {
drawable = VKThemeHelper.a(R.drawable.marked_as_ads, R.attr.icon_tertiary);
int ownerId = post.b();
int postId = post.P1();
String text = post.getText();
if (PostsPreferences.isPostAd(ownerId, postId)) {
disclamer = "SponsorPost: Реклама";
} else if (VotesPreferences.isPostAd(ownerId, postId)) {
disclamer = "SponsorPost: Возможно реклама";
} else if (NewsFeedFiltersUtils.sponsorFilters(text)) {
disclamer = "SponsorPost: Заблокировано фильтрами";
} else {
disclamer = m(R.string.sponsored_post_in_group);
}
height = e0().getDimensionPixelSize(R.dimen.newsfeed_ad_mark_post_height);
}
} else if (newsEntry instanceof PromoPost) {
PromoPost promoPost = (PromoPost) newsEntry;
if (!promoPost.E1().isEmpty()) {
height = e0().getDimensionPixelSize(R.dimen.newsfeed_ad_mark_promo_post_height);
disclamer = promoPost.E1();
}
}
this.F.setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null);
this.F.setMinHeight(height);
this.F.setText(disclamer);
}
}
@@ -9,13 +9,12 @@ import com.vk.discover.DiscoverItemDecorator;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.utils.NetworkUtils;
import ru.vtosters.sponsorpost.internal.VotesPreferences;
import ru.vtosters.sponsorpost.internal.VotesService;
import ru.vtosters.sponsorpost.services.PostService;
import ru.vtosters.sponsorpost.utils.PostsPreferences;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.*;
import static java.lang.Long.MAX_VALUE;
import static ru.vtosters.hooks.other.Preferences.*;
@@ -100,8 +99,16 @@ public class NewsfeedHook {
public static void takeOwnerIdSponsorPost(int ownerid) {
if (NetworkUtils.isNetworkConnected() && PostsPreferences.isEnabled() && !Preferences.serverFeaturesDisable()) {
VTExecutors.getIoScheduler().a(() -> {
List<Long> postIds = PostService.getPostIdsByOwnerId((long) ownerid, 0L);
PostsPreferences.saveGroupSpecifiedPosts(postIds, (long) ownerid);
if (PostsPreferences.isGroupAd(ownerid) || VotesPreferences.isGroupAd(ownerid)) {
if (VotesPreferences.isEnabled()) {
Map<String, List<String>> postIds = VotesService.getPostIdsByOwnerId((long) ownerid, 0L);
VotesPreferences.saveGroupSpecifiedPosts(postIds.get("vote"), (long) ownerid);
PostsPreferences.saveGroupSpecifiedPosts(postIds.get("prod"), (long) ownerid);
} else {
List<Long> postIds = PostService.getPostIdsByOwnerId((long) ownerid, 0L);
PostsPreferences.saveGroupSpecifiedPosts(postIds, (long) ownerid);
}
}
});
}
}
@@ -110,17 +117,28 @@ public class NewsfeedHook {
long ownerid = Long.parseLong(strArr[0].split("_")[0]);
long postId = Long.parseLong(strArr[0].split("_")[1]);
if (PostsPreferences.isPostAd(ownerid, postId)) {
if (PostsPreferences.isPostAd(ownerid, postId) || VotesPreferences.isPostAd(ownerid, postId)) {
return;
}
if (NetworkUtils.isNetworkConnected() && PostsPreferences.isEnabled() && !Preferences.serverFeaturesDisable() && PostsPreferences.isGroupAd(ownerid)) {
if (NetworkUtils.isNetworkConnected() && PostsPreferences.isEnabled() && !Preferences.serverFeaturesDisable()) {
VTExecutors.getIoScheduler().a(() -> {
boolean postIds = PostService.isPostAd(ownerid, postId);
if (VotesPreferences.isEnabled()) {
boolean postIds = VotesService.isPostAd(ownerid, postId);
if (postIds) {
PostsPreferences.saveAdPostInfo(ownerid, postId);
sendToast("Этот пост помечен как рекламный");
if (postIds) {
VotesPreferences.saveAdPostInfo(ownerid, postId);
}
} else {
boolean postIds = PostService.isPostAd(ownerid, postId);
if (postIds) {
PostsPreferences.saveAdPostInfo(ownerid, postId);
if (!PostsPreferences.isEnabledMarking()) {
sendToast("Этот пост помечен как рекламный");
}
}
}
});
}
@@ -6,8 +6,10 @@ import android.os.Bundle;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.hooks.other.ThemesUtils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.NetworkUtils;
import ru.vtosters.sponsorpost.data.Filter;
import ru.vtosters.sponsorpost.internal.VotesPreferences;
import ru.vtosters.sponsorpost.services.FilterService;
import ru.vtosters.sponsorpost.utils.FiltersPreferences;
import ru.vtosters.sponsorpost.utils.PostsPreferences;
@@ -49,7 +51,7 @@ public class SponsorPostFragment extends TrackedMaterialPreferenceToolbarFragmen
} else {
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"sponsorpost",
"",
"Фильтр постов",
"Получать списки рекламных постов в группах и ленте, которые не блокируются рекламными фильтрами",
null,
@@ -59,6 +61,47 @@ public class SponsorPostFragment extends TrackedMaterialPreferenceToolbarFragmen
return true;
}
);
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"",
"Не скрывать посты",
"Помечать посты рекламной пометкой, но не скрывать их полностью",
null,
PostsPreferences.isEnabledMarking(),
(preference, o) -> {
PostsPreferences.setEnabledMarking((boolean) o);
return true;
}
);
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"",
"Предварительные списки",
"Получать дополнительно более свежие списки которые ещё не попали в основной список. Нужно для активного голосования для блокировки постов. Возможно много ошибок!",
null,
VotesPreferences.isEnabled(),
(preference, o) -> {
VotesPreferences.setEnabled((boolean) o);
return true;
}
).setEnabled(PostsPreferences.isEnabled());
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
"Обновить списки постов",
null,
null,
preference -> {
this.requireActivity().runOnUiThread(() -> {
Updates.updatePosts();
AndroidUtils.sendToast("Обновлено");
});
return false;
}
);
}
requireActivity().runOnUiThread(() -> {
@@ -123,6 +166,19 @@ public class SponsorPostFragment extends TrackedMaterialPreferenceToolbarFragmen
);
}
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"",
"Не блокировать посты",
"Помечать посты заблокированные фильтрами",
null,
FiltersPreferences.isEnabledMarking(),
(preference, o) -> {
FiltersPreferences.setEnabledMarking((boolean) o);
return true;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
@@ -6,6 +6,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.utils.AccountManagerUtils;
import ru.vtosters.sponsorpost.internal.VotesPreferences;
import ru.vtosters.sponsorpost.utils.FiltersPreferences;
import ru.vtosters.sponsorpost.utils.PostsPreferences;
@@ -212,19 +213,37 @@ public class NewsFeedFiltersUtils {
return false;
}
if (adsgroup() && post.optInt("marked_as_ads") == 1 && !isWhitelistedAd(post)) {
if (adsgroup() && post.optInt("marked_as_ads") == 1 && !post.optBoolean("sponsorpost") && !post.optBoolean("sponsorpost_filters") && !isWhitelistedAd(post)) {
logRemovedPost(post, source, "marked_as_ads", needToShowToast);
return false;
}
if (PostsPreferences.isPostAd(getOwnerId(post), getPostId(post)) && !isWhitelistedAd(post)) {
if (PostsPreferences.isPostAd(getOwnerId(post), getPostId(post)) && !post.optBoolean("sponsorpost") && !post.optBoolean("sponsorpost_filters") && !isWhitelistedAd(post)) {
logRemovedPost(post, source, "sponsorpost", needToShowToast);
return false;
if (PostsPreferences.isEnabledMarking()) {
post.putOpt("marked_as_ads", 1);
post.putOpt("sponsorpost", true);
} else {
return false;
}
}
if (sponsorFilters(post.optString("text")) && !isWhitelistedFilters(post)) {
if (VotesPreferences.isPostAd(getOwnerId(post), getPostId(post)) && !post.optBoolean("sponsorpost") && !post.optBoolean("sponsorpost_filters") && !isWhitelistedAd(post)) {
logRemovedPost(post, source, "sponsorpost vote base", needToShowToast);
post.putOpt("marked_as_ads", 1);
post.putOpt("sponsorpost", true);
}
if (sponsorFilters(post.optString("text")) && !post.optBoolean("sponsorpost") && !post.optBoolean("sponsorpost_filters") && !isWhitelistedFilters(post)) {
logRemovedPost(post, source, "sponsorpost filter", needToShowToast);
return false;
if (FiltersPreferences.isEnabledMarking()) {
post.putOpt("marked_as_ads", 1);
post.putOpt("sponsorpost_filters", true);
} else {
return false;
}
}
if (checkCopyright(post)) {
@@ -0,0 +1,15 @@
package ru.vtosters.sponsorpost.internal;
public class Native {
public static String sig() {
return null;
}
public static String time() {
return null;
}
public static String pkey() {
return null;
}
}
@@ -0,0 +1,87 @@
package ru.vtosters.sponsorpost.internal;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import ru.vtosters.lite.utils.AndroidUtils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class VotesPreferences {
private static final SharedPreferences preferences;
static {
preferences = getPreferences();
}
private static SharedPreferences getPreferences() {
return AndroidUtils.getGlobalContext().getSharedPreferences("ru.vtosters.sponsorpost.votes.prefs", Context.MODE_PRIVATE);
}
public static boolean isEnabled() {
return preferences.getBoolean("sponsortesting", false);
}
public static void setEnabled(boolean status) {
preferences.edit().putBoolean("sponsortesting", status).apply();
}
public static void savePosts(List<String> posts) {
preferences.edit()
.putStringSet("posts", new HashSet<>(posts))
.apply();
}
public static void saveGroupsIds(List<String> ids) {
preferences.edit()
.putStringSet("groupIds", new HashSet<>(ids))
.apply();
}
public static void saveGroupSpecifiedPosts(List<String> postsIds, Long ownerId) {
Set<String> stringSet = postsIds.stream()
.map(post -> ownerId + "_" + post)
.collect(Collectors.toSet());
preferences.edit()
.putStringSet(ownerId + "_posts", stringSet)
.apply();
}
public static void saveAdPostInfo(long ownerId, long postId) {
Set<String> currentStringSet = preferences.getStringSet("posts", new HashSet<>());
Set<String> newStringSet = new HashSet<>(currentStringSet);
newStringSet.add(ownerId + "_" + postId);
Log.d("SponsorPost", ownerId + "_" + postId);
preferences.edit()
.putStringSet("posts", newStringSet)
.apply();
}
public static boolean isGroupAd(long ownerId) {
Set<String> isGroupAd = preferences.getStringSet("groupIds", new HashSet<>());
if (!isGroupAd.isEmpty() && isEnabled()) {
return isGroupAd.contains(Long.toString(ownerId));
} else {
return false;
}
}
public static boolean isPostAd(long ownerId, long postId) {
if (isEnabled() && isGroupAd(ownerId)) {
Set<String> hasSpecifiedGroupPosts = preferences.getStringSet(ownerId + "_posts", new HashSet<>());
Set<String> hasPost = preferences.getStringSet("posts", new HashSet<>());
return hasPost.contains(ownerId + "_" + postId) || hasSpecifiedGroupPosts.contains(ownerId + "_" + postId);
} else {
return false;
}
}
}
@@ -0,0 +1,187 @@
package ru.vtosters.sponsorpost.internal;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.sponsorpost.utils.ApiUtils;
import ru.vtosters.sponsorpost.utils.GzipDecompressor;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class VotesService {
private static final OkHttpClient client = new OkHttpClient();
private static final String apiPath = ApiUtils.getURL() + "/votes";
public static Map<String, List<String>> getPosts(Long date) {
String getFromDate = date > 0 ? ("&date=" + date) : "";
Request request = new Request.a()
.b(apiPath + "/getAllPostIds" + "?needProd=true" + getFromDate)
.a("Content-Type", "application/json")
.a("Accept-Encoding", "gzip")
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
if (encoding != null && encoding.equals("gzip")) {
return parseJSON(new JSONObject(GzipDecompressor.decompress(response.a().b())));
} else {
return parseJSON(new JSONObject(response.a().g()));
}
} else {
throw new RuntimeException("Failed to get posts: " + response.l());
}
} catch (IOException | JSONException e) {
throw new RuntimeException(e);
}
}
private static Map<String, List<String>> parseJSON(JSONObject object) throws JSONException {
String PROD_KEY = "prod";
String VOTE_KEY = "vote";
JSONArray prodBase = object.getJSONArray(PROD_KEY);
JSONArray testBase = object.getJSONArray(VOTE_KEY);
if (prodBase.length() == 0 || testBase.length() == 0) {
return Collections.emptyMap();
}
List<String> prodList = IntStream.range(0, prodBase.length())
.mapToObj(prodBase::optString)
.filter(Objects::nonNull)
.collect(Collectors.toList());
List<String> voteList = IntStream.range(0, testBase.length())
.mapToObj(testBase::optString)
.filter(Objects::nonNull)
.collect(Collectors.toList());
return Map.of(PROD_KEY, prodList, VOTE_KEY, voteList);
}
public static Map<String, List<String>> getPostIdsByOwnerId(Long ownerId, Long date) {
String getFromDate = date > 0 ? ("&date=" + date) : "";
String requestUrl = apiPath + "/getPostIdsByOwnerId" + "?ownerId=" + ownerId + getFromDate + "&needProd=true";
Request request = new Request.a()
.b(requestUrl)
.a("Content-Type", "application/json")
.a("Accept-Encoding", "gzip")
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
if (encoding != null && encoding.equals("gzip")) {
return parseJSON(new JSONObject(GzipDecompressor.decompress(response.a().b())));
} else {
return parseJSON(new JSONObject(response.a().g()));
}
} else {
throw new RuntimeException("Failed to get postIdsByOwnerId: " + response.l());
}
} catch (IOException | JSONException e) {
throw new RuntimeException(e);
}
}
public static Map<String, List<String>> getOwnerIds() {
String requestUrl = apiPath + "/getOwnerIds" + "?needProd=true";
Request request = new Request.a()
.b(requestUrl)
.a("Content-Type", "application/json")
.a("Accept-Encoding", "gzip")
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
if (encoding != null && encoding.equals("gzip")) {
return parseJSON(new JSONObject(GzipDecompressor.decompress(response.a().b())));
} else {
return parseJSON(new JSONObject(response.a().g()));
}
} else {
throw new RuntimeException("Failed to get ownersIds: " + response.l());
}
} catch (IOException | JSONException e) {
throw new RuntimeException(e);
}
}
public static JSONObject ratePost(Long ownerId, Long postId, boolean reportToServer) {
String requestUrl = apiPath + (reportToServer ? "/dislike" : "/like") + "?ownerId=" + ownerId + "&postId=" + postId;
Request request = new Request.a()
.b(requestUrl)
.a("Content-Type", "application/json")
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
if (encoding != null && encoding.equals("gzip")) {
return new JSONObject(GzipDecompressor.decompress(response.a().b()));
} else {
return new JSONObject(response.a().g());
}
} else {
throw new RuntimeException("Failed to get vote token: " + response.l());
}
} catch (IOException | JSONException e) {
throw new RuntimeException(e);
}
}
public static String getVoteToken() {
String requestUrl = apiPath + "/getUserToken" + "?private_key=" + Native.pkey();
Request request = new Request.a()
.b(requestUrl)
.a("Content-Type", "application/json")
.a("Timestamp", Native.time())
.a("Signature", Native.sig())
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
if (encoding != null && encoding.equals("gzip")) {
return new JSONObject(GzipDecompressor.decompress(response.a().b())).getString("token");
} else {
return new JSONObject(response.a().g()).getString("token");
}
} else {
throw new RuntimeException("Failed to get vote token: " + response.l());
}
} catch (IOException | JSONException e) {
throw new RuntimeException(e);
}
}
public static boolean isPostAd(long ownerId, long postId) {
String requestUrl = apiPath + "/isPostAdvert?post=" + ownerId + "_" + postId + "&needProd=true";
Request request = new Request.a()
.b(requestUrl)
.a("Content-Type", "application/json")
.a();
try (Response response = client.a(request).execute()) {
if (response.h()) {
String encoding = response.a("Content-Encoding");
String resp;
if (encoding != null && encoding.equals("gzip")) {
resp = GzipDecompressor.decompress(response.a().b());
} else {
resp = response.a().g();
}
return Boolean.parseBoolean(resp);
} else {
throw new RuntimeException("Failed to check post for ad status: " + response.l());
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@@ -137,7 +137,7 @@ public class PostService {
// Retrieve post IDs for a specific owner and date
// If date is positive, get posts older than the specified date
// Otherwise, get all posts for the owner
String getFromDate = date > 0 ? ("?date=" + date) : "";
String getFromDate = date > 0 ? ("&date=" + date) : "";
// Construct the API request URL
String requestUrl = apiPath + "/getPostIdsByOwnerId" + "?ownerId=" + ownerId + getFromDate;
@@ -31,6 +31,14 @@ public class FiltersPreferences {
return AndroidUtils.getGlobalContext().getSharedPreferences("ru.vtosters.sponsorpost.filters.prefs", Context.MODE_PRIVATE);
}
public static boolean isEnabledMarking() {
return preferences.getBoolean("sponsorpost_filters_marking", false);
}
public static void setEnabledMarking(boolean status) {
preferences.edit().putBoolean("sponsorpost_filters_marking", status).apply();
}
public static void clearAll() {
preferences.edit().clear().apply();
}
@@ -30,6 +30,14 @@ public class PostsPreferences {
preferences.edit().putBoolean("sponsorpost", status).apply();
}
public static boolean isEnabledMarking() {
return preferences.getBoolean("sponsorpost_marking", false);
}
public static void setEnabledMarking(boolean status) {
preferences.edit().putBoolean("sponsorpost_marking", status).apply();
}
public static void savePosts(List<Post> posts) {
Set<String> stringSet = posts.stream()
.map(post -> post.getOwnerId() + "_" + post.getPostId())
@@ -40,7 +48,13 @@ public class PostsPreferences {
.apply();
}
public static void saveGroupSpecifiedPosts(List<Long> postsIds, Long ownerId) {
public static void savePostsStr(List<String> posts) {
preferences.edit()
.putStringSet("posts", new HashSet<>(posts))
.apply();
}
public static void saveGroupSpecifiedPosts(List<?> postsIds, Long ownerId) {
Set<String> stringSet = postsIds.stream()
.map(post -> ownerId + "_" + post)
.collect(Collectors.toSet());
@@ -50,7 +64,7 @@ public class PostsPreferences {
.apply();
}
public static void saveGroupsIds(List<Long> ids) {
public static void saveGroupsIds(List<?> ids) {
Set<String> stringSet = ids.stream().map(String::valueOf).collect(Collectors.toSet());
preferences.edit()
@@ -1,13 +1,15 @@
package ru.vtosters.sponsorpost.utils;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.lite.utils.NetworkUtils;
import ru.vtosters.sponsorpost.data.Filter;
import ru.vtosters.sponsorpost.data.Post;
import ru.vtosters.sponsorpost.internal.VotesPreferences;
import ru.vtosters.sponsorpost.internal.VotesService;
import ru.vtosters.sponsorpost.services.FilterService;
import ru.vtosters.sponsorpost.services.PostService;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@@ -56,16 +58,31 @@ public class Updates {
long weekAgo = currentTime - TimeUnit.DAYS.toMillis(7);
if (PostsPreferences.isEnabled() && NetworkUtils.isNetworkConnected()) {
List<Post> posts = PostService.getPosts(weekAgo);
List<Long> groupIds = PostService.getOwnerIds();
if (VotesPreferences.isEnabled()) {
Map<String, List<String>> posts = VotesService.getPosts(weekAgo);
Map<String, List<String>> groupIds = VotesService.getOwnerIds();
if (!posts.isEmpty()) {
PostsPreferences.savePosts(posts);
}
if (!posts.isEmpty()) {
PostsPreferences.savePostsStr(posts.get("prod"));
VotesPreferences.savePosts(posts.get("vote"));
}
if (!groupIds.isEmpty()) {
PostsPreferences.saveGroupsIds(groupIds);
if (!groupIds.isEmpty()) {
PostsPreferences.saveGroupsIds(groupIds.get("prod"));
VotesPreferences.saveGroupsIds(groupIds.get("vote"));
}
} else {
List<Post> posts = PostService.getPosts(weekAgo);
List<Long> groupIds = PostService.getOwnerIds();
if (!posts.isEmpty()) {
PostsPreferences.savePosts(posts);
}
if (!groupIds.isEmpty()) {
PostsPreferences.saveGroupsIds(groupIds);
}
}
}
}
}
}
@@ -1,187 +0,0 @@
.class public final Lcom/vk/newsfeed/holders/AdMarkHolder;
.super Lcom/vk/newsfeed/holders/BaseNewsEntryHolder;
.source "AdMarkHolder.kt"
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/vk/newsfeed/holders/BaseNewsEntryHolder<",
"Lcom/vk/dto/newsfeed/entries/NewsEntry;",
">;"
}
.end annotation
# instance fields
.field private final F:Landroid/widget/TextView;
# direct methods
.method public constructor <init>(Landroid/view/ViewGroup;)V
.locals 3
const v0, 0x7f0d0307
.line 1
invoke-direct {p0, v0, p1}, Lcom/vk/newsfeed/holders/BaseNewsEntryHolder;-><init>(ILandroid/view/ViewGroup;)V
.line 2
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
const-string v0, "itemView"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v0, 0x0
const v1, 0x7f0a0d4e
const/4 v2, 0x2
invoke-static {p1, v1, v0, v2, v0}, Lcom/vk/extensions/ViewExtKt;->a(Landroid/view/View;ILkotlin/jvm/b/Functions2;ILjava/lang/Object;)Landroid/view/View;
move-result-object p1
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/vk/newsfeed/holders/AdMarkHolder;->F:Landroid/widget/TextView;
return-void
.end method
# virtual methods
.method public b(Lcom/vk/dto/newsfeed/entries/NewsEntry;)V
.locals 4
.line 2
instance-of v0, p1, Lcom/vk/dto/newsfeed/entries/Post;
const/4 v1, 0x0
const/4 v2, 0x0
if-eqz v0, :cond_0
check-cast p1, Lcom/vk/dto/newsfeed/entries/Post;
invoke-virtual {p1}, Lcom/vk/dto/newsfeed/entries/Post;->L1()Z
move-result p1
if-eqz p1, :cond_2
const p1, 0x7f0808cf
const v0, 0x7f040256
.line 3
invoke-static {p1, v0}, Lcom/vk/core/ui/themes/VKThemeHelper;->a(II)Lcom/vk/core/drawable/RecoloredDrawable;
move-result-object p1
const v0, 0x7f120def
.line 4
invoke-virtual {p0, v0}, Lcom/vtosters/lite/ui/holder/RecyclerHolder;->m(I)Ljava/lang/String;
move-result-object v0
.line 5
invoke-virtual {p0}, Lcom/vtosters/lite/ui/holder/RecyclerHolder;->e0()Landroid/content/res/Resources;
move-result-object v1
const v3, 0x7f0701b8
invoke-virtual {v1, v3}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I
move-result v1
goto :goto_1
.line 6
:cond_0
instance-of v0, p1, Lcom/vk/dto/newsfeed/entries/PromoPost;
if-eqz v0, :cond_2
check-cast p1, Lcom/vk/dto/newsfeed/entries/PromoPost;
invoke-virtual {p1}, Lcom/vk/dto/newsfeed/entries/PromoPost;->E1()Ljava/lang/String;
move-result-object v0
invoke-interface {v0}, Ljava/lang/CharSequence;->length()I
move-result v0
if-lez v0, :cond_1
const/4 v0, 0x1
goto :goto_0
:cond_1
const/4 v0, 0x0
:goto_0
if-eqz v0, :cond_2
.line 7
invoke-virtual {p1}, Lcom/vk/dto/newsfeed/entries/PromoPost;->E1()Ljava/lang/String;
move-result-object p1
.line 8
invoke-virtual {p0}, Lcom/vtosters/lite/ui/holder/RecyclerHolder;->e0()Landroid/content/res/Resources;
move-result-object v0
const v1, 0x7f0701b9
invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I
move-result v1
move-object v0, p1
move-object p1, v2
goto :goto_1
:cond_2
move-object p1, v2
move-object v0, p1
.line 9
:goto_1
iget-object v3, p0, Lcom/vk/newsfeed/holders/AdMarkHolder;->F:Landroid/widget/TextView;
invoke-virtual {v3, p1, v2, v2, v2}, Landroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
.line 10
iget-object p1, p0, Lcom/vk/newsfeed/holders/AdMarkHolder;->F:Landroid/widget/TextView;
invoke-virtual {p1, v1}, Landroid/widget/TextView;->setMinHeight(I)V
.line 11
iget-object p1, p0, Lcom/vk/newsfeed/holders/AdMarkHolder;->F:Landroid/widget/TextView;
invoke-virtual {p1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
return-void
.end method
.method public bridge synthetic b(Ljava/lang/Object;)V
.locals 0
.line 1
check-cast p1, Lcom/vk/dto/newsfeed/entries/NewsEntry;
invoke-virtual {p0, p1}, Lcom/vk/newsfeed/holders/AdMarkHolder;->b(Lcom/vk/dto/newsfeed/entries/NewsEntry;)V
return-void
.end method