mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-08-27 06:27:46 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95be099821 | ||
|
|
7a55787894 | ||
|
|
bd09c2798e | ||
|
|
b0b614dc6f | ||
|
|
6a7d5fe90f | ||
|
|
4791e69bec | ||
|
|
7f3618aeae | ||
|
|
ea9c6458c2 | ||
|
|
bdbcc4fc62 | ||
|
|
3b893c12ff | ||
|
|
9d60e3dc80 | ||
|
|
36382437f1 |
+2
-1
@@ -41,6 +41,7 @@ class SmaliPatchStep(
|
|||||||
|
|
||||||
val patches = mutableListOf<LoadedPatch>()
|
val patches = mutableListOf<LoadedPatch>()
|
||||||
val localsBumps = mutableMapOf<Pair<String, String>, Int>()
|
val localsBumps = mutableMapOf<Pair<String, String>, Int>()
|
||||||
|
val disabledFiles = options.disabledPatchFiles()
|
||||||
|
|
||||||
// Load and parse all the patches from the smali archive.
|
// Load and parse all the patches from the smali archive.
|
||||||
container.log("Loading patches from smali patch archive: ${patchesZip.absolutePath}")
|
container.log("Loading patches from smali patch archive: ${patchesZip.absolutePath}")
|
||||||
@@ -71,7 +72,7 @@ class SmaliPatchStep(
|
|||||||
if (!patchFile.endsWith(".patch")) continue
|
if (!patchFile.endsWith(".patch")) continue
|
||||||
|
|
||||||
val basename = patchFile.substringAfterLast('/')
|
val basename = patchFile.substringAfterLast('/')
|
||||||
if (basename in options.disabledPatches) {
|
if (basename in disabledFiles) {
|
||||||
container.log("Skipping disabled patch $patchFile")
|
container.log("Skipping disabled patch $patchFile")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-18
@@ -2,37 +2,32 @@ package com.meowarex.rlmobile.ui.screens.patchopts
|
|||||||
|
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import com.meowarex.rlmobile.R
|
import com.meowarex.rlmobile.R
|
||||||
|
import com.meowarex.rlmobile.ui.screens.patchopts.PatchDefault.Disabled
|
||||||
|
import com.meowarex.rlmobile.ui.screens.patchopts.PatchDefault.Enabled
|
||||||
|
|
||||||
data class PatchVariant(
|
data class PatchVariant(
|
||||||
@StringRes val titleRes: Int,
|
@StringRes val titleRes: Int,
|
||||||
val fileNames: List<String>,
|
val fileNames: List<String>,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
enum class KnownPatch(
|
enum class KnownPatch(
|
||||||
/**
|
val order: Int, // Patch order in the UI List (lower = higher up) [Main Patches: multiples of 10 | Sub Patches: multiples of 1]
|
||||||
* Numeric display order in the patch options list. Lower = higher up.
|
|
||||||
*
|
|
||||||
* Convention: main patches use multiples of 10 (10, 20, 30, …). Patches
|
|
||||||
* that act as helpers/dependencies of a main patch get offsets adjacent to
|
|
||||||
* the requirer (e.g. main at 40, helpers at 41, 42, 43). DebugMenuUnlock
|
|
||||||
* is pinned to 100 to keep it at the bottom of the list.
|
|
||||||
*/
|
|
||||||
val order: Int,
|
|
||||||
val fileNames: List<String>,
|
val fileNames: List<String>,
|
||||||
@StringRes val titleRes: Int,
|
@StringRes val titleRes: Int,
|
||||||
@StringRes val descRes: Int,
|
@StringRes val descRes: Int,
|
||||||
|
val default: PatchDefault, // Default state of the patch in the UI List (enabled/disabled)
|
||||||
val requires: List<KnownPatch> = emptyList(),
|
val requires: List<KnownPatch> = emptyList(),
|
||||||
val disables: List<KnownPatch> = emptyList(),
|
val disables: List<KnownPatch> = emptyList(),
|
||||||
val variants: List<PatchVariant> = emptyList(),
|
val variants: List<PatchVariant> = emptyList(),
|
||||||
val defaultVariantIndex: Int = 0,
|
val defaultVariantIndex: Int = 0,
|
||||||
) {
|
) {
|
||||||
// Dependency-first order (later refs need backward resolution).
|
|
||||||
// The `order` field controls display order; declaration order doesn't matter.
|
|
||||||
LyricsDisableCover(
|
LyricsDisableCover(
|
||||||
order = 41,
|
order = 41,
|
||||||
fileNames = listOf("lyrics-disable-cover.patch"),
|
fileNames = listOf("lyrics-disable-cover.patch"),
|
||||||
titleRes = R.string.patch_lyrics_disable_cover_title,
|
titleRes = R.string.patch_lyrics_disable_cover_title,
|
||||||
descRes = R.string.patch_lyrics_disable_cover_desc,
|
descRes = R.string.patch_lyrics_disable_cover_desc,
|
||||||
|
default = Enabled,
|
||||||
),
|
),
|
||||||
LyricsReplaceLyricsButton(
|
LyricsReplaceLyricsButton(
|
||||||
order = 42,
|
order = 42,
|
||||||
@@ -42,12 +37,14 @@ enum class KnownPatch(
|
|||||||
),
|
),
|
||||||
titleRes = R.string.patch_lyrics_replace_button_title,
|
titleRes = R.string.patch_lyrics_replace_button_title,
|
||||||
descRes = R.string.patch_lyrics_replace_button_desc,
|
descRes = R.string.patch_lyrics_replace_button_desc,
|
||||||
|
default = Enabled,
|
||||||
),
|
),
|
||||||
LyricsReplaceShareButton(
|
LyricsReplaceShareButton(
|
||||||
order = 43,
|
order = 43,
|
||||||
fileNames = listOf("lyrics-replace-share-button.patch"),
|
fileNames = listOf("lyrics-replace-share-button.patch"),
|
||||||
titleRes = R.string.patch_lyrics_replace_share_button_title,
|
titleRes = R.string.patch_lyrics_replace_share_button_title,
|
||||||
descRes = R.string.patch_lyrics_replace_share_button_desc,
|
descRes = R.string.patch_lyrics_replace_share_button_desc,
|
||||||
|
default = Enabled,
|
||||||
),
|
),
|
||||||
LyricsRlApi(
|
LyricsRlApi(
|
||||||
order = 20,
|
order = 20,
|
||||||
@@ -57,18 +54,35 @@ enum class KnownPatch(
|
|||||||
),
|
),
|
||||||
titleRes = R.string.patch_lyrics_rl_api_title,
|
titleRes = R.string.patch_lyrics_rl_api_title,
|
||||||
descRes = R.string.patch_lyrics_rl_api_desc,
|
descRes = R.string.patch_lyrics_rl_api_desc,
|
||||||
|
default = Disabled,
|
||||||
),
|
),
|
||||||
LyricsKeepControlsVisible(
|
LyricsKeepControlsVisible(
|
||||||
order = 60,
|
order = 60,
|
||||||
fileNames = listOf("lyrics-keep-controls-visible.patch"),
|
fileNames = listOf("lyrics-keep-controls-visible.patch"),
|
||||||
titleRes = R.string.patch_lyrics_keep_controls_title,
|
titleRes = R.string.patch_lyrics_keep_controls_title,
|
||||||
descRes = R.string.patch_lyrics_keep_controls_desc,
|
descRes = R.string.patch_lyrics_keep_controls_desc,
|
||||||
|
default = Enabled,
|
||||||
),
|
),
|
||||||
PlayerBackdrop(
|
PlayerBackdrop(
|
||||||
order = 30,
|
order = 30,
|
||||||
fileNames = listOf("player-backdrop.patch"),
|
fileNames = listOf("player-backdrop.patch"),
|
||||||
titleRes = R.string.patch_player_backdrop_title,
|
titleRes = R.string.patch_player_backdrop_title,
|
||||||
descRes = R.string.patch_player_backdrop_desc,
|
descRes = R.string.patch_player_backdrop_desc,
|
||||||
|
default = Enabled,
|
||||||
|
),
|
||||||
|
QualityBadgeColors(
|
||||||
|
order = 36,
|
||||||
|
fileNames = listOf("player-quality-badge-colors.patch"),
|
||||||
|
titleRes = R.string.patch_quality_badge_colors_title,
|
||||||
|
descRes = R.string.patch_quality_badge_colors_desc,
|
||||||
|
default = Enabled,
|
||||||
|
),
|
||||||
|
PlayerOneHanded(
|
||||||
|
order = 37,
|
||||||
|
fileNames = listOf("player-one-handed.patch"),
|
||||||
|
titleRes = R.string.patch_player_one_handed_title,
|
||||||
|
descRes = R.string.patch_player_one_handed_desc,
|
||||||
|
default = Disabled,
|
||||||
),
|
),
|
||||||
CoverEverywhere(
|
CoverEverywhere(
|
||||||
order = 35,
|
order = 35,
|
||||||
@@ -79,12 +93,14 @@ enum class KnownPatch(
|
|||||||
),
|
),
|
||||||
titleRes = R.string.patch_cover_everywhere_title,
|
titleRes = R.string.patch_cover_everywhere_title,
|
||||||
descRes = R.string.patch_cover_everywhere_desc,
|
descRes = R.string.patch_cover_everywhere_desc,
|
||||||
|
default = Disabled,
|
||||||
),
|
),
|
||||||
DebugMenuUnlock(
|
DebugMenuUnlock(
|
||||||
order = 100,
|
order = 100,
|
||||||
fileNames = listOf("debug-menu-unlock.patch"),
|
fileNames = listOf("debug-menu-unlock.patch"),
|
||||||
titleRes = R.string.patch_debug_menu_unlock_title,
|
titleRes = R.string.patch_debug_menu_unlock_title,
|
||||||
descRes = R.string.patch_debug_menu_unlock_desc,
|
descRes = R.string.patch_debug_menu_unlock_desc,
|
||||||
|
default = Disabled,
|
||||||
),
|
),
|
||||||
LyricsProgressPill(
|
LyricsProgressPill(
|
||||||
order = 40,
|
order = 40,
|
||||||
@@ -94,6 +110,7 @@ enum class KnownPatch(
|
|||||||
),
|
),
|
||||||
titleRes = R.string.patch_lyrics_progress_pill_title,
|
titleRes = R.string.patch_lyrics_progress_pill_title,
|
||||||
descRes = R.string.patch_lyrics_progress_pill_desc,
|
descRes = R.string.patch_lyrics_progress_pill_desc,
|
||||||
|
default = Enabled,
|
||||||
requires = listOf(LyricsDisableCover, LyricsReplaceLyricsButton, LyricsReplaceShareButton),
|
requires = listOf(LyricsDisableCover, LyricsReplaceLyricsButton, LyricsReplaceShareButton),
|
||||||
),
|
),
|
||||||
MiniPlayerRedesign(
|
MiniPlayerRedesign(
|
||||||
@@ -101,6 +118,7 @@ enum class KnownPatch(
|
|||||||
fileNames = emptyList(),
|
fileNames = emptyList(),
|
||||||
titleRes = R.string.patch_mini_player_redesign_title,
|
titleRes = R.string.patch_mini_player_redesign_title,
|
||||||
descRes = R.string.patch_mini_player_redesign_desc,
|
descRes = R.string.patch_mini_player_redesign_desc,
|
||||||
|
default = Disabled,
|
||||||
defaultVariantIndex = 2,
|
defaultVariantIndex = 2,
|
||||||
variants = listOf(
|
variants = listOf(
|
||||||
PatchVariant(
|
PatchVariant(
|
||||||
@@ -122,6 +140,7 @@ enum class KnownPatch(
|
|||||||
fileNames = listOf("enable-legacy-ui.patch"),
|
fileNames = listOf("enable-legacy-ui.patch"),
|
||||||
titleRes = R.string.patch_enable_legacy_ui_title,
|
titleRes = R.string.patch_enable_legacy_ui_title,
|
||||||
descRes = R.string.patch_enable_legacy_ui_desc,
|
descRes = R.string.patch_enable_legacy_ui_desc,
|
||||||
|
default = Disabled,
|
||||||
requires = listOf(DebugMenuUnlock),
|
requires = listOf(DebugMenuUnlock),
|
||||||
disables = listOf(
|
disables = listOf(
|
||||||
LyricsDisableCover,
|
LyricsDisableCover,
|
||||||
@@ -130,19 +149,13 @@ enum class KnownPatch(
|
|||||||
LyricsRlApi,
|
LyricsRlApi,
|
||||||
LyricsKeepControlsVisible,
|
LyricsKeepControlsVisible,
|
||||||
PlayerBackdrop,
|
PlayerBackdrop,
|
||||||
|
QualityBadgeColors,
|
||||||
LyricsProgressPill,
|
LyricsProgressPill,
|
||||||
CoverEverywhere,
|
CoverEverywhere,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
val allVariantFileNames: Set<String>
|
|
||||||
get() = variants.flatMapTo(mutableSetOf()) { it.fileNames }
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
/**
|
|
||||||
* Sorted by `order` ascending. Tie-breaks fall back to the first filename
|
|
||||||
* (alphabetical) so the order is always deterministic.
|
|
||||||
*/
|
|
||||||
val All: List<KnownPatch> = entries.sortedWith(
|
val All: List<KnownPatch> = entries.sortedWith(
|
||||||
compareBy({ it.order }, { it.fileNames.firstOrNull() ?: it.name })
|
compareBy({ it.order }, { it.fileNames.firstOrNull() ?: it.name })
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.meowarex.rlmobile.ui.screens.patchopts
|
||||||
|
|
||||||
|
enum class PatchDefault(val isEnabled: Boolean) {
|
||||||
|
Enabled(true),
|
||||||
|
Disabled(false),
|
||||||
|
}
|
||||||
+21
-14
@@ -32,27 +32,34 @@ data class PatchOptions(
|
|||||||
*/
|
*/
|
||||||
val customPatches: PatchComponent? = null,
|
val customPatches: PatchComponent? = null,
|
||||||
|
|
||||||
val disabledPatches: Set<String> = emptySet(),
|
val patchStates: Map<String, Boolean> = emptyMap(),
|
||||||
|
|
||||||
val selectedVariants: Map<String, Int> = emptyMap(),
|
val selectedVariants: Map<String, Int> = emptyMap(),
|
||||||
) : Parcelable {
|
) : Parcelable {
|
||||||
companion object {
|
|
||||||
val Default: PatchOptions = run {
|
|
||||||
val miniPlayerFiles = KnownPatch.MiniPlayerRedesign.allVariantFileNames
|
|
||||||
val disabled = (
|
|
||||||
KnownPatch.DebugMenuUnlock.fileNames +
|
|
||||||
KnownPatch.EnableLegacyUi.fileNames +
|
|
||||||
miniPlayerFiles
|
|
||||||
).toSet()
|
|
||||||
|
|
||||||
PatchOptions(
|
fun isEnabled(patch: KnownPatch): Boolean =
|
||||||
|
patchStates[patch.name] ?: patch.default.isEnabled
|
||||||
|
|
||||||
|
fun disabledPatchFiles(): Set<String> = buildSet<String> {
|
||||||
|
for (patch in KnownPatch.All) {
|
||||||
|
val enabled = isEnabled(patch)
|
||||||
|
if (patch.variants.isEmpty()) {
|
||||||
|
if (!enabled) addAll(patch.fileNames)
|
||||||
|
} else {
|
||||||
|
val selected = (selectedVariants[patch.name] ?: patch.defaultVariantIndex)
|
||||||
|
.coerceIn(0, patch.variants.lastIndex)
|
||||||
|
patch.variants.forEachIndexed { index, variant ->
|
||||||
|
if (!enabled || index != selected) addAll(variant.fileNames)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val Default: PatchOptions = PatchOptions(
|
||||||
appName = "TIDAL",
|
appName = "TIDAL",
|
||||||
packageName = "com.aspiro.tidal",
|
packageName = "com.aspiro.tidal",
|
||||||
debuggable = false,
|
debuggable = false,
|
||||||
customTidalApk = null,
|
|
||||||
customPatches = null,
|
|
||||||
disabledPatches = disabled,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-24
@@ -47,7 +47,7 @@ class PatchOptionsModel(
|
|||||||
debuggable = value
|
debuggable = value
|
||||||
}
|
}
|
||||||
|
|
||||||
var disabledPatches by mutableStateOf(prefilledOptions.disabledPatches)
|
var patchStates by mutableStateOf(prefilledOptions.patchStates)
|
||||||
private set
|
private set
|
||||||
|
|
||||||
var selectedVariants by mutableStateOf(prefilledOptions.selectedVariants)
|
var selectedVariants by mutableStateOf(prefilledOptions.selectedVariants)
|
||||||
@@ -57,25 +57,10 @@ class PatchOptionsModel(
|
|||||||
?.coerceIn(0, patch.variants.lastIndex.coerceAtLeast(0))
|
?.coerceIn(0, patch.variants.lastIndex.coerceAtLeast(0))
|
||||||
?: patch.defaultVariantIndex.coerceIn(0, patch.variants.lastIndex.coerceAtLeast(0))
|
?: patch.defaultVariantIndex.coerceIn(0, patch.variants.lastIndex.coerceAtLeast(0))
|
||||||
|
|
||||||
fun isPatchEnabled(patch: KnownPatch): Boolean = if (patch.variants.isNotEmpty()) {
|
fun isPatchEnabled(patch: KnownPatch): Boolean =
|
||||||
val v = patch.variants[variantIndex(patch)]
|
patchStates[patch.name] ?: patch.default.isEnabled
|
||||||
v.fileNames.isNotEmpty() && v.fileNames.none { it in disabledPatches }
|
|
||||||
} else {
|
|
||||||
patch.fileNames.isNotEmpty() && patch.fileNames.none { it in disabledPatches }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setPatchEnabled(patch: KnownPatch, enabled: Boolean) {
|
fun setPatchEnabled(patch: KnownPatch, enabled: Boolean) {
|
||||||
if (patch.variants.isNotEmpty()) {
|
|
||||||
val all = patch.allVariantFileNames
|
|
||||||
val selected = patch.variants[variantIndex(patch)].fileNames.toSet()
|
|
||||||
disabledPatches = if (enabled) {
|
|
||||||
(disabledPatches + all) - selected
|
|
||||||
} else {
|
|
||||||
disabledPatches + all
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fun closure(seed: KnownPatch, step: (KnownPatch) -> List<KnownPatch>): Set<KnownPatch> =
|
fun closure(seed: KnownPatch, step: (KnownPatch) -> List<KnownPatch>): Set<KnownPatch> =
|
||||||
buildSet {
|
buildSet {
|
||||||
fun walk(p: KnownPatch) { if (add(p)) step(p).forEach(::walk) }
|
fun walk(p: KnownPatch) { if (add(p)) step(p).forEach(::walk) }
|
||||||
@@ -95,16 +80,15 @@ class PatchOptionsModel(
|
|||||||
disableUnits = closure(patch) { p -> KnownPatch.All.filter { p in it.requires } }
|
disableUnits = closure(patch) { p -> KnownPatch.All.filter { p in it.requires } }
|
||||||
}
|
}
|
||||||
|
|
||||||
val enableFiles = enableUnits.flatMap { it.fileNames }.toSet()
|
patchStates = patchStates.toMutableMap().apply {
|
||||||
val disableFiles = disableUnits.flatMap { it.fileNames }.toSet()
|
enableUnits.forEach { this[it.name] = true }
|
||||||
disabledPatches = (disabledPatches - enableFiles) + disableFiles
|
disableUnits.forEach { this[it.name] = false }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun selectVariant(patch: KnownPatch, index: Int) {
|
fun selectVariant(patch: KnownPatch, index: Int) {
|
||||||
if (patch.variants.isEmpty() || index !in patch.variants.indices) return
|
if (patch.variants.isEmpty() || index !in patch.variants.indices) return
|
||||||
val wasOn = isPatchEnabled(patch)
|
|
||||||
selectedVariants = selectedVariants + (patch.name to index)
|
selectedVariants = selectedVariants + (patch.name to index)
|
||||||
if (wasOn) setPatchEnabled(patch, true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun lockState(patch: KnownPatch): PatchLock {
|
fun lockState(patch: KnownPatch): PatchLock {
|
||||||
@@ -175,7 +159,7 @@ class PatchOptionsModel(
|
|||||||
debuggable = debuggable,
|
debuggable = debuggable,
|
||||||
customTidalApk = customTidalApk,
|
customTidalApk = customTidalApk,
|
||||||
customPatches = customPatches,
|
customPatches = customPatches,
|
||||||
disabledPatches = disabledPatches,
|
patchStates = patchStates,
|
||||||
selectedVariants = selectedVariants,
|
selectedVariants = selectedVariants,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -268,6 +268,10 @@
|
|||||||
>Inverts the auto-hide behavior on the lyrics screen, playback controls stay visible by default and only hide when you tap them off.</string>
|
>Inverts the auto-hide behavior on the lyrics screen, playback controls stay visible by default and only hide when you tap them off.</string>
|
||||||
<string name="patch_player_backdrop_title">Player Backdrop</string>
|
<string name="patch_player_backdrop_title">Player Backdrop</string>
|
||||||
<string name="patch_player_backdrop_desc">Restores the legacy translucent backdrop blur behind the player.</string>
|
<string name="patch_player_backdrop_desc">Restores the legacy translucent backdrop blur behind the player.</string>
|
||||||
|
<string name="patch_quality_badge_colors_title">Quality Badge Colors</string>
|
||||||
|
<string name="patch_quality_badge_colors_desc">Brings color back to the player quality badge.</string>
|
||||||
|
<string name="patch_player_one_handed_title">One-Handed Mode</string>
|
||||||
|
<string name="patch_player_one_handed_desc">Mirrors the bottom player buttons left-to-right for easier one-handed reach.</string>
|
||||||
<string name="patch_cover_everywhere_title">Cover Everywhere - WIP</string>
|
<string name="patch_cover_everywhere_title">Cover Everywhere - WIP</string>
|
||||||
<string name="patch_cover_everywhere_desc">Applies the blurred backdrop to every Compose based page (Home & Collection)</string>
|
<string name="patch_cover_everywhere_desc">Applies the blurred backdrop to every Compose based page (Home & Collection)</string>
|
||||||
<string name="patch_lyrics_replace_share_button_title">Replace Share Button</string>
|
<string name="patch_lyrics_replace_share_button_title">Replace Share Button</string>
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"tidalVersionCode": 9090,
|
"tidalVersionCode": 9090,
|
||||||
"tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk",
|
"tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk",
|
||||||
"patchesVersion": "0.9.7"
|
"patchesVersion": "0.9.10"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,124 @@
|
|||||||
|
.class public final Lradiant/QualityBadge;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
|
||||||
|
# direct methods
|
||||||
|
.method private constructor <init>()V
|
||||||
|
.locals 0
|
||||||
|
|
||||||
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
# qualities : 0 = LOW / HIGH, 1 = LOSSLESS, 2 = HI_RES_LOSSLESS
|
||||||
|
.method private static backgroundArgb(I)I
|
||||||
|
.locals 0
|
||||||
|
|
||||||
|
packed-switch p0, :quality_switch
|
||||||
|
|
||||||
|
const p0, 0x66475569 # LOW / HIGH bg
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:lossless
|
||||||
|
const p0, 0x3306b6d4 # LOSSLESS bg
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:hires
|
||||||
|
const p0, 0x40f59e0b # HI_RES_LOSSLESS bg
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:quality_switch
|
||||||
|
.packed-switch 0x1
|
||||||
|
:lossless
|
||||||
|
:hires
|
||||||
|
.end packed-switch
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method private static textArgb(I)I
|
||||||
|
.locals 0
|
||||||
|
|
||||||
|
packed-switch p0, :quality_switch
|
||||||
|
|
||||||
|
const p0, -0x1d1710 # LOW / HIGH text
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:lossless
|
||||||
|
const p0, -0x5a0c04 # LOSSLESS text
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:hires
|
||||||
|
const p0, -0x21976 # HI_RES_LOSSLESS text
|
||||||
|
return p0
|
||||||
|
|
||||||
|
:quality_switch
|
||||||
|
.packed-switch 0x1
|
||||||
|
:lossless
|
||||||
|
:hires
|
||||||
|
.end packed-switch
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public static modifier(Landroidx/compose/ui/Modifier;I)Landroidx/compose/ui/Modifier;
|
||||||
|
.locals 3
|
||||||
|
|
||||||
|
invoke-static {p1}, Lradiant/QualityBadge;->backgroundArgb(I)I
|
||||||
|
|
||||||
|
move-result p1
|
||||||
|
invoke-static {p1}, Landroidx/compose/ui/graphics/ColorKt;->Color(I)J
|
||||||
|
move-result-wide v0
|
||||||
|
const/high16 p1, 0x40800000 # 4.0f
|
||||||
|
invoke-static {p1}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
||||||
|
move-result p1
|
||||||
|
invoke-static {p1}, Landroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-0680j_4(F)Landroidx/compose/foundation/shape/RoundedCornerShape;
|
||||||
|
move-result-object v2
|
||||||
|
invoke-static {p0, v0, v1, v2}, Landroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier;
|
||||||
|
move-result-object p0
|
||||||
|
const/high16 p1, 0x40c00000 # 6.0f
|
||||||
|
invoke-static {p1}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
||||||
|
move-result p1
|
||||||
|
const/high16 v0, 0x40000000 # 2.0f
|
||||||
|
invoke-static {v0}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
||||||
|
move-result v0
|
||||||
|
invoke-static {p0, p1, v0}, Landroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier;
|
||||||
|
move-result-object p0
|
||||||
|
return-object p0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static style(ILn20/e2;)Ln20/e2;
|
||||||
|
.registers 16
|
||||||
|
|
||||||
|
invoke-static {p0}, Lradiant/QualityBadge;->textArgb(I)I
|
||||||
|
|
||||||
|
move-result v0
|
||||||
|
new-instance v1, Lc20/a;
|
||||||
|
invoke-direct {v1, v0}, Lc20/a;-><init>(I)V
|
||||||
|
new-instance v0, Lc20/d;
|
||||||
|
const/4 v2, 0x0
|
||||||
|
const/4 v3, 0x0
|
||||||
|
const/4 v4, 0x0
|
||||||
|
const/4 v5, 0x0
|
||||||
|
const/4 v6, 0x0
|
||||||
|
const/4 v7, 0x0
|
||||||
|
const/4 v8, 0x0
|
||||||
|
const/4 v9, 0x0
|
||||||
|
const/4 v10, 0x0
|
||||||
|
const/4 v11, 0x0
|
||||||
|
const/4 v12, 0x0
|
||||||
|
const/16 v13, 0xffe
|
||||||
|
const/4 v14, 0x0
|
||||||
|
invoke-direct/range {v0 .. v14}, Lc20/d;-><init>(Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;Lc20/a;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||||
|
|
||||||
|
move-object v9, v0
|
||||||
|
move-object/from16 v0, p1
|
||||||
|
const/4 v1, 0x0
|
||||||
|
move-object v2, v9
|
||||||
|
const/4 v3, 0x0
|
||||||
|
const/4 v4, 0x0
|
||||||
|
const/4 v5, 0x0
|
||||||
|
const/16 v6, 0x1d
|
||||||
|
const/4 v7, 0x0
|
||||||
|
invoke-static/range {v0 .. v7}, Ln20/e2;->g(Ln20/e2;Ln20/u4;Lc20/d;Lcom/squareup/ui/market/core/text/MarketTextAlignment;Lcom/squareup/ui/market/core/text/MarketTextTransform;Ln20/t4;ILjava/lang/Object;)Ln20/e2;
|
||||||
|
move-result-object p0
|
||||||
|
return-object p0
|
||||||
|
.end method
|
||||||
@@ -56,7 +56,18 @@
|
|||||||
.line 147
|
.line 147
|
||||||
sget-object v8, Lcom/tidal/android/feature/appscaffold/ui/composable/a;->c:Landroidx/compose/foundation/shape/RoundedCornerShape;
|
sget-object v8, Lcom/tidal/android/feature/appscaffold/ui/composable/a;->c:Landroidx/compose/foundation/shape/RoundedCornerShape;
|
||||||
|
|
||||||
@@ -2969,6 +2972,10 @@
|
@@ -2857,6 +2860,10 @@
|
||||||
|
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
+ invoke-static {v0}, Landroidx/compose/foundation/layout/WindowInsetsPadding_androidKt;->navigationBarsPadding(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; # inset bar content above nav bar (Prevents Bleeding behind Nav Buttons)
|
||||||
|
+
|
||||||
|
+ move-result-object v0
|
||||||
|
+
|
||||||
|
.line 155
|
||||||
|
sget-object v8, Landroidx/compose/foundation/layout/Arrangement;->INSTANCE:Landroidx/compose/foundation/layout/Arrangement;
|
||||||
|
|
||||||
|
@@ -2969,6 +2976,10 @@
|
||||||
|
|
||||||
invoke-static {v12, v0, v8}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
invoke-static {v12, v0, v8}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,18 @@
|
|||||||
const/4 v11, 0x2
|
const/4 v11, 0x2
|
||||||
|
|
||||||
.line 142
|
.line 142
|
||||||
@@ -2969,6 +2966,10 @@
|
@@ -2857,6 +2854,10 @@
|
||||||
|
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
+ invoke-static {v0}, Landroidx/compose/foundation/layout/WindowInsetsPadding_androidKt;->navigationBarsPadding(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; # inset bar content above nav bar (Prevents Bleeding behind Nav Buttons)
|
||||||
|
+
|
||||||
|
+ move-result-object v0
|
||||||
|
+
|
||||||
|
.line 155
|
||||||
|
sget-object v8, Landroidx/compose/foundation/layout/Arrangement;->INSTANCE:Landroidx/compose/foundation/layout/Arrangement;
|
||||||
|
|
||||||
|
@@ -2969,6 +2970,10 @@
|
||||||
|
|
||||||
invoke-static {v12, v0, v8}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
invoke-static {v12, v0, v8}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# rl-locals: com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali e( 71
|
# rl-locals: com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali e( 71
|
||||||
--- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
@@ -4172,6 +4172,133 @@
|
@@ -4172,6 +4172,148 @@
|
||||||
|
|
||||||
invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V
|
||||||
|
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
+
|
+
|
||||||
+ move-result-object v4 # current item
|
+ move-result-object v4 # current item
|
||||||
+
|
+
|
||||||
+ instance-of v6, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # only album covers
|
+ instance-of v6, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # still album cover?
|
||||||
+
|
+
|
||||||
+ if-eqz v6, :radiant_skip # skip non-albums
|
+ if-eqz v6, :radiant_try_animated # if not, try animated album cover
|
||||||
+
|
+
|
||||||
+ check-cast v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # narrow type
|
+ check-cast v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # narrow type
|
||||||
+
|
+
|
||||||
@@ -39,6 +39,21 @@
|
|||||||
+
|
+
|
||||||
+ iget-object v4, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a;->c:Ljava/lang/String; # cover uuid
|
+ iget-object v4, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a;->c:Ljava/lang/String; # cover uuid
|
||||||
+
|
+
|
||||||
|
+ goto :radiant_have_cover # cover resolved
|
||||||
|
+
|
||||||
|
+ :radiant_try_animated # animated album cover (c$b) shares albumId/cover layout
|
||||||
|
+ instance-of v6, v4, Lcom/tidal/android/feature/playerscreen/ui/c$b; # animated album cover?
|
||||||
|
+
|
||||||
|
+ if-eqz v6, :radiant_skip # neither -> skip (music video / unknown)
|
||||||
|
+
|
||||||
|
+ check-cast v4, Lcom/tidal/android/feature/playerscreen/ui/c$b; # narrow type
|
||||||
|
+
|
||||||
|
+ iget v5, v4, Lcom/tidal/android/feature/playerscreen/ui/c$b;->b:I # album id
|
||||||
|
+
|
||||||
|
+ iget-object v4, v4, Lcom/tidal/android/feature/playerscreen/ui/c$b;->c:Ljava/lang/String; # still cover uuid (blur this)
|
||||||
|
+
|
||||||
|
+ :radiant_have_cover # v5 = album id, v4 = cover uuid
|
||||||
|
+
|
||||||
+ new-instance v6, Lcom/tidal/android/feature/playerscreen/ui/composables/n0; # cover request lambda
|
+ new-instance v6, Lcom/tidal/android/feature/playerscreen/ui/composables/n0; # cover request lambda
|
||||||
+
|
+
|
||||||
+ invoke-direct {v6, v5, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/n0;-><init>(ILjava/lang/String;)V # build request
|
+ invoke-direct {v6, v5, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/n0;-><init>(ILjava/lang/String;)V # build request
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/composables/c1.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/composables/c1.smali
|
||||||
|
@@ -259,7 +259,7 @@
|
||||||
|
|
||||||
|
.line 109
|
||||||
|
.line 110
|
||||||
|
- sget p2, Lcom/tidal/android/feature/playerscreen/ui/R$drawable;->ic_circle_checked:I
|
||||||
|
+ sget p2, Lcom/tidal/android/feature/playerscreen/ui/R$drawable;->ic_shapes_heart_filled_medium:I # favorited: filled heart (was circle-check)
|
||||||
|
|
||||||
|
.line 111
|
||||||
|
.line 112
|
||||||
|
@@ -267,11 +267,7 @@
|
||||||
|
|
||||||
|
.line 113
|
||||||
|
:cond_5
|
||||||
|
- sget-object p2, Lx20/b;->O:Lx20/a;
|
||||||
|
-
|
||||||
|
- .line 114
|
||||||
|
- .line 115
|
||||||
|
- iget p2, p2, Lx20/a;->a:I
|
||||||
|
+ sget p2, Lcom/tidal/android/feature/playerscreen/ui/R$drawable;->ic_shapes_heart_medium:I # not favorited: outline heart (was market plus)
|
||||||
|
|
||||||
|
.line 116
|
||||||
|
.line 117
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# rl-locals: com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali e( 80
|
||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali
|
||||||
|
@@ -5650,12 +5650,26 @@
|
||||||
|
invoke-static {v2, v15, v7, v9}, Lcom/aspiro/wamp/dynamicpages/ui/compose/f;->a(FLandroidx/compose/ui/Modifier$Companion;Landroidx/compose/runtime/Composer;I)V
|
||||||
|
|
||||||
|
const/4 v2, 0x0
|
||||||
|
|
||||||
|
const/4 v9, 0x0
|
||||||
|
|
||||||
|
+ invoke-static {}, Landroidx/compose/ui/platform/CompositionLocalsKt;->getLocalLayoutDirection()Landroidx/compose/runtime/ProvidableCompositionLocal; # layout-direction local
|
||||||
|
+
|
||||||
|
+ move-result-object v77 # the local
|
||||||
|
+
|
||||||
|
+ sget-object v78, Landroidx/compose/ui/unit/LayoutDirection;->Rtl:Landroidx/compose/ui/unit/LayoutDirection; # right-to-left value
|
||||||
|
+
|
||||||
|
+ invoke-virtual/range {v77 .. v78}, Landroidx/compose/runtime/ProvidableCompositionLocal;->provides(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue; # provide Rtl to local
|
||||||
|
+
|
||||||
|
+ move-result-object v77 # the provided value
|
||||||
|
+
|
||||||
|
+ move-object/from16 v76, v7 # composer
|
||||||
|
+
|
||||||
|
+ invoke-interface/range {v76 .. v77}, Landroidx/compose/runtime/Composer;->startProvider(Landroidx/compose/runtime/ProvidedValue;)V # open Rtl scope (mirror row)
|
||||||
|
+
|
||||||
|
.line 302
|
||||||
|
invoke-static {v15, v9, v1, v2}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxWidth$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
|
||||||
|
|
||||||
|
move-result-object v4
|
||||||
|
|
||||||
|
move/from16 v5, v58
|
||||||
|
@@ -6001,12 +6015,14 @@
|
||||||
|
|
||||||
|
invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/m0;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V
|
||||||
|
|
||||||
|
.line 343
|
||||||
|
invoke-interface {v7}, Landroidx/compose/runtime/Composer;->endNode()V
|
||||||
|
|
||||||
|
+ invoke-interface {v7}, Landroidx/compose/runtime/Composer;->endProvider()V # close Rtl scope (end mirror)
|
||||||
|
+
|
||||||
|
.line 344
|
||||||
|
invoke-static/range {v40 .. v40}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F
|
||||||
|
|
||||||
|
move-result v20
|
||||||
|
|
||||||
|
const/16 v21, 0x7
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/composables/SeekbarAndTimeKt.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/composables/SeekbarAndTimeKt.smali
|
||||||
|
@@ -372,6 +372,10 @@
|
||||||
|
.line 158
|
||||||
|
sget v4, Lcom/tidal/android/feature/playerscreen/ui/composables/o4;->g:F
|
||||||
|
|
||||||
|
+ const/high16 v11, 0x40000000 # 2.0f
|
||||||
|
+
|
||||||
|
+ mul-float/2addr v4, v11 # scale atmos icon 2x as it is too small in stock app
|
||||||
|
+
|
||||||
|
.line 159
|
||||||
|
.line 160
|
||||||
|
invoke-static {v2, v4}, Landroidx/compose/foundation/layout/SizeKt;->height-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
|
||||||
|
@@ -461,6 +465,8 @@
|
||||||
|
.line 200
|
||||||
|
check-cast v3, Lcom/tidal/android/feature/playerscreen/ui/i$a;
|
||||||
|
|
||||||
|
+ iget v13, v3, Lcom/tidal/android/feature/playerscreen/ui/i$a;->b:I
|
||||||
|
+
|
||||||
|
.line 201
|
||||||
|
.line 202
|
||||||
|
iget-object v3, v3, Lcom/tidal/android/feature/playerscreen/ui/i$a;->a:Ljava/lang/String;
|
||||||
|
@@ -481,6 +487,16 @@
|
||||||
|
.line 210
|
||||||
|
move-object v1, v3
|
||||||
|
|
||||||
|
+ invoke-static {v2, v13}, Lradiant/QualityBadge;->modifier(Landroidx/compose/ui/Modifier;I)Landroidx/compose/ui/Modifier;
|
||||||
|
+
|
||||||
|
+ move-result-object v2
|
||||||
|
+
|
||||||
|
+ move-object/from16 v3, p1
|
||||||
|
+
|
||||||
|
+ invoke-static {v13, v3}, Lradiant/QualityBadge;->style(ILn20/e2;)Ln20/e2;
|
||||||
|
+
|
||||||
|
+ move-result-object v8
|
||||||
|
+
|
||||||
|
.line 211
|
||||||
|
const/4 v3, 0x0
|
||||||
|
|
||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/i$a.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/i$a.smali
|
||||||
|
@@ -21,9 +21,21 @@
|
||||||
|
# instance fields
|
||||||
|
.field public final a:Ljava/lang/String;
|
||||||
|
|
||||||
|
+.field public final b:I
|
||||||
|
+
|
||||||
|
|
||||||
|
# direct methods
|
||||||
|
.method public constructor <init>(Ljava/lang/String;)V
|
||||||
|
+ .locals 1
|
||||||
|
+
|
||||||
|
+ const/4 v0, 0x0
|
||||||
|
+
|
||||||
|
+ invoke-direct {p0, p1, v0}, Lcom/tidal/android/feature/playerscreen/ui/i$a;-><init>(Ljava/lang/String;I)V
|
||||||
|
+
|
||||||
|
+ return-void
|
||||||
|
+.end method
|
||||||
|
+
|
||||||
|
+.method public constructor <init>(Ljava/lang/String;I)V
|
||||||
|
.locals 0
|
||||||
|
|
||||||
|
.line 1
|
||||||
|
@@ -34,6 +46,8 @@
|
||||||
|
.line 4
|
||||||
|
iput-object p1, p0, Lcom/tidal/android/feature/playerscreen/ui/i$a;->a:Ljava/lang/String;
|
||||||
|
|
||||||
|
+ iput p2, p0, Lcom/tidal/android/feature/playerscreen/ui/i$a;->b:I
|
||||||
|
+
|
||||||
|
.line 5
|
||||||
|
.line 6
|
||||||
|
return-void
|
||||||
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerViewModel$special$$inlined$mapNotNull$1$2.smali
|
||||||
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerViewModel$special$$inlined$mapNotNull$1$2.smali
|
||||||
|
@@ -1356,6 +1356,14 @@
|
||||||
|
.line 617
|
||||||
|
- move-result v10
|
||||||
|
+ move-result v10 # isCurrentStreamHiResLosslessQuality() result
|
||||||
|
|
||||||
|
+ const/16 v31, 0x0 # LOW / HIGH quality
|
||||||
|
+
|
||||||
|
+ if-eqz v10, :radiant_qbc_not_hires
|
||||||
|
+
|
||||||
|
+ const/16 v31, 0x2 # HI_RES_LOSSLESS quality
|
||||||
|
+
|
||||||
|
+ :radiant_qbc_not_hires
|
||||||
|
+
|
||||||
|
.line 618
|
||||||
|
if-nez v10, :cond_19
|
||||||
|
|
||||||
|
@@ -1368,6 +1376,12 @@
|
||||||
|
.line 623
|
||||||
|
- move-result v10
|
||||||
|
+ move-result v10 # isCurrentStreamLossless() result
|
||||||
|
|
||||||
|
+ if-eqz v10, :radiant_qbc_not_lossless
|
||||||
|
+
|
||||||
|
+ const/16 v31, 0x1 # LOSSLESS quality
|
||||||
|
+
|
||||||
|
+ :radiant_qbc_not_lossless
|
||||||
|
+
|
||||||
|
.line 624
|
||||||
|
if-eqz v10, :cond_18
|
||||||
|
|
||||||
|
@@ -1695,7 +1709,10 @@
|
||||||
|
|
||||||
|
.line 771
|
||||||
|
.line 772
|
||||||
|
- invoke-direct {v8, v5}, Lcom/tidal/android/feature/playerscreen/ui/i$a;-><init>(Ljava/lang/String;)V
|
||||||
|
+ move/from16 v10, v31 # quality
|
||||||
|
+
|
||||||
|
+ invoke-direct {v8, v5, v10}, Lcom/tidal/android/feature/playerscreen/ui/i$a;-><init>(Ljava/lang/String;I)V
|
||||||
|
+
|
||||||
|
|
||||||
|
.line 773
|
||||||
|
.line 774
|
||||||
Reference in New Issue
Block a user