diff --git a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java index bf94c93f1..d879c26d3 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -8,6 +8,7 @@ import static ru.vtosters.lite.utils.Base64Utils.decode; import static ru.vtosters.lite.utils.Globals.getContext; import static ru.vtosters.lite.utils.Globals.getPrefsValue; import static ru.vtosters.lite.utils.Globals.getUserToken; +import static ru.vtosters.lite.utils.Preferences.adsstories; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.friendsblock; import static ru.vtosters.lite.utils.Preferences.getBoolValue; @@ -153,6 +154,58 @@ public class JsonInjectors{ return json; } + public static JSONObject storiesads(JSONObject json, boolean isDeleteFix) throws JSONException{ + var oldItems = json.optJSONArray("items"); + var newItems2 = new JSONArray(); + + if (!adsstories()) { + return json; + } + + if (json.has("ads")) { + if (isDeleteFix) { + var ad = json.optJSONObject("ads"); + ad.put("stories_interval", 0); + ad.put("authors_interval", 0); + ad.put("time_interval", 0); + ad.put("stories_init", 0); + ad.put("authors_init", 0); + ad.put("time_init", 0); + Log.d("StoriesAds", "Set ads at zero val"); + } else { + json.remove("ads"); + Log.d("StoriesAds", "Removed ads"); + } + } + + if (json.has("items")) { + for (int i = 0; i < oldItems.length(); i++) { + var item = oldItems.optJSONObject(i).optJSONArray("stories"); + if (item != null) { + for (int j = 0; j < item.length(); j++) { + var item2 = item.optJSONObject(j); + var type = item2.optBoolean("is_ads"); + var promo = item2.optBoolean("is_promo"); + + if (!type && !promo) { + newItems2.put(item.optJSONObject(j)); + } else { + Log.d("StoriesAds", "Fetched ad " + item2.optString("id")); + } + } + + try { + oldItems.optJSONObject(i).put("stories", newItems2); + } catch (JSONException e) { + Log.e("StoriesAds", e.getMessage()); + } + } + } + } + + return json; + } + public static JSONObject music(JSONObject json) throws JSONException{ var catalog = json.optJSONObject("catalog"); diff --git a/smali/smali_classes2/com/vk/api/stories/StoriesAddBan.smali b/smali/smali_classes2/com/vk/api/stories/StoriesAddBan.smali index 598b6ee6a..364eb3fa3 100644 --- a/smali/smali_classes2/com/vk/api/stories/StoriesAddBan.smali +++ b/smali/smali_classes2/com/vk/api/stories/StoriesAddBan.smali @@ -40,7 +40,7 @@ # virtual methods .method public a(Lorg/json/JSONObject;)Lcom/vk/dto/stories/model/GetStoriesResponse; - .locals 1 + .locals 2 .param p1 # Lorg/json/JSONObject; .annotation build Landroidx/annotation/NonNull; .end annotation @@ -57,7 +57,9 @@ .line 3 new-instance v0, Lcom/vk/dto/stories/model/GetStoriesResponse; - invoke-direct {v0, p1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;)V + const v1, 0x1 + + invoke-direct {v0, p1, v1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;Z)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 diff --git a/smali/smali_classes2/com/vk/api/stories/StoriesDelete.smali b/smali/smali_classes2/com/vk/api/stories/StoriesDelete.smali index 4ad503a6e..28326205c 100644 --- a/smali/smali_classes2/com/vk/api/stories/StoriesDelete.smali +++ b/smali/smali_classes2/com/vk/api/stories/StoriesDelete.smali @@ -51,7 +51,7 @@ # virtual methods .method public a(Lorg/json/JSONObject;)Lcom/vk/dto/stories/model/GetStoriesResponse; - .locals 1 + .locals 2 .param p1 # Lorg/json/JSONObject; .annotation build Landroidx/annotation/NonNull; .end annotation @@ -68,7 +68,9 @@ .line 3 new-instance v0, Lcom/vk/dto/stories/model/GetStoriesResponse; - invoke-direct {v0, p1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;)V + const v1, 0x1 + + invoke-direct {v0, p1, v1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;Z)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 diff --git a/smali/smali_classes2/com/vk/api/stories/StoriesDeleteBan.smali b/smali/smali_classes2/com/vk/api/stories/StoriesDeleteBan.smali index 9e6b2286f..6ae7e4ead 100644 --- a/smali/smali_classes2/com/vk/api/stories/StoriesDeleteBan.smali +++ b/smali/smali_classes2/com/vk/api/stories/StoriesDeleteBan.smali @@ -40,7 +40,7 @@ # virtual methods .method public a(Lorg/json/JSONObject;)Lcom/vk/dto/stories/model/GetStoriesResponse; - .locals 1 + .locals 2 .param p1 # Lorg/json/JSONObject; .annotation build Landroidx/annotation/NonNull; .end annotation @@ -57,7 +57,9 @@ .line 3 new-instance v0, Lcom/vk/dto/stories/model/GetStoriesResponse; - invoke-direct {v0, p1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;)V + const v1, 0x1 + + invoke-direct {v0, p1, v1}, Lcom/vk/dto/stories/model/GetStoriesResponse;->(Lorg/json/JSONObject;Z)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 diff --git a/smali/smali_classes2/com/vk/dto/stories/model/GetStoriesResponse.smali b/smali/smali_classes2/com/vk/dto/stories/model/GetStoriesResponse.smali index 03044f946..e92282918 100644 --- a/smali/smali_classes2/com/vk/dto/stories/model/GetStoriesResponse.smali +++ b/smali/smali_classes2/com/vk/dto/stories/model/GetStoriesResponse.smali @@ -205,9 +205,203 @@ return-void .end method +.method public constructor (Lorg/json/JSONObject;Z)V + .locals 7 + + invoke-static {p1, p2}, Lru/vtosters/lite/hooks/JsonInjectors;->storiesads(Lorg/json/JSONObject;Z)Lorg/json/JSONObject; + + move-result-object p1 + + .line 16 + invoke-direct {p0}, Lcom/vk/core/serialize/Serializer$StreamParcelableAdapter;->()V + + .line 17 + new-instance v0, Ljava/util/ArrayList; + + invoke-direct {v0}, Ljava/util/ArrayList;->()V + + iput-object v0, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->b:Ljava/util/ArrayList; + + const/4 v0, 0x0 + + const/4 v1, 0x0 + + if-nez p1, :cond_0 + + .line 18 + iput v0, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->a:I + + .line 19 + iput-object v1, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->c:Lcom/vk/dto/stories/model/StoriesAds; + + goto/16 :goto_3 + + :cond_0 + const-string v2, "need_upload_screen" + + .line 20 + invoke-virtual {p1, v2, v0}, Lorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z + + move-result v2 + + const-string v3, "count" + + .line 21 + invoke-virtual {p1, v3}, Lorg/json/JSONObject;->optInt(Ljava/lang/String;)I + + move-result v3 + + if-nez v3, :cond_1 + + goto :goto_0 + + :cond_1 + move v0, v2 + + :goto_0 + if-eqz v0, :cond_2 + + .line 22 + iget v2, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->d:I + + add-int/lit8 v2, v2, 0x1 + + iput v2, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->d:I + + :cond_2 + add-int/2addr v3, v0 + + .line 23 + iput v3, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->a:I + + .line 24 + new-instance v2, Landroid/util/SparseArray; + + invoke-direct {v2}, Landroid/util/SparseArray;->()V + + const-string v3, "profiles" + + .line 25 + invoke-virtual {p1, v3}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; + + move-result-object v3 + + invoke-direct {p0, v2, v3}, Lcom/vk/dto/stories/model/GetStoriesResponse;->b(Landroid/util/SparseArray;Lorg/json/JSONArray;)V + + .line 26 + new-instance v3, Landroid/util/SparseArray; + + invoke-direct {v3}, Landroid/util/SparseArray;->()V + + const-string v4, "groups" + + .line 27 + invoke-virtual {p1, v4}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; + + move-result-object v4 + + invoke-direct {p0, v3, v4}, Lcom/vk/dto/stories/model/GetStoriesResponse;->a(Landroid/util/SparseArray;Lorg/json/JSONArray;)V + + const-string v4, "items" + + .line 28 + invoke-virtual {p1, v4}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; + + move-result-object v5 + + iget-object v6, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->b:Ljava/util/ArrayList; + + invoke-static {v5, v6, v2, v3}, Lcom/vk/dto/stories/model/GetStoriesResponse;->a(Lorg/json/JSONArray;Ljava/util/Collection;Landroid/util/SparseArray;Landroid/util/SparseArray;)V + + invoke-static {}, Lru/vtosters/lite/hooks/StoriesHook;->ads()Ljava/lang/String; + + move-result-object v5 + + .line 29 + invoke-virtual {p1, v5}, Lorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; + + move-result-object p1 + + if-eqz p1, :cond_4 + + .line 30 + sget-object v5, Lcom/vk/dto/stories/model/StoriesAds$Settings;->h:Lcom/vk/dto/stories/model/StoriesAds$Settings$a; + + const-string v6, "settings" + + invoke-virtual {p1, v6}, Lorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; + + move-result-object v6 + + invoke-virtual {v5, v6}, Lcom/vk/dto/stories/model/StoriesAds$Settings$a;->a(Lorg/json/JSONObject;)Lcom/vk/dto/stories/model/StoriesAds$Settings; + + move-result-object v5 + + .line 31 + new-instance v6, Ljava/util/ArrayList; + + invoke-direct {v6}, Ljava/util/ArrayList;->()V + + .line 32 + invoke-virtual {p1, v4}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; + + move-result-object p1 + + invoke-static {p1, v6, v2, v3}, Lcom/vk/dto/stories/model/GetStoriesResponse;->a(Lorg/json/JSONArray;Ljava/util/Collection;Landroid/util/SparseArray;Landroid/util/SparseArray;)V + + if-eqz v5, :cond_3 + + .line 33 + new-instance p1, Lcom/vk/dto/stories/model/StoriesAds; + + invoke-direct {p1, v5, v6}, Lcom/vk/dto/stories/model/StoriesAds;->(Lcom/vk/dto/stories/model/StoriesAds$Settings;Ljava/util/List;)V + + goto :goto_1 + + :cond_3 + move-object p1, v1 + + :goto_1 + iput-object p1, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->c:Lcom/vk/dto/stories/model/StoriesAds; + + goto :goto_2 + + .line 34 + :cond_4 + iput-object v1, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->c:Lcom/vk/dto/stories/model/StoriesAds; + + :goto_2 + if-eqz v0, :cond_5 + + .line 35 + new-instance p1, Lcom/vk/dto/stories/model/PublishStoryEntry; + + invoke-direct {p1}, Lcom/vk/dto/stories/model/PublishStoryEntry;->()V + + .line 36 + new-instance v0, Lcom/vk/dto/stories/model/PublishStoryContainer; + + invoke-direct {v0, v1, p1}, Lcom/vk/dto/stories/model/PublishStoryContainer;->(Lcom/vk/dto/stories/model/StoryOwner;Lcom/vk/dto/stories/model/PublishStoryEntry;)V + + .line 37 + iget-object p1, p0, Lcom/vk/dto/stories/model/GetStoriesResponse;->b:Ljava/util/ArrayList; + + invoke-virtual {p1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z + + :cond_5 + :goto_3 + return-void +.end method + .method public constructor (Lorg/json/JSONObject;)V .locals 7 + const v0, 0x0 + + invoke-static {p1, v0}, Lru/vtosters/lite/hooks/JsonInjectors;->storiesads(Lorg/json/JSONObject;Z)Lorg/json/JSONObject; + + move-result-object p1 + .line 16 invoke-direct {p0}, Lcom/vk/core/serialize/Serializer$StreamParcelableAdapter;->()V