From 63b97d280b50a8fd0179b6dfcae6e9a5edc464e9 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Tue, 20 Sep 2022 20:25:23 +0300 Subject: [PATCH] vkx playlist caching --- .../itaysonlab/libvkx/ILibVkxService.aidl | 3 ++ .../lite/hooks/ui/MusicBottomSheetHook.java | 29 ++++++++++++++++++- .../music/cache/CacheDatabaseDelegate.java | 18 ++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl index 59b0188d6..7cb0e55ef 100644 --- a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl +++ b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl @@ -27,4 +27,7 @@ interface ILibVkxService { 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; + + // [ver 1.3] + boolean isPlaylistCached(in int playlist_id, in int owner_id) = 14; } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java index 15a122a13..45d04b975 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java @@ -81,9 +81,16 @@ public class MusicBottomSheetHook { } public static ArrayList hook(ArrayList actions, Playlist playlist) { - if (isVkxInstalled()) + if (isVkxInstalled()) { actions.add(getPlayInVKXAction()); + if (isVkxCached(playlist.a, playlist.b)){ + actions.add(getRemoveCacheTrackVkxAction()); + } else { + actions.add(addToCacheTrackVkxAction()); + } + } + actions.add(addToCacheTrackAction()); if (isNetworkConnected()){ @@ -145,6 +152,26 @@ public class MusicBottomSheetHook { return true; } + if (actionId == AndroidUtils.getIdentifier("remove_from_cache_vkx", "id")) { + LibVKXClient.getInstance().runOnService(service -> { + try { + service.deletePlaylistFromCache(playlist.a, playlist.b); + } catch (RemoteException e) { + e.printStackTrace(); + } + }); + return true; + } else if (actionId == AndroidUtils.getIdentifier("add_to_cache_vkx", "id")) { + LibVKXClient.getInstance().runOnService(service -> { + try { + service.addPlaylistToCache(playlist.a, playlist.b, (playlist.Q != null) ? playlist.Q : ""); + } catch (RemoteException e) { + e.printStackTrace(); + } + }); + return true; + } + if (actionId == AndroidUtils.getIdentifier("download_mp3", "id")) { if (LibVKXClient.isIntegrationEnabled()) { LibVKXClient.getInstance().runOnService(service -> { diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java b/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java index 11d22191c..a3c7dd5f0 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java @@ -251,6 +251,24 @@ public class CacheDatabaseDelegate { return false; } + public static boolean isVkxCached(int playlist_id, int owner_id) { + return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>(){ + @Override + public Boolean run(ILibVkxService service){ + try { + return service.isPlaylistCached(playlist_id, owner_id); + } catch (RemoteException e) { + return false; + } + } + + @Override + public Boolean defaultValue(){ + return false; + } + }); + } + public static boolean isVkxCached(String trackId) { return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>(){ @Override