diff --git a/app/src/main/java/ru/vtosters/lite/music/hook/PlaylistFormatterHook.java b/app/src/main/java/ru/vtosters/lite/music/hook/PlaylistFormatterHook.java new file mode 100644 index 000000000..033af0d9e --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/music/hook/PlaylistFormatterHook.java @@ -0,0 +1,34 @@ +package ru.vtosters.lite.music.hook; + +import android.content.Context; +import androidx.annotation.AttrRes; +import com.vk.bridges.AuthBridge; +import com.vk.core.utils.MediaFormatter; +import com.vk.dto.music.Playlist; +import kotlin.jvm.internal.Intrinsics; + +public class PlaylistFormatterHook { + // this method will be called only for playlists that are owned by the user + // basically we replace the author name with subtitle + // because for some reason VK decided to merge title and subtitle into one field in 5.56 + public static String getOwnerText(Context context, Playlist playlist) { + if (playlist.h != null && playlist.h.length() > 0) { + return playlist.h; + } + String string = context.getString(com.vk.music.m.i.music_my_playlist); + Intrinsics.a(string, "context.getString(R.string.music_my_playlist)"); + return string; + } + + + public static CharSequence titleAndSubtitleMergeFix(Context context, Playlist playlist, @AttrRes int i) { + if (isMyPlaylist(playlist)) { + return playlist.g; + } + return MediaFormatter.a(context, (CharSequence) playlist.g, playlist.h, i); + } + + private static boolean isMyPlaylist(Playlist playlist) { + return AuthBridge.a().b(playlist.h(AuthBridge.a().b()).b); + } +} diff --git a/smali/smali_classes3/com/vk/music/ui/common/formatting/PlaylistFormatter.smali b/smali/smali_classes3/com/vk/music/ui/common/formatting/PlaylistFormatter.smali index cb330c210..4182a600f 100644 --- a/smali/smali_classes3/com/vk/music/ui/common/formatting/PlaylistFormatter.smali +++ b/smali/smali_classes3/com/vk/music/ui/common/formatting/PlaylistFormatter.smali @@ -423,12 +423,9 @@ .end annotation .end param + # ru.vtosters.lite.music.hook.PlaylistFormatterHook -> public static CharSequence titleAndSubtitleMergeFix(Context context, Playlist playlist, @AttrRes int i) .line 15 - iget-object v0, p2, Lcom/vk/dto/music/Playlist;->g:Ljava/lang/String; - - iget-object p2, p2, Lcom/vk/dto/music/Playlist;->h:Ljava/lang/String; - - invoke-static {p1, v0, p2, p3}, Lcom/vk/core/utils/MediaFormatter;->a(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/String;I)Ljava/lang/CharSequence; + invoke-static {p1, p2, p3}, Lru/vtosters/lite/music/hook/PlaylistFormatterHook;->titleAndSubtitleMergeFix(Landroid/content/Context;Lcom/vk/dto/music/Playlist;I)Ljava/lang/CharSequence; move-result-object p1 @@ -891,16 +888,10 @@ if-eqz v0, :cond_1 - sget p2, Lcom/vk/music/m/i;->music_my_playlist:I - - invoke-virtual {p1, p2}, Landroid/content/Context;->getString(I)Ljava/lang/String; + invoke-static {p1, p2}, Lru/vtosters/lite/music/hook/PlaylistFormatterHook;->getOwnerText(Landroid/content/Context;Lcom/vk/dto/music/Playlist;)Ljava/lang/String; move-result-object p1 - const-string p2, "context.getString(R.string.music_my_playlist)" - - invoke-static {p1, p2}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V - goto :goto_0 .line 18