From 724e8b9308242e6c696196a33327f9edc96d6983 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 17 Sep 2022 01:06:19 +0300 Subject: [PATCH] some buttons inject --- .../libvkx/client/LibVKXClient.java | 2 +- .../lite/hooks/ui/MusicBottomSheetHook.java | 80 +++++++++++++++++-- smali/res/values-ru/strings.xml | 1 + smali/res/values/ids.xml | 2 + smali/res/values/strings.xml | 1 + .../playlist/PlaylistBottomSheet.smali | 2 + 6 files changed, 82 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java index 75cead999..444c9d1a1 100644 --- a/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java +++ b/app/src/main/java/bruhcollective/itaysonlab/libvkx/client/LibVKXClient.java @@ -81,7 +81,7 @@ public class LibVKXClient { lambdaplay(list, musicTrack, iLibVkxService, null); } - private static String asId(MusicTrack musicTrack) { + public static String asId(MusicTrack musicTrack) { String str = musicTrack.e + "_" + musicTrack.d; if (musicTrack.O == null || musicTrack.O.equals("")) { return str; 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 afbdc1ebd..6212a81ac 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 @@ -1,5 +1,11 @@ package ru.vtosters.lite.hooks.ui; +import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.asId; +import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.getInstance; +import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isVkxInstalled; +import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.lambdaplay; +import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.isCached; +import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.removeTrackFromCache; import static ru.vtosters.lite.utils.Preferences.milkshake; import com.vk.dto.music.MusicTrack; @@ -10,22 +16,32 @@ import com.vtosters.lite.R; import java.util.ArrayList; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; +import ru.vtosters.lite.music.MP3Downloader; import ru.vtosters.lite.utils.AndroidUtils; public class MusicBottomSheetHook { public static ArrayList hook(ArrayList actions, MusicTrack musicTrack) { - if (LibVKXClient.isVkxInstalled()) + if (isVkxInstalled()) actions.add(getPlayInVKXAction()); + if (isCached(asId(musicTrack))){ + actions.add(getRemoveCacheTrackAction()); + } else { + actions.add(addToCacheTrackAction()); + } + + actions.add(downloadAsMp3Action()); + return actions; } public static ArrayList hook(ArrayList actions, Playlist playlist) { - if (LibVKXClient.isVkxInstalled()) + if (isVkxInstalled()) actions.add(getPlayInVKXAction()); + actions.add(downloadAsMp3Action()); + return actions; } @@ -33,6 +49,21 @@ public class MusicBottomSheetHook { if (actionId == AndroidUtils.getIdentifier("play_in_vkx", "id")) return tryPlayInVKX(track, context, playlist); + if (actionId == AndroidUtils.getIdentifier("remove_from_cache", "id")) { + removeTrackFromCache(track.D); + AndroidUtils.sendToast("remove_from_cache"); + return true; + } else if (actionId == AndroidUtils.getIdentifier("add_to_cache", "id")) { + AndroidUtils.sendToast("add_to_cache"); + return true; + } + + if (actionId == AndroidUtils.getIdentifier("download_mp3", "id")) { + MP3Downloader.downloadMP3(track); + AndroidUtils.sendToast("download_mp3"); + return true; + } + return false; } @@ -40,6 +71,12 @@ public class MusicBottomSheetHook { if (actionId == AndroidUtils.getIdentifier("play_in_vkx", "id")) return tryPlayInVKX(null, null, playlist); + if (actionId == AndroidUtils.getIdentifier("download_mp3", "id")) { + MP3Downloader.downloadPlaylist(playlist); + AndroidUtils.sendToast("download_mp3"); + return true; + } + return false; } @@ -52,8 +89,8 @@ public class MusicBottomSheetHook { trackList.add(track); } - LibVKXClientImpl.LibVKXAction action = iLibVkxService -> LibVKXClient.lambdaplay(trackList, track, iLibVkxService, context); - return LibVKXClient.getInstance().runOnService(action); + LibVKXClientImpl.LibVKXAction action = iLibVkxService -> lambdaplay(trackList, track, iLibVkxService, context); + return getInstance().runOnService(action); } private static MusicAction getPlayInVKXAction() { @@ -66,4 +103,37 @@ public class MusicBottomSheetHook { false ); } + + private static MusicAction getRemoveCacheTrackAction() { + return new MusicAction( + AndroidUtils.getIdentifier("remove_from_cache", "id"), + milkshake() ? R.drawable.ic_delete_outline_28 : R.drawable.ic_delete_24, + AndroidUtils.getIdentifier("remove_from_cache", "string"), + R.color.caption_gray, + R.string.music_talkback_empty, + false + ); + } + + private static MusicAction addToCacheTrackAction() { + return new MusicAction( + AndroidUtils.getIdentifier("add_to_cache", "id"), + milkshake() ? R.drawable.ic_add_outline_28 : R.drawable.ic_add_24, + AndroidUtils.getIdentifier("add_to_cache", "string"), + R.color.caption_gray, + R.string.music_talkback_empty, + false + ); + } + + private static MusicAction downloadAsMp3Action() { + return new MusicAction( + AndroidUtils.getIdentifier("download_mp3", "id"), + milkshake() ? R.drawable.ic_download_outline_28 : R.drawable.ic_download_24, + AndroidUtils.getIdentifier("download_mp3", "string"), + R.color.caption_gray, + R.string.music_talkback_empty, + false + ); + } } diff --git a/smali/res/values-ru/strings.xml b/smali/res/values-ru/strings.xml index dcc8259e2..f41857cfe 100644 --- a/smali/res/values-ru/strings.xml +++ b/smali/res/values-ru/strings.xml @@ -5953,6 +5953,7 @@ Скачать как mp3 Удалить из кеша + Добавить в кэш Воспроизвести в VK X diff --git a/smali/res/values/ids.xml b/smali/res/values/ids.xml index 06709c2b8..d98382d9b 100644 --- a/smali/res/values/ids.xml +++ b/smali/res/values/ids.xml @@ -3915,4 +3915,6 @@ + + diff --git a/smali/res/values/strings.xml b/smali/res/values/strings.xml index 789e6e17b..efc4b33d5 100644 --- a/smali/res/values/strings.xml +++ b/smali/res/values/strings.xml @@ -6088,6 +6088,7 @@ May look like a fake leaving the online" Download as mp3 Delete from cache + Add to cache Play the track in VK X diff --git a/smali/smali_classes3/com/vk/music/bottomsheets/playlist/PlaylistBottomSheet.smali b/smali/smali_classes3/com/vk/music/bottomsheets/playlist/PlaylistBottomSheet.smali index 8859ba37b..d2d09cdcc 100644 --- a/smali/smali_classes3/com/vk/music/bottomsheets/playlist/PlaylistBottomSheet.smali +++ b/smali/smali_classes3/com/vk/music/bottomsheets/playlist/PlaylistBottomSheet.smali @@ -366,6 +366,8 @@ .line 30 iget v2, v2, Lcom/vk/dto/music/Playlist;->O:I + const v2, 0x0 + if-lez v2, :cond_7 new-instance v2, Lcom/vk/music/bottomsheets/a/MusicAction;