vkx playlist caching

This commit is contained in:
gdlbo
2022-09-20 20:25:23 +03:00
parent 529d4afb3b
commit 63b97d280b
3 changed files with 49 additions and 1 deletions
@@ -27,4 +27,7 @@ interface ILibVkxService {
String getCacheCatalog() = 11;
List<String> 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;
}
@@ -81,9 +81,16 @@ public class MusicBottomSheetHook {
}
public static ArrayList<MusicAction> hook(ArrayList<MusicAction> 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 -> {
@@ -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