diff --git a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl index 206767f80..59b0188d6 100644 --- a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl +++ b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl @@ -23,7 +23,8 @@ interface ILibVkxService { void addPlaylistToCache(in int playlist_id, in int owner_id, in String access_key) = 9; void deletePlaylistFromCache(in int playlist_id, in int owner_id) = 10; - // Get cached library in Catalog2-like JSON + // [ver 1.2] String getCacheCatalog() = 11; List getTracksInPlaylist(in String playlist_id, in String owner_id) = 12; + String getPlaylistDefJson(in String playlist_id, in String owner_id) = 13; } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java index d2dde9824..5dba00286 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java @@ -48,7 +48,7 @@ public class PlaylistInjector { var id = requestArgs.get("id"); var ownerId = requestArgs.get("owner_id"); var accessKey = requestArgs.get("access_key"); - boolean isVirtualPlaylist = accessKey != null && (accessKey.equals("vkx") || accessKey.equals("cache")); + boolean isVirtualPlaylist = accessKey != null && (accessKey.equals("cache")); boolean isAlbumVirtualPlaylist = accessKey != null && (accessKey.equals("cacheAlbum")); Log.d("PlaylistInjector", "id = " + id + " / owner = " + ownerId + " / access = " + accessKey + " / " + isVirtualPlaylist + " + " + isAlbumVirtualPlaylist); @@ -58,15 +58,25 @@ public class PlaylistInjector { return Observable.a((ObservableOnSubscribe) observableEmitter -> { AudioGetPlaylist.c response = new AudioGetPlaylist.c(); + if (LibVKXClient.isIntegrationEnabled()) { - response.b = PlaylistHelper.createCachedPlaylistMetadata(); LibVKXClient.getInstance().runOnService((service) -> { try { - List cache = service.getTracksInPlaylist(id, ownerId); + List cache; ArrayList tracks = new ArrayList<>(); + + if (isAlbumVirtualPlaylist) { + response.b = new Playlist(new JSONObject(service.getPlaylistDefJson(id, ownerId))); + cache = service.getTracksInPlaylist(id, ownerId); + } else { + response.b = PlaylistHelper.createCachedPlaylistMetadata(); + cache = service.getCache(); + } + for (String json : cache) { tracks.add(new MusicTrack(new JSONObject(json))); } + response.c = tracks; } catch (RemoteException | JSONException e) { e.printStackTrace(); @@ -74,6 +84,7 @@ public class PlaylistInjector { } observableEmitter.b(response); }); + return; }