From 2dec7b28f43d9f28cfd8c94551788850939717f9 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 16 Sep 2022 20:16:20 +0300 Subject: [PATCH] vkx lib update + vkx cache dev --- .../itaysonlab/libvkx/ILibVkxService.aidl | 28 ++ .../itaysonlab/libvkx/ILibVkxService.java | 340 ------------------ .../music/cache/CacheDatabaseDelegate.java | 16 +- .../cache/injectors/TracklistInjector.java | 18 +- 4 files changed, 40 insertions(+), 362 deletions(-) create mode 100644 app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl delete mode 100644 app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java diff --git a/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl new file mode 100644 index 000000000..eb4c846f2 --- /dev/null +++ b/app/src/main/aidl/bruhcollective/itaysonlab/libvkx/ILibVkxService.aidl @@ -0,0 +1,28 @@ +// IVKExternalMusic.aidl +package bruhcollective.itaysonlab.libvkx; + +interface ILibVkxService { + // Starts playback. playbackContext can be "other" if you don't sure what it is + void play(in List audio_ids, in int index, in String playbackContext) = 1; + + // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! + int getUserId() = 2; + + // Cache add/remove + void addTrackToCache(in int track_id, in int owner_id, in String access_key) = 3; + void deleteTrackFromCache(in int track_id, in int owner_id) = 4; + boolean isTrackCached(in int track_id, in int owner_id) = 5; + + // Get a list of cached tracks. The response is close to VK's original response (an audio list) + // Also, the items in the list are JSON ones. + List getCache() = 6; + + // [ver 1.1] + void downloadTrack(in int track_id, in int owner_id, in String access_key) = 7; + void downloadPlaylist(in int playlist_id, in int owner_id, in String access_key) = 8; + 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 + String getCacheCatalog() = 11; +} \ No newline at end of file diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java deleted file mode 100644 index 0de1327b3..000000000 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/ILibVkxService.java +++ /dev/null @@ -1,340 +0,0 @@ -/* - * This file is auto-generated. DO NOT MODIFY. - */ -package bruhcollective.itaysonlab.libvkx; - -// Works only with original signature of VT - -public interface ILibVkxService extends android.os.IInterface { - void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException; - - int getUserId() throws android.os.RemoteException; - // Starts playback. playbackContext can be "other" if you don't sure what it is - - void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException; - // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! - - void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException; - // Cache add/remove - - boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException; - - java.util.List getCache() throws android.os.RemoteException; - - /** - * Default implementation for ILibVkxService. - */ - class Default implements ILibVkxService { - // Starts playback. playbackContext can be "other" if you don't sure what it is - - @Override - public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException { - } - // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! - - @Override - public int getUserId() throws android.os.RemoteException { - return 0; - } - // Cache add/remove - - @Override - public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException { - } - - @Override - public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException { - } - - @Override - public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException { - return false; - } - // Get a list of cached tracks. The response is close to VK's original response (an audio list) - // Also, the items in the list are JSON ones. - - @Override - public java.util.List getCache() throws android.os.RemoteException { - return null; - } - - @Override - public android.os.IBinder asBinder() { - return null; - } - } - // Get a list of cached tracks. The response is close to VK's original response (an audio list) - // Also, the items in the list are JSON ones. - - /** - * Local-side IPC implementation stub class. - */ - abstract class Stub extends android.os.Binder implements ILibVkxService { - static final int TRANSACTION_play = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); - static final int TRANSACTION_getUserId = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); - static final int TRANSACTION_addTrackToCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); - static final int TRANSACTION_deleteTrackFromCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); - static final int TRANSACTION_isTrackCached = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); - static final int TRANSACTION_getCache = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); - private static final String DESCRIPTOR = "bruhcollective.itaysonlab.libvkx.ILibVkxService"; - - /** - * Construct the stub at attach it to the interface. - */ - public Stub() { - this.attachInterface(this, DESCRIPTOR); - } - - /** - * Cast an IBinder object into an bruhcollective.itaysonlab.libvkx.ILibVkxService interface, - * generating a proxy if needed. - */ - public static ILibVkxService asInterface(android.os.IBinder obj) { - if ((obj == null)) { - return null; - } - android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR); - if (((iin != null) && (iin instanceof ILibVkxService))) { - return ((ILibVkxService) iin); - } - return new Proxy(obj); - } - - public static boolean setDefaultImpl(ILibVkxService impl) { - if (Proxy.sDefaultImpl == null && impl != null) { - Proxy.sDefaultImpl = impl; - return true; - } - return false; - } - - public static ILibVkxService getDefaultImpl() { - return Proxy.sDefaultImpl; - } - - @Override - public android.os.IBinder asBinder() { - return this; - } - - @Override - public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException { - String descriptor = DESCRIPTOR; - switch (code) { - case INTERFACE_TRANSACTION: { - reply.writeString(descriptor); - return true; - } - case TRANSACTION_play: { - data.enforceInterface(descriptor); - java.util.List _arg0; - _arg0 = data.createStringArrayList(); - int _arg1; - _arg1 = data.readInt(); - String _arg2; - _arg2 = data.readString(); - this.play(_arg0, _arg1, _arg2); - reply.writeNoException(); - return true; - } - case TRANSACTION_getUserId: { - data.enforceInterface(descriptor); - int _result = this.getUserId(); - reply.writeNoException(); - reply.writeInt(_result); - return true; - } - case TRANSACTION_addTrackToCache: { - data.enforceInterface(descriptor); - int _arg0; - _arg0 = data.readInt(); - int _arg1; - _arg1 = data.readInt(); - String _arg2; - _arg2 = data.readString(); - this.addTrackToCache(_arg0, _arg1, _arg2); - reply.writeNoException(); - return true; - } - case TRANSACTION_deleteTrackFromCache: { - data.enforceInterface(descriptor); - int _arg0; - _arg0 = data.readInt(); - int _arg1; - _arg1 = data.readInt(); - this.deleteTrackFromCache(_arg0, _arg1); - reply.writeNoException(); - return true; - } - case TRANSACTION_isTrackCached: { - data.enforceInterface(descriptor); - int _arg0; - _arg0 = data.readInt(); - int _arg1; - _arg1 = data.readInt(); - boolean _result = this.isTrackCached(_arg0, _arg1); - reply.writeNoException(); - reply.writeInt(((_result) ? (1) : (0))); - return true; - } - case TRANSACTION_getCache: { - data.enforceInterface(descriptor); - java.util.List _result = this.getCache(); - reply.writeNoException(); - reply.writeStringList(_result); - return true; - } - default: { - return super.onTransact(code, data, reply, flags); - } - } - } - - private static class Proxy implements ILibVkxService { - public static ILibVkxService sDefaultImpl; - private final android.os.IBinder mRemote; - - Proxy(android.os.IBinder remote) { - mRemote = remote; - } - - @Override - public android.os.IBinder asBinder() { - return mRemote; - } - // Starts playback. playbackContext can be "other" if you don't sure what it is - - public String getInterfaceDescriptor() { - return DESCRIPTOR; - } - // A UserID. CHECK FOR THIS TO BE EQUAL BEFORE SENDING ANYTHING TO SERVICE! - - @Override - public void play(java.util.List audio_ids, int index, String playbackContext) throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - try { - _data.writeInterfaceToken(DESCRIPTOR); - _data.writeStringList(audio_ids); - _data.writeInt(index); - _data.writeString(playbackContext); - boolean _status = mRemote.transact(Stub.TRANSACTION_play, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - getDefaultImpl().play(audio_ids, index, playbackContext); - return; - } - _reply.readException(); - } finally { - _reply.recycle(); - _data.recycle(); - } - } - // Cache add/remove - - @Override - public int getUserId() throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - int _result; - try { - _data.writeInterfaceToken(DESCRIPTOR); - boolean _status = mRemote.transact(Stub.TRANSACTION_getUserId, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - return getDefaultImpl().getUserId(); - } - _reply.readException(); - _result = _reply.readInt(); - } finally { - _reply.recycle(); - _data.recycle(); - } - return _result; - } - - @Override - public void addTrackToCache(int track_id, int owner_id, String access_key) throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - try { - _data.writeInterfaceToken(DESCRIPTOR); - _data.writeInt(track_id); - _data.writeInt(owner_id); - _data.writeString(access_key); - boolean _status = mRemote.transact(Stub.TRANSACTION_addTrackToCache, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - getDefaultImpl().addTrackToCache(track_id, owner_id, access_key); - return; - } - _reply.readException(); - } finally { - _reply.recycle(); - _data.recycle(); - } - } - - @Override - public void deleteTrackFromCache(int track_id, int owner_id) throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - try { - _data.writeInterfaceToken(DESCRIPTOR); - _data.writeInt(track_id); - _data.writeInt(owner_id); - boolean _status = mRemote.transact(Stub.TRANSACTION_deleteTrackFromCache, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - getDefaultImpl().deleteTrackFromCache(track_id, owner_id); - return; - } - _reply.readException(); - } finally { - _reply.recycle(); - _data.recycle(); - } - } - // Get a list of cached tracks. The response is close to VK's original response (an audio list) - // Also, the items in the list are JSON ones. - - @Override - public boolean isTrackCached(int track_id, int owner_id) throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - boolean _result; - try { - _data.writeInterfaceToken(DESCRIPTOR); - _data.writeInt(track_id); - _data.writeInt(owner_id); - boolean _status = mRemote.transact(Stub.TRANSACTION_isTrackCached, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - return getDefaultImpl().isTrackCached(track_id, owner_id); - } - _reply.readException(); - _result = (0 != _reply.readInt()); - } finally { - _reply.recycle(); - _data.recycle(); - } - return _result; - } - - @Override - public java.util.List getCache() throws android.os.RemoteException { - android.os.Parcel _data = android.os.Parcel.obtain(); - android.os.Parcel _reply = android.os.Parcel.obtain(); - java.util.List _result; - try { - _data.writeInterfaceToken(DESCRIPTOR); - boolean _status = mRemote.transact(Stub.TRANSACTION_getCache, _data, _reply, 0); - if (!_status && getDefaultImpl() != null) { - return getDefaultImpl().getCache(); - } - _reply.readException(); - _result = _reply.createStringArrayList(); - } finally { - _reply.recycle(); - _data.recycle(); - } - return _result; - } - } - } -} 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 8d1ec02ca..dee8e743c 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 @@ -156,21 +156,7 @@ public class CacheDatabaseDelegate { public static boolean hasTracks() { if (LibVKXClient.isIntegrationEnabled()) { - return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric() { - @Override - public Boolean run(ILibVkxService service) { - try { - return service.getCache().size() > 0; - } catch (RemoteException e) { - return false; - } - } - - @Override - public Boolean defaultValue() { - return false; - } - }); + return true; } var formula = String.format( 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 8d7a4c30e..dfb2fb5ad 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 @@ -38,15 +38,19 @@ public class TracklistInjector { if (LibVKXClient.isIntegrationEnabled()) { LibVKXClient.getInstance().runOnService((service) -> { try { - List tracks = new ArrayList<>(); - List cache = service.getCache(); + try { + observableEmitter.b(parser.c(new JSONObject(service.getCacheCatalog()))); + } catch (Exception e){ + List tracks = new ArrayList<>(); + List cache = service.getCache(); - for (String json : cache) { - Log.d("TracklistInjector", "added " + json); - tracks.add(new MusicTrack(new JSONObject(json))); + for (String json : cache) { + Log.d("TracklistInjector", "added " + json); + tracks.add(new MusicTrack(new JSONObject(json))); + } + + observableEmitter.b(parser.c(createVirtualCatalog(tracks))); } - - observableEmitter.b(parser.c(createVirtualCatalog(tracks))); } catch (Exception e) { e.printStackTrace(); }