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 053ad9640..10a99f8d4 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -288,15 +288,24 @@ public class JsonInjectors { var isUsersCatalog = section.optString("url").contains("https://vk.com/audios" + getUserId() + "?section=" + (useOldAppVer ? "all" : "general")); if (isUsersCatalog && CacheDatabaseDelegate.hasTracks() && !LibVKXClient.isIntegrationEnabled()) { - try { - json.optJSONArray("playlists").put(getPlaylist()); - } catch (Exception e) { - Log.d("catalogInjector", e.toString()); + var blocks = section.getJSONArray("blocks"); + var noPlaylists = blocks.optJSONObject(0).optJSONArray("buttons").optJSONObject(0).optJSONObject("action").optString("type").equals("create_playlist"); + + Log.d("catalogInjector", "type: " + blocks.optJSONObject(0).optJSONArray("buttons").optJSONObject(0).optJSONObject("action").optString("type")); + + if (noPlaylists) { + json.put("playlists", new JSONArray().put(getPlaylist())); + Log.d("catalogInjector", "added new pl"); + } else { + try { + json.optJSONArray("playlists").put(getPlaylist()); + Log.d("catalogInjector", "added to exist pl"); + } catch (Exception e) { + Log.d("catalogInjector", e.toString()); + } } - var blocks = section.getJSONArray("blocks"); - - if (!useOldAppVer) { + if (!useOldAppVer || noPlaylists) { var newBlocks = new JSONArray(); newBlocks @@ -556,9 +565,23 @@ public class JsonInjectors { } if (CacheDatabaseDelegate.hasTracks() && !LibVKXClient.isIntegrationEnabled()) { // inj in playlist list - json.optJSONArray("playlists").put(getPlaylist()); + var noPlaylists = blocks.optJSONObject(0).optJSONArray("buttons").optJSONObject(0).optJSONObject("action").optString("type").equals("create_playlist"); - if (!getBoolValue("useOldAppVer", false)) { + Log.d("catalogInjector", "type: " + blocks.optJSONObject(0).optJSONArray("buttons").optJSONObject(0).optJSONObject("action").optString("type")); + + if (noPlaylists) { + json.put("playlists", new JSONArray().put(getPlaylist())); + Log.d("catalogInjector", "added new pl"); + } else { + try { + json.optJSONArray("playlists").put(getPlaylist()); + Log.d("catalogInjector", "added to exist pl"); + } catch (Exception e) { + Log.d("catalogInjector", e.toString()); + } + } + + if (!getBoolValue("useOldAppVer", false) || noPlaylists) { var newBlocks = new JSONArray(); newBlocks diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java index 88fb830af..3f287fcf5 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java @@ -1,6 +1,9 @@ package ru.vtosters.lite.music.cache.injectors; import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.hasTracks; +import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogHeader; +import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogPlaylist; +import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogSeparator; import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getPlaylist; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; @@ -88,24 +91,51 @@ public class TracklistInjector { var blocks = firstSection.getJSONArray("blocks"); if (CacheDatabaseDelegate.hasTracks() && !LibVKXClient.isIntegrationEnabled()) { // inj in playlist list - catalogNode.optJSONArray("playlists").put(getPlaylist()); + var noPlaylists = blocks.optJSONObject(0).optJSONArray("buttons").optJSONObject(0).optJSONObject("action").optString("type").equals("create_playlist"); - for (int i = 0; i < blocks.length(); i++) { - var j = blocks.optJSONObject(i); - var type = j.optString("data_type"); + if (noPlaylists) { + catalogNode.put("playlists", new JSONArray().put(getPlaylist())); + Log.d("catalogInjector", "added new pl"); - if (type.equals("music_playlists") && j.has("playlists_ids")) { - var newarr = new JSONArray(); - var playlists_ids = j.optJSONArray("playlists_ids"); + var newBlocks = new JSONArray(); - newarr.put(getUserId() + "_-1"); + newBlocks + .put(getCatalogHeader()) + .put(getCatalogPlaylist()) + .put(getCatalogSeparator()); - for (int n = 0; n < playlists_ids.length(); n++) { - newarr.put(playlists_ids.optString(n)); + Log.d("catalogInjector", "added cache catalog playlist"); + + for (int i = 0; i < blocks.length(); i++) { + newBlocks.put(blocks.optJSONObject(i)); + } + + firstSection.put("blocks", newBlocks); + } else { + try { + catalogNode.optJSONArray("playlists").put(getPlaylist()); + Log.d("catalogInjector", "added to exist pl"); + + for (int i = 0; i < blocks.length(); i++) { + var j = blocks.optJSONObject(i); + var type = j.optString("data_type"); + + if (type.equals("music_playlists") && j.has("playlists_ids")) { + var newarr = new JSONArray(); + var playlists_ids = j.optJSONArray("playlists_ids"); + + newarr.put(getUserId() + "_-1"); + + for (int n = 0; n < playlists_ids.length(); n++) { + newarr.put(playlists_ids.optString(n)); + } + + j.put("playlists_ids", newarr); + break; + } } - - j.put("playlists_ids", newarr); - break; + } catch (Exception e) { + Log.d("catalogInjector", e.toString()); } } }