Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f39463f782 | ||
|
|
27b07719d9 | ||
|
|
c6cff1a585 | ||
|
|
5932d6f9dc | ||
|
|
15bb5fa469 | ||
|
|
fd17e2bc8c | ||
|
|
4cd94d811c | ||
|
|
f1ea800336 |
@@ -0,0 +1,16 @@
|
||||
package ru.vtosters.hooks;
|
||||
|
||||
import com.vtosters.lite.api.execute.GetWallInfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Since June 12, 2024, there are troubles with API method "execute.getUserInfo" in the old versions of VK Client (<6.16),
|
||||
* to fix that issue we need to upgrade "execute.getUserInfo" for new API versions
|
||||
* and implement the new API method "newsfeed.getPostTopics" (TODO)*/
|
||||
@SuppressWarnings("unused")
|
||||
public class PostTopicsHook {
|
||||
public static void hook(final GetWallInfo.a model) throws Exception {
|
||||
model.f = new ArrayList<>();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import android.util.Log;
|
||||
import bruhcollective.itaysonlab.libvkx.client.LibVKXClient;
|
||||
import com.vk.core.network.Network;
|
||||
import com.vk.core.util.DeviceIdProvider;
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.JSONArray;
|
||||
@@ -58,7 +57,11 @@ public class CatalogJsonInjector {
|
||||
if (!MusicCacheImpl.isEmpty() && !LibVKXClient.isIntegrationEnabled()) { // inj in playlist list
|
||||
var noPlaylists = !json.has("playlists");
|
||||
|
||||
PlaylistHelper.addCachedPlaylists(json.optJSONArray("playlists"), noPlaylists);
|
||||
if (noPlaylists) {
|
||||
PlaylistHelper.addCachedPlaylists(new JSONArray());
|
||||
} else {
|
||||
PlaylistHelper.addCachedPlaylists(json.optJSONArray("playlists"));
|
||||
}
|
||||
|
||||
if (!useOldAppVer || noPlaylists) {
|
||||
var newBlocks = new JSONArray();
|
||||
@@ -99,7 +102,11 @@ public class CatalogJsonInjector {
|
||||
|
||||
var noPlaylists = !json.has("playlists");
|
||||
|
||||
PlaylistHelper.addCachedPlaylists(json.optJSONArray("playlists"), noPlaylists);
|
||||
if (noPlaylists) {
|
||||
PlaylistHelper.addCachedPlaylists(new JSONArray());
|
||||
} else {
|
||||
PlaylistHelper.addCachedPlaylists(json.optJSONArray("playlists"));
|
||||
}
|
||||
|
||||
if (!useOldAppVer && !noPlaylists) {
|
||||
var newBlocks = new JSONArray();
|
||||
@@ -213,10 +220,14 @@ public class CatalogJsonInjector {
|
||||
}
|
||||
}
|
||||
|
||||
private static void removeUnsupportedLayouts(JSONArray blocks) throws JSONException {
|
||||
private static void removeUnsupportedLayouts(JSONArray blocks) {
|
||||
for (int i = blocks.length() - 1; i >= 0; i--) {
|
||||
JSONObject block = blocks.optJSONObject(i);
|
||||
if (block == null) continue;
|
||||
|
||||
JSONObject layout = block.optJSONObject("layout");
|
||||
if (layout == null) continue;
|
||||
|
||||
String data_type = block.optString("data_type");
|
||||
|
||||
if (Objects.equals(data_type, "music_recommended_playlists") || Objects.equals(data_type, "radiostations")) {
|
||||
@@ -226,8 +237,6 @@ public class CatalogJsonInjector {
|
||||
continue; // Skip to the next iteration after removing
|
||||
}
|
||||
|
||||
if (layout == null) continue; // Skip to the next iteration if layout is null
|
||||
|
||||
String name = layout.optString("name");
|
||||
if (!name.equals("header_extended")) {
|
||||
continue; // Skip to the next iteration if not header_extended
|
||||
@@ -236,11 +245,14 @@ public class CatalogJsonInjector {
|
||||
if (layout.has("top_title")) {
|
||||
blocks.remove(i);
|
||||
}
|
||||
layout.put("name", "header");
|
||||
try {
|
||||
layout.put("name", "header");
|
||||
} catch (JSONException e) {
|
||||
e.fillInStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void setDefaultAudioPage(JSONArray jsonArray, JSONObject catalog) throws JSONException {
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
var item = jsonArray.optJSONObject(i);
|
||||
|
||||
@@ -165,12 +165,12 @@ public class TracklistInjector {
|
||||
boolean noPlaylists = hasNoPlaylists(blocks);
|
||||
|
||||
if (noPlaylists) {
|
||||
PlaylistHelper.addCachedPlaylists(catalogNode.optJSONArray("playlists"), true);
|
||||
PlaylistHelper.addCachedPlaylists(new JSONArray());
|
||||
|
||||
firstSection.put("blocks", createNewBlocks(blocks));
|
||||
} else {
|
||||
try {
|
||||
PlaylistHelper.addCachedPlaylists(catalogNode.optJSONArray("playlists"), false);
|
||||
PlaylistHelper.addCachedPlaylists(catalogNode.optJSONArray("playlists"));
|
||||
|
||||
updatePlaylistsIds(blocks);
|
||||
} catch (Exception e) {
|
||||
@@ -270,7 +270,7 @@ public class TracklistInjector {
|
||||
|
||||
return new JSONObject()
|
||||
.put("catalog", catalog)
|
||||
.put("playlists", addCachedPlaylists(new JSONArray(), false))
|
||||
.put("playlists", addCachedPlaylists(new JSONArray()))
|
||||
.put("audios", TracklistHelper.tracksToJsons(tracks));
|
||||
}
|
||||
|
||||
|
||||
@@ -23,12 +23,8 @@ public class PlaylistHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static JSONArray addCachedPlaylists(JSONArray jsonArray, Boolean noPlaylists) {
|
||||
public static JSONArray addCachedPlaylists(JSONArray jsonArray) {
|
||||
try {
|
||||
if (noPlaylists) {
|
||||
jsonArray.put(new JSONArray());
|
||||
}
|
||||
|
||||
if (!PlaylistCacheDbDelegate.isPlaylistEmpty(AndroidUtils.getGlobalContext(), AccountManagerUtils.getUserId() + "_-1")) {
|
||||
jsonArray.put(getCachedSongsPlaylist());
|
||||
}
|
||||
|
||||
Executable → Regular
Executable → Regular
@@ -474,7 +474,7 @@
|
||||
invoke-virtual {p1, v1, v0}, Ljava/net/HttpURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
|
||||
|
||||
.line 15
|
||||
const-string v0, "C8EAB7342DA62B4A229E1BFDEB27B029DD6788A1"
|
||||
const-string v0, "48761EEF50EE53AFC4CC9C5F10E6BDE7F8F5B82F"
|
||||
|
||||
const-string v1, "X-Android-Cert"
|
||||
|
||||
|
||||
@@ -30,20 +30,22 @@
|
||||
.method private final e()Z
|
||||
.locals 3
|
||||
|
||||
.line 1
|
||||
sget-object v0, Lcom/vk/core/util/AppContextHolder;->a:Landroid/content/Context;
|
||||
# .line 1
|
||||
# sget-object v0, Lcom/vk/core/util/AppContextHolder;->a:Landroid/content/Context;
|
||||
|
||||
invoke-static {v0}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
|
||||
# invoke-static {v0}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
|
||||
|
||||
move-result-object v0
|
||||
# move-result-object v0
|
||||
|
||||
const-string v1, "__dbg_proxy_enable"
|
||||
# const-string v1, "__dbg_proxy_enable"
|
||||
|
||||
const/4 v2, 0x0
|
||||
# const/4 v2, 0x0
|
||||
|
||||
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
|
||||
# invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
|
||||
|
||||
move-result v0
|
||||
# move-result v0
|
||||
|
||||
const v0, 0x1
|
||||
|
||||
return v0
|
||||
.end method
|
||||
|
||||
@@ -194,6 +194,8 @@
|
||||
|
||||
move-result v0
|
||||
|
||||
const v0, 0x0
|
||||
|
||||
if-eqz v0, :cond_2
|
||||
|
||||
const/4 v0, 0x1
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
const-string v0, "func_v"
|
||||
|
||||
const/16 v1, 0x1b
|
||||
const/16 v1, 0x25
|
||||
|
||||
.line 3
|
||||
invoke-virtual {p0, v0, v1}, Lcom/vk/api/base/ApiRequest;->b(Ljava/lang/String;I)Lcom/vk/api/base/ApiRequest;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
.line 3
|
||||
invoke-virtual {p0, v0, p1}, Lcom/vk/api/base/ApiRequest;->b(Ljava/lang/String;I)Lcom/vk/api/base/ApiRequest;
|
||||
|
||||
const/16 v0, 0xb
|
||||
const/16 v0, 0x17
|
||||
|
||||
const-string v1, "func_v"
|
||||
|
||||
@@ -476,89 +476,89 @@
|
||||
|
||||
invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
|
||||
|
||||
const-string v4, "cities"
|
||||
# const-string v4, "cities"
|
||||
|
||||
.line 20
|
||||
invoke-virtual {v1, v4}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
# .line 20
|
||||
# invoke-virtual {v1, v4}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
|
||||
move-result-object v4
|
||||
# move-result-object v4
|
||||
|
||||
const/4 v9, 0x0
|
||||
# const/4 v9, 0x0
|
||||
|
||||
.line 21
|
||||
:goto_3
|
||||
invoke-virtual {v4}, Lorg/json/JSONArray;->length()I
|
||||
# .line 21
|
||||
# :goto_3
|
||||
# invoke-virtual {v4}, Lorg/json/JSONArray;->length()I
|
||||
|
||||
move-result v10
|
||||
# move-result v10
|
||||
|
||||
const-string v11, "title"
|
||||
|
||||
if-ge v9, v10, :cond_4
|
||||
# if-ge v9, v10, :cond_4
|
||||
|
||||
.line 22
|
||||
invoke-virtual {v4, v9}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
|
||||
# .line 22
|
||||
# invoke-virtual {v4, v9}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object v10
|
||||
# move-result-object v10
|
||||
|
||||
.line 23
|
||||
invoke-virtual {v10, v3}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
|
||||
# .line 23
|
||||
# invoke-virtual {v10, v3}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
|
||||
|
||||
move-result v12
|
||||
# move-result v12
|
||||
|
||||
invoke-virtual {v10, v11}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
||||
# invoke-virtual {v10, v11}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v10
|
||||
# move-result-object v10
|
||||
|
||||
invoke-virtual {v2, v12, v10}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
|
||||
# invoke-virtual {v2, v12, v10}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
|
||||
|
||||
add-int/lit8 v9, v9, 0x1
|
||||
# add-int/lit8 v9, v9, 0x1
|
||||
|
||||
goto :goto_3
|
||||
# goto :goto_3
|
||||
|
||||
.line 24
|
||||
:cond_4
|
||||
new-instance v4, Landroid/util/SparseArray;
|
||||
# .line 24
|
||||
# :cond_4
|
||||
# new-instance v4, Landroid/util/SparseArray;
|
||||
|
||||
invoke-direct {v4}, Landroid/util/SparseArray;-><init>()V
|
||||
# invoke-direct {v4}, Landroid/util/SparseArray;-><init>()V
|
||||
|
||||
const-string v9, "cities"
|
||||
# const-string v9, "cities"
|
||||
|
||||
.line 25
|
||||
invoke-virtual {v1, v9}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
# .line 25
|
||||
# invoke-virtual {v1, v9}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
|
||||
move-result-object v9
|
||||
# move-result-object v9
|
||||
|
||||
const/4 v10, 0x0
|
||||
# const/4 v10, 0x0
|
||||
|
||||
.line 26
|
||||
:goto_4
|
||||
invoke-virtual {v9}, Lorg/json/JSONArray;->length()I
|
||||
# .line 26
|
||||
# :goto_4
|
||||
# invoke-virtual {v9}, Lorg/json/JSONArray;->length()I
|
||||
|
||||
move-result v12
|
||||
# move-result v12
|
||||
|
||||
if-ge v10, v12, :cond_5
|
||||
# if-ge v10, v12, :cond_5
|
||||
|
||||
.line 27
|
||||
invoke-virtual {v9, v10}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
|
||||
# .line 27
|
||||
# invoke-virtual {v9, v10}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
|
||||
|
||||
move-result-object v12
|
||||
# move-result-object v12
|
||||
|
||||
.line 28
|
||||
invoke-virtual {v12, v3}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
|
||||
# .line 28
|
||||
# invoke-virtual {v12, v3}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
|
||||
|
||||
move-result v13
|
||||
# move-result v13
|
||||
|
||||
invoke-virtual {v12, v11}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
||||
# invoke-virtual {v12, v11}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
|
||||
|
||||
move-result-object v12
|
||||
# move-result-object v12
|
||||
|
||||
invoke-virtual {v4, v13, v12}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
|
||||
# invoke-virtual {v4, v13, v12}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
|
||||
|
||||
add-int/lit8 v10, v10, 0x1
|
||||
# add-int/lit8 v10, v10, 0x1
|
||||
|
||||
goto :goto_4
|
||||
# goto :goto_4
|
||||
|
||||
:cond_5
|
||||
# :cond_5
|
||||
const-string v4, "can_write_private_message"
|
||||
|
||||
.line 29
|
||||
|
||||
@@ -285,7 +285,8 @@
|
||||
|
||||
const-string p1, "func_v"
|
||||
|
||||
const/16 v0, 0x15
|
||||
#upgrade func_v to 0x16 to fix issue related with outdated gettings of post topics
|
||||
const/16 v0, 0x16
|
||||
|
||||
.line 9
|
||||
invoke-virtual {p0, p1, v0}, Lcom/vk/api/base/ApiRequest;->b(Ljava/lang/String;I)Lcom/vk/api/base/ApiRequest;
|
||||
@@ -385,6 +386,7 @@
|
||||
.end annotation
|
||||
.end param
|
||||
|
||||
|
||||
const/4 v0, 0x0
|
||||
|
||||
:try_start_0
|
||||
@@ -503,18 +505,22 @@
|
||||
|
||||
iput-object v1, v3, Lcom/vtosters/lite/api/execute/GetWallInfo$a;->e:Lcom/vk/auth/api/AccountPhoneVerify;
|
||||
|
||||
const-string v1, "post_topics"
|
||||
invoke-static {v3}, Lru/vtosters/hooks/PostTopicsHook;->hook(Lcom/vtosters/lite/api/execute/GetWallInfo$a;)V
|
||||
|
||||
.line 17
|
||||
invoke-virtual {p1, v1}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
# const-string v1, "post_topics"
|
||||
|
||||
move-result-object v1
|
||||
# .line 17
|
||||
# invoke-virtual {p1, v1}, Lorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
|
||||
|
||||
invoke-static {v1}, Lcom/vk/dto/newsfeed/PostTopic;->a(Lorg/json/JSONArray;)Ljava/util/List;
|
||||
# move-result-object v1
|
||||
|
||||
# invoke-static {v1}, Lcom/vk/dto/newsfeed/PostTopic;->a(Lorg/json/JSONArray;)Ljava/util/List;
|
||||
|
||||
# move-result-object v1
|
||||
|
||||
# iput-object v1, v3, Lcom/vtosters/lite/api/execute/GetWallInfo$a;->f:Ljava/util/List;
|
||||
|
||||
move-result-object v1
|
||||
|
||||
iput-object v1, v3, Lcom/vtosters/lite/api/execute/GetWallInfo$a;->f:Ljava/util/List;
|
||||
|
||||
const-string v1, "special_events"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user