Compare commits

..
Author SHA1 Message Date
Artur Skubei 7dd646e72b Update build.yml 2024-09-06 15:55:34 +03:00
Artur Skubei c0b9c1dab0 fixed workflow compile 2024-09-06 15:42:04 +03:00
Artur Skubei 0fd631adfb Portuguese language support via MLT (#1466) 2024-07-23 02:48:01 +03:00
gdlbo 93edbf2d3d Revert "Update ProxyHostChecker.smali"
This reverts commit 5932d6f9dc.
2024-07-06 12:47:28 +03:00
gdlbo f39463f782 fixes 2024-06-22 01:09:54 +03:00
gdlbo 27b07719d9 fix music catalog 2024-06-21 20:59:46 +03:00
Vologhat c6cff1a585 fix #1619 (#1620) 2024-06-21 20:34:37 +03:00
gdlbo 5932d6f9dc Update ProxyHostChecker.smali 2024-04-15 01:42:06 +03:00
gdlbo 15bb5fa469 fixes 2024-04-15 01:39:13 +03:00
gdlbo fd17e2bc8c fixed groups load 2024-04-12 10:24:02 +03:00
gdlbo 4cd94d811c fix #1607 2024-04-12 10:08:57 +03:00
gdlbo f1ea800336 fixed profiles loading 2024-04-12 09:58:44 +03:00
Artur Skubei b20230848b Speedup cache injection (#1597) 2024-03-30 05:54:56 +03:00
16 changed files with 2344 additions and 1026 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
uses: nttld/setup-ndk@v1
with:
ndk-version: r25c
add-to-path: false
add-to-path: true
- name: Set up JDK
uses: actions/setup-java@v3
+2 -2
View File
@@ -4,7 +4,7 @@ import java.util.zip.ZipFile
plugins {
id 'com.android.application'
id 'net.nemerosa.versioning' version '2.15.1'
id 'net.nemerosa.versioning' version '3.1.0'
id 'org.mozilla.rust-android-gradle.rust-android'
}
@@ -95,7 +95,7 @@ dependencies {
implementation 'com.microsoft.appcenter:appcenter-crashes:5.0.4'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
implementation 'net.sourceforge.streamsupport:streamsupport-minifuture:1.7.4'
implementation 'com.google.guava:guava:32.0.0-android'
implementation 'com.google.guava:guava:33.2.1-android'
implementation 'com.mpatric:mp3agic:0.9.1'
@@ -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());
}
View File
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -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"
@@ -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"