diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1ca9d7d..f647357 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,7 +60,7 @@ jobs: if [[ "$tidal_src" == *.apkm ]]; then echo "Merging splits from $tidal_src via APKEditor" curl --fail --location --retry 3 --retry-delay 2 -sSo /tmp/APKEditor.jar \ - https://github.com/REAndroid/APKEditor/releases/download/V1.4.3/APKEditor-1.4.3.jar + https://github.com/REAndroid/APKEditor/releases/download/V1.4.9/APKEditor-1.4.9.jar java -jar /tmp/APKEditor.jar m -i "$tidal_src" -o ./dist/tidal-stock.apk echo "Merged tidal-stock.apk:" ls -la ./dist/tidal-stock.apk diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/manager/PreferencesManager.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/manager/PreferencesManager.kt index 5c449b1..5345662 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/manager/PreferencesManager.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/manager/PreferencesManager.kt @@ -12,7 +12,6 @@ class PreferencesManager(preferences: SharedPreferences) : BasePreferenceManager var devMode by booleanPreference("dev_mode", false) var installer by enumPreference("installer", InstallerSetting.PackageInstaller) var keepPatchedApks by booleanPreference("keep_patched_apks", false) - var showNetworkWarning by booleanPreference("show_network_warning", true) var showPlayProtectWarning by booleanPreference("show_play_protect_warning", true) var autoUpdateCheck by booleanPreference("auto_update_check", true) diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/components/dialogs/NetworkWarningDialog.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/components/dialogs/NetworkWarningDialog.kt deleted file mode 100644 index 6c9c3ad..0000000 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/components/dialogs/NetworkWarningDialog.kt +++ /dev/null @@ -1,96 +0,0 @@ -package com.meowarex.rlmobile.ui.components.dialogs - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.DialogProperties -import com.meowarex.rlmobile.R - -@Composable -fun NetworkWarningDialog( - onConfirm: (neverShow: Boolean) -> Unit, - onDismiss: (neverShow: Boolean) -> Unit, -) { - val interactionSource = remember(::MutableInteractionSource) - var neverShow by rememberSaveable { mutableStateOf(false) } - val rememberedNeverShow by rememberUpdatedState(neverShow) - - AlertDialog( - onDismissRequest = { onDismiss(rememberedNeverShow) }, - properties = DialogProperties( - dismissOnClickOutside = false, - ), - confirmButton = { - FilledTonalButton( - onClick = { onConfirm(rememberedNeverShow) }, - colors = ButtonDefaults.filledTonalButtonColors( - containerColor = MaterialTheme.colorScheme.error, - contentColor = MaterialTheme.colorScheme.onError, - ), - ) { - Text(stringResource(R.string.action_continue)) - } - }, - dismissButton = { - TextButton( - onClick = { onDismiss(rememberedNeverShow) }, - colors = ButtonDefaults.textButtonColors( - contentColor = MaterialTheme.colorScheme.onErrorContainer - ), - ) { - Text(stringResource(R.string.navigation_back)) - } - }, - title = { Text(stringResource(R.string.network_warning_title)) }, - text = { - Column( - verticalArrangement = Arrangement.spacedBy(12.dp), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - Text( - text = stringResource(R.string.network_warning_body), - textAlign = TextAlign.Center, - ) - - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .clickable( - interactionSource = interactionSource, - indication = null, - onClick = { neverShow = !rememberedNeverShow }, - ) - .padding(end = 16.dp) - ) { - Checkbox( - checked = neverShow, - onCheckedChange = { neverShow = it }, - interactionSource = interactionSource, - ) - - Text(stringResource(R.string.network_warning_disable)) - } - } - }, - icon = { - Icon( - painter = painterResource(R.drawable.ic_warning), - contentDescription = null, - modifier = Modifier.size(32.dp), - ) - }, - containerColor = MaterialTheme.colorScheme.errorContainer, - iconContentColor = MaterialTheme.colorScheme.onErrorContainer, - titleContentColor = MaterialTheme.colorScheme.onErrorContainer, - textContentColor = MaterialTheme.colorScheme.onErrorContainer, - ) -} diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/previews/dialogs/NetworkWarningDialogPreview.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/previews/dialogs/NetworkWarningDialogPreview.kt deleted file mode 100644 index c0621a2..0000000 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/previews/dialogs/NetworkWarningDialogPreview.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.meowarex.rlmobile.ui.previews.dialogs - -import android.content.res.Configuration -import androidx.compose.runtime.Composable -import androidx.compose.ui.tooling.preview.Preview -import com.meowarex.rlmobile.ui.components.dialogs.NetworkWarningDialog -import com.meowarex.rlmobile.ui.theme.ManagerTheme - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun NetworkWarningDialogPreview() { - ManagerTheme { - NetworkWarningDialog( - onConfirm = {}, - onDismiss = {}, - ) - } -} diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreen.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreen.kt index a7d5d4e..1c713fe 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreen.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreen.kt @@ -28,7 +28,6 @@ import com.meowarex.rlmobile.patcher.steps.StepGroup import com.meowarex.rlmobile.ui.components.MainActionButton import com.meowarex.rlmobile.ui.components.Wakelock import com.meowarex.rlmobile.ui.components.dialogs.InstallerAbortDialog -import com.meowarex.rlmobile.ui.components.dialogs.NetworkWarningDialog import com.meowarex.rlmobile.ui.screens.log.LogScreen import com.meowarex.rlmobile.ui.screens.patching.components.* import com.meowarex.rlmobile.ui.screens.patchopts.PatchOptions @@ -111,19 +110,6 @@ class PatchingScreen( listState.animateScrollToItem(0) } - if (model.showNetworkWarningDialog) { - NetworkWarningDialog( - onConfirm = { neverShow -> - model.hideNetworkWarning(neverShow) - model.install() - }, - onDismiss = { neverShow -> - model.hideNetworkWarning(neverShow) - navigator.pop() - }, - ) - } - if (showAbortWarning) { InstallerAbortDialog( onDismiss = { showAbortWarning = false }, diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreenModel.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreenModel.kt index 761d955..e902d74 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreenModel.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patching/PatchingScreenModel.kt @@ -41,9 +41,6 @@ class PatchingScreenModel( val devMode get() = prefs.devMode - var showNetworkWarningDialog by mutableStateOf(!alreadyShownNetworkWarning && application.isNetworkDangerous()) - private set - var steps by mutableStateOf>?>(null) private set @@ -52,11 +49,7 @@ class PatchingScreenModel( private set init { - if (!prefs.showNetworkWarning) - showNetworkWarningDialog = false - - if (!showNetworkWarningDialog) - install() + install() // Rotate fun facts every so often screenModelScope.launch { @@ -67,12 +60,6 @@ class PatchingScreenModel( } } - fun hideNetworkWarning(neverShow: Boolean) { - showNetworkWarningDialog = false - alreadyShownNetworkWarning = true - prefs.showNetworkWarning = !neverShow - } - fun launchApp() { if (state.value !is PatchingScreenState.Success) return @@ -194,9 +181,6 @@ class PatchingScreenModel( } companion object { - // Global state to avoid showing the warning more than once per launch - private var alreadyShownNetworkWarning = false - /** * Random fun facts to show on the installation screen. */ diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/util/Context.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/util/Context.kt index 6368d32..96aa146 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/util/Context.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/util/Context.kt @@ -5,11 +5,9 @@ import android.app.Activity import android.content.* import android.content.pm.PackageManager import android.content.res.Resources -import android.net.ConnectivityManager import android.net.Uri import android.os.* import android.provider.Settings -import android.telephony.TelephonyManager import android.util.Log import android.util.TypedValue import android.widget.Toast @@ -152,37 +150,6 @@ suspend fun Context.isPlayProtectEnabled(): Boolean? { } } -/** - * Check whether the device is connected on a metered WIFI connection or through any type of mobile data, - * to avoid unknowingly downloading a lot of stuff through a potentially metered network. - */ -@Suppress("DEPRECATION") -fun Context.isNetworkDangerous(): Boolean { - val connectivity = this.getSystemService() - ?: error("Unable to get system connectivity service") - - if (connectivity.isActiveNetworkMetered) return true - - when (val info = connectivity.activeNetworkInfo) { - null -> return false - else -> { - if (info.isRoaming) return true - if (info.type == ConnectivityManager.TYPE_WIFI) return false - } - } - - val telephony = this.getSystemService() - ?: error("Unable to get system telephony service") - - val dangerousMobileDataStates = arrayOf( - /* TelephonyManager.DATA_DISCONNECTING */ 4, - TelephonyManager.DATA_CONNECTED, - TelephonyManager.DATA_CONNECTING, - ) - - return dangerousMobileDataStates.contains(telephony.dataState) -} - /** * Gets the user associated with this context. */ diff --git a/Manager/app/src/main/res/values/strings.xml b/Manager/app/src/main/res/values/strings.xml index e8e0d5b..5fbbd1a 100644 --- a/Manager/app/src/main/res/values/strings.xml +++ b/Manager/app/src/main/res/values/strings.xml @@ -315,7 +315,7 @@ Open Play Protect Don\'t show this again - Fun Fact: %s + %s Did you know that TIDAL no longer like blur! Radiant Lyrics is also available for DESKTOP!!! i am in your walls! diff --git a/patches/data.json b/patches/data.json index bee144d..13a898f 100644 --- a/patches/data.json +++ b/patches/data.json @@ -1,5 +1,5 @@ { - "tidalVersionCode": 9089, + "tidalVersionCode": 9090, "tidalApkUrl": "https://github.com/meowarex/rl-mobile/releases/download/latest/tidal-stock.apk", - "patchesVersion": "0.6.0" + "patchesVersion": "0.7.6" } diff --git a/patches/debug-menu-unlock.patch b/patches/debug-menu-unlock.patch index 63f57ab..80e3898 100644 --- a/patches/debug-menu-unlock.patch +++ b/patches/debug-menu-unlock.patch @@ -1,43 +1,36 @@ --- a/com/tidal/android/core/debug/DebugFeatureInteractorDefault.smali +++ b/com/tidal/android/core/debug/DebugFeatureInteractorDefault.smali -@@ -53,6 +53,11 @@ +@@ -54,6 +54,9 @@ .method public final a()Z .locals 2 -+ # rl-debug-unlock: force a() to always return true, bypassing the -+ # "debug-menu" feature flag check that normally hides the Settings entry. -+ const/4 v0, 0x1 -+ return v0 ++ const/4 v0, 0x1 # force true ++ return v0 # bypass debug flag + .line 1 iget-object v0, p0, Lcom/tidal/android/core/debug/DebugFeatureInteractorDefault;->a:Lcom/tidal/android/featureflags/l; -@@ -97,6 +102,14 @@ +@@ -98,6 +101,14 @@ } .end annotation -+ # rl-debug-unlock: short-circuit b() to always emit MutableStateFlow(TRUE). -+ # Mirrors the original ":cond_1 :goto_0" path the app uses for internal/test builds. -+ sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; ++ sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; # always-true value + -+ invoke-static {v0}, Lkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; ++ invoke-static {v0}, Lkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow; # wrap in flow + -+ move-result-object v0 ++ move-result-object v0 # the flow + -+ return-object v0 ++ return-object v0 # short-circuit b() + .line 1 - sget-object v0, Lh50/a;->a:Ljava/lang/String; + sget-object v0, Lj50/a;->a:Ljava/lang/String; -@@ -261,6 +274,11 @@ +@@ -261,5 +272,8 @@ .method public final c()Z .locals 3 -+ # rl-debug-unlock: force c() to always return true, bypassing the -+ # applicationId-substring / in-app-bug-reports / export-logs flag checks. -+ const/4 v0, 0x1 -+ return v0 ++ const/4 v0, 0x1 # force true ++ return v0 # bypass debug flag + .line 1 - sget-object v0, Lh50/a;->a:Ljava/lang/String; - + sget-object v0, Lj50/a;->a:Ljava/lang/String; diff --git a/patches/enable-legacy-ui.patch b/patches/enable-legacy-ui.patch index aa9d04c..de2d202 100644 --- a/patches/enable-legacy-ui.patch +++ b/patches/enable-legacy-ui.patch @@ -1,7 +1,7 @@ ---- a/ig/d.smali -+++ b/ig/d.smali +--- a/kg/e.smali ++++ b/kg/e.smali @@ -26,8 +26,8 @@ - new-instance v0, Lig/d; + new-instance v0, Lkg/e; .line 2 .line 3 diff --git a/patches/extension/radiant/NoOp.smali b/patches/extension/radiant/NoOp.smali index 3228036..fbdd779 100644 --- a/patches/extension/radiant/NoOp.smali +++ b/patches/extension/radiant/NoOp.smali @@ -1,6 +1,6 @@ .class public final Lradiant/NoOp; .super Ljava/lang/Object; -.implements Ltl0/a; +.implements Lyl0/a; # static fields diff --git a/patches/extension/radiant/SparkleButton.smali b/patches/extension/radiant/SparkleButton.smali index 74e6eaa..f53c1f9 100644 --- a/patches/extension/radiant/SparkleButton.smali +++ b/patches/extension/radiant/SparkleButton.smali @@ -4,7 +4,7 @@ # direct methods -.method public static final a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V +.method public static final a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V .locals 21 .annotation build Landroidx/compose/runtime/Composable; .end annotation @@ -98,7 +98,7 @@ const/4 v4, 0x6 - invoke-static {v2, v11, v4}, Lcom/squareup/ui/market/core/theme/w;->t(Lcom/squareup/ui/market/core/theme/k$a;Landroidx/compose/runtime/Composer;I)Lcom/squareup/ui/market/core/theme/MarketStylesheet; + invoke-static {v2, v11, v4}, Lcom/squareup/ui/market/core/theme/x;->t(Lcom/squareup/ui/market/core/theme/k$a;Landroidx/compose/runtime/Composer;I)Lcom/squareup/ui/market/core/theme/MarketStylesheet; move-result-object v15 @@ -131,7 +131,7 @@ const/16 v18, 0x0 - invoke-static/range {v15 .. v20}, Lcom/squareup/ui/market/components/MarketIconButtonKt;->P(Lcom/squareup/ui/market/core/theme/MarketStylesheet;Lcom/squareup/ui/market/core/components/properties/IconButton$Size;Lcom/squareup/ui/market/core/components/properties/IconButton$Rank;Lcom/squareup/ui/market/core/components/properties/IconButton$Variant;ILjava/lang/Object;)Ll20/v1; + invoke-static/range {v15 .. v20}, Lcom/squareup/ui/market/components/MarketIconButtonKt;->P(Lcom/squareup/ui/market/core/theme/MarketStylesheet;Lcom/squareup/ui/market/core/components/properties/IconButton$Size;Lcom/squareup/ui/market/core/components/properties/IconButton$Rank;Lcom/squareup/ui/market/core/components/properties/IconButton$Variant;ILjava/lang/Object;)Ln20/w1; move-result-object v4 @@ -140,7 +140,7 @@ :cond_5 move-object v9, v4 - check-cast v9, Ll20/v1; + check-cast v9, Ln20/w1; sget v2, Lcom/tidal/android/feature/playerscreen/ui/R$string;->lyrics:I @@ -172,7 +172,7 @@ const/4 v8, 0x0 - invoke-static/range {v1 .. v13}, Lcom/squareup/ui/market/components/MarketIconButtonKt;->c(Ltl0/a;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLcom/squareup/ui/market/components/n;Ltl0/a;Ljava/lang/String;Ll20/v1;Ltl0/p;Landroidx/compose/runtime/Composer;II)V + invoke-static/range {v1 .. v13}, Lcom/squareup/ui/market/components/MarketIconButtonKt;->c(Lyl0/a;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;ZLcom/squareup/ui/market/components/n;Lyl0/a;Ljava/lang/String;Ln20/w1;Lyl0/p;Landroidx/compose/runtime/Composer;II)V invoke-static {}, Landroidx/compose/runtime/ComposerKt;->isTraceInProgress()Z diff --git a/patches/extension/radiant/SparkleContent.smali b/patches/extension/radiant/SparkleContent.smali index 23c6330..3284dfb 100644 --- a/patches/extension/radiant/SparkleContent.smali +++ b/patches/extension/radiant/SparkleContent.smali @@ -3,7 +3,7 @@ .source "SourceFile" # interfaces -.implements Ltl0/p; +.implements Lyl0/p; # virtual methods diff --git a/patches/extension/radiant/SpvFactory.smali b/patches/extension/radiant/SpvFactory.smali index 9339c6d..59e9f4d 100644 --- a/patches/extension/radiant/SpvFactory.smali +++ b/patches/extension/radiant/SpvFactory.smali @@ -1,6 +1,6 @@ .class public final Lradiant/SpvFactory; .super Ljava/lang/Object; -.implements Ltl0/l; +.implements Lyl0/l; # static fields diff --git a/patches/lyrics-disable-cover.patch b/patches/lyrics-disable-cover.patch index 81b64fe..148fd9a 100644 --- a/patches/lyrics-disable-cover.patch +++ b/patches/lyrics-disable-cover.patch @@ -1,26 +1,26 @@ ---- a/com/tidal/android/feature/playerscreen/ui/g0.smali -+++ b/com/tidal/android/feature/playerscreen/ui/g0.smali -@@ -666,8 +666,23 @@ +--- a/com/tidal/android/feature/playerscreen/ui/h0.smali ++++ b/com/tidal/android/feature/playerscreen/ui/h0.smali +@@ -669,8 +669,23 @@ move-object v5, v1 - - .line 288 + + .line 289 + const v1, 0x52414443 # group key + + invoke-interface {v7, v1}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open group around the cover + -+ iget-object v1, v0, Lcom/tidal/android/feature/playerscreen/ui/g0;->b:Lcom/tidal/android/feature/playerscreen/ui/r$a; # player state ++ iget-object v1, v0, Lcom/tidal/android/feature/playerscreen/ui/h0;->b:Lcom/tidal/android/feature/playerscreen/ui/r$a; # player state + + iget-object v1, v1, Lcom/tidal/android/feature/playerscreen/ui/r$a;->j:Lcom/tidal/android/feature/playerscreen/ui/g; # current view mode + -+ instance-of v1, v1, Lcom/tidal/android/feature/playerscreen/ui/g$a; # only render when on cover mode ++ instance-of v1, v1, Lcom/tidal/android/feature/playerscreen/ui/g$a; # cover mode only + + if-eqz v1, :radiant_after_cover # lyrics/credits mode -> skip cover + - invoke-static/range {v2 .. v9}, Lcom/tidal/android/feature/playerscreen/ui/composables/CoverPagerKt;->c(Lcom/tidal/android/feature/playerscreen/ui/d;Ltl0/l;FLandroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V + invoke-static/range {v2 .. v9}, Lcom/tidal/android/feature/playerscreen/ui/composables/CoverPagerKt;->c(Lcom/tidal/android/feature/playerscreen/ui/d;Lyl0/l;FLandroidx/compose/ui/Modifier;ZLandroidx/compose/runtime/Composer;II)V -+ :radiant_after_cover ++ :radiant_after_cover # skip target + invoke-interface {v7}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close group + - .line 289 .line 290 .line 291 + .line 292 diff --git a/patches/lyrics-fade-region.patch b/patches/lyrics-fade-region.patch index fb20411..f9967ea 100644 --- a/patches/lyrics-fade-region.patch +++ b/patches/lyrics-fade-region.patch @@ -1,11 +1,37 @@ ---- a/com/tidal/android/feature/playerscreen/ui/composables/k1.smali -+++ b/com/tidal/android/feature/playerscreen/ui/composables/k1.smali -@@ -64,7 +64,7 @@ - +--- a/com/tidal/android/feature/playerscreen/ui/composables/o1.smali ++++ b/com/tidal/android/feature/playerscreen/ui/composables/o1.smali +@@ -64,26 +64,29 @@ + .line 16 .line 17 -- iget v2, p0, Lcom/tidal/android/feature/playerscreen/ui/composables/k1;->a:F -+ const/high16 v2, 0x43480000 # hardcode top fade region to 200dp (decouple from contentPadding) - +- iget v2, p0, Lcom/tidal/android/feature/playerscreen/ui/composables/o1;->a:F ++ const/high16 v2, 0x43200000 # 160f start dp + .line 18 .line 19 + invoke-interface {p1, v2}, Landroidx/compose/ui/unit/Density;->toPx-0680j_4(F)F + + .line 20 + .line 21 + .line 22 +- move-result v3 ++ move-result v2 # startY in px ++ ++ const/high16 v3, 0x435c0000 # 220f end dp ++ ++ invoke-interface {p1, v3}, Landroidx/compose/ui/unit/Density;->toPx-0680j_4(F)F # dp to px ++ ++ move-result v3 # endY in px + + .line 23 + const/16 v5, 0x8 + + .line 24 + .line 25 + const/4 v6, 0x0 + +- .line 26 +- const/4 v2, 0x0 +- + .line 27 + const/4 v4, 0x0 diff --git a/patches/lyrics-progress-pill.patch b/patches/lyrics-progress-pill.patch index 8d6431f..e99cb68 100644 --- a/patches/lyrics-progress-pill.patch +++ b/patches/lyrics-progress-pill.patch @@ -1,6 +1,6 @@ ---- a/com/tidal/android/feature/playerscreen/ui/b0.smali -+++ b/com/tidal/android/feature/playerscreen/ui/b0.smali -@@ -45,7 +45,7 @@ +--- a/com/tidal/android/feature/playerscreen/ui/c0.smali ++++ b/com/tidal/android/feature/playerscreen/ui/c0.smali +@@ -47,7 +47,7 @@ # virtual methods .method public final invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -9,9 +9,9 @@ .line 1 move-object/from16 v0, p0 -@@ -460,6 +460,64 @@ +@@ -461,6 +461,64 @@ .line 200 - invoke-static/range {v2 .. v9}, Lcom/tidal/android/feature/playerscreen/ui/composables/LyricsKt;->a(Lcom/tidal/android/feature/playerscreen/ui/g;Ltl0/l;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Ltl0/l;Landroidx/compose/runtime/Composer;II)V + invoke-static/range {v2 .. v9}, Lcom/tidal/android/feature/playerscreen/ui/composables/LyricsKt;->a(Lcom/tidal/android/feature/playerscreen/ui/g;Lyl0/l;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;Lyl0/l;Landroidx/compose/runtime/Composer;II)V + sget-object v17, Lradiant/SpvFactory;->a:Lradiant/SpvFactory; # progress view factory + @@ -29,7 +29,7 @@ + + const/16 v24, 0x0 # synthetic null + -+ invoke-static/range {v18 .. v24}, Landroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ltl0/a;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; # apply clickable ++ invoke-static/range {v18 .. v24}, Landroidx/compose/foundation/ClickableKt;->clickable-XHw0xAI$default(Landroidx/compose/ui/Modifier;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lyl0/a;ILjava/lang/Object;)Landroidx/compose/ui/Modifier; # apply clickable + + move-result-object v23 # clickable modifier + @@ -69,7 +69,7 @@ + + const/16 v22, 0x4 # default mask + -+ invoke-static/range {v17 .. v22}, Landroidx/compose/ui/viewinterop/AndroidView_androidKt;->AndroidView(Ltl0/l;Landroidx/compose/ui/Modifier;Ltl0/l;Landroidx/compose/runtime/Composer;II)V # mount progress pill ++ invoke-static/range {v17 .. v22}, Landroidx/compose/ui/viewinterop/AndroidView_androidKt;->AndroidView(Lyl0/l;Landroidx/compose/ui/Modifier;Lyl0/l;Landroidx/compose/runtime/Composer;II)V # mount progress pill + .line 201 .line 202 diff --git a/patches/lyrics-replace-lyrics-button.patch b/patches/lyrics-replace-lyrics-button.patch index 408fb5f..7107f90 100644 --- a/patches/lyrics-replace-lyrics-button.patch +++ b/patches/lyrics-replace-lyrics-button.patch @@ -1,11 +1,11 @@ # rl-locals: com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali e( 79 --- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali +++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali -@@ -4931,7 +4931,11 @@ - const/4 v10, 0x0 +@@ -4945,7 +4945,11 @@ + const/4 v7, 0x0 .line 226 -- invoke-static {v10, v9, v4, v2, v7}, Lcom/tidal/android/feature/playerscreen/ui/composables/h1;->a(Landroidx/compose/ui/Modifier;Ltl0/a;ZLandroidx/compose/runtime/Composer;I)V +- invoke-static {v7, v9, v4, v2, v10}, Lcom/tidal/android/feature/playerscreen/ui/composables/k1;->a(Landroidx/compose/ui/Modifier;Lyl0/a;ZLandroidx/compose/runtime/Composer;I)V + const v10, 0x52414448 # empty group key + + invoke-interface {v2, v10}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open empty @@ -14,21 +14,21 @@ .line 227 invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V -@@ -5838,6 +5838,22 @@ +@@ -5720,6 +5724,22 @@ :cond_51 - check-cast v4, Ltl0/a; + check-cast v4, Lyl0/a; const/4 v2, 0x0 - invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/h3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V + invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/l3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V + -+ new-instance v74, Lc8/j; # lyrics-toggle lambda ++ new-instance v74, Lcom/tidal/android/feature/playerscreen/ui/g0; # lyrics toggle lambda + -+ move-object/from16 v75, p5 # lambda receiver ++ move-object/from16 v75, p5 # action dispatcher + -+ const/16 v76, 0x1 # lyrics action ++ const/16 v76, 0x0 # lyrics action disc + -+ invoke-direct/range {v74 .. v76}, Lc8/j;->(Ljava/lang/Object;I)V # build lambda ++ invoke-direct/range {v74 .. v76}, Lcom/tidal/android/feature/playerscreen/ui/g0;->(Ljava/lang/Object;I)V # build lambda + + const/16 v71, 0x0 # changed flags + @@ -36,4 +36,4 @@ + + const/16 v73, 0x0 # null modifier + -+ invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V # render sparkle button ++ invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V # render sparkle button diff --git a/patches/lyrics-replace-share-button.patch b/patches/lyrics-replace-share-button.patch index 942320d..85723ca 100644 --- a/patches/lyrics-replace-share-button.patch +++ b/patches/lyrics-replace-share-button.patch @@ -1,10 +1,10 @@ --- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali +++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali -@@ -5086,7 +5086,11 @@ +@@ -5094,7 +5094,11 @@ const/4 v13, 0x0 .line 247 -- invoke-static {v9, v0, v13, v2, v10}, Lcom/tidal/android/feature/playerscreen/ui/composables/BroadcastButtonKt;->b(Lcom/tidal/android/feature/playerscreen/ui/b;Ltl0/a;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V +- invoke-static {v9, v0, v10, v2, v13}, Lcom/tidal/android/feature/playerscreen/ui/composables/BroadcastButtonKt;->b(Lcom/tidal/android/feature/playerscreen/ui/b;Lyl0/a;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V + const v9, 0x52414244 # empty group key + + invoke-interface {v2, v9}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open empty @@ -13,39 +13,38 @@ .line 248 invoke-interface {v2}, Landroidx/compose/runtime/Composer;->endNode()V -@@ -5758,17 +5758,19 @@ +@@ -5770,16 +5774,20 @@ + .line 335 :cond_53 -- new-instance v4, Landroidx/compose/foundation/text/input/internal/selection/l; +- new-instance v4, Lcom/aspiro/wamp/tidalconnect/playback/i; - -- const/4 v6, 0x2 -- -- invoke-direct {v4, v11, v6}, Landroidx/compose/foundation/text/input/internal/selection/l;->(Ljava/lang/Object;I)V +- invoke-direct {v4, v11, v1}, Lcom/aspiro/wamp/tidalconnect/playback/i;->(Ljava/lang/Object;I)V - - .line 336 - invoke-interface {v7, v4}, Landroidx/compose/runtime/Composer;->updateRememberedValue(Ljava/lang/Object;)V - - .line 337 - :cond_54 -- check-cast v4, Ltl0/a; +- check-cast v4, Lyl0/a; - - const/4 v2, 0x0 - -- invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/u4;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V -+ new-instance v4, Lcom/tidal/android/feature/playerscreen/ui/f0; # connect click lambda +- invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/x4;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V ++ new-instance v4, Lcom/aspiro/wamp/tidalconnect/playback/i; # connect click lambda factory + + move-object/from16 v6, p5 # action dispatcher + -+ const/4 v8, 0x0 # connect-clicked discriminator ++ const/4 v8, 0x1 # connect-clicked disc + -+ invoke-direct {v4, v6, v8}, Lcom/tidal/android/feature/playerscreen/ui/f0;->(Ljava/lang/Object;I)V # build lambda ++ invoke-direct {v4, v6, v8}, Lcom/aspiro/wamp/tidalconnect/playback/i;->(Ljava/lang/Object;I)V # build lambda + + invoke-interface {v7, v4}, Landroidx/compose/runtime/Composer;->updateRememberedValue(Ljava/lang/Object;)V # cache lambda + -+ :cond_54 -+ check-cast v4, Ltl0/a; ++ :cond_54 # cache join ++ check-cast v4, Lyl0/a; # cast to Function0 + + iget-object v8, v10, Lcom/tidal/android/feature/playerscreen/ui/r$a;->d:Lcom/tidal/android/feature/playerscreen/ui/b; # broadcast state + + const/4 v2, 0x0 # changed flags + -+ invoke-static {v8, v4, v13, v7, v2}, Lcom/tidal/android/feature/playerscreen/ui/composables/BroadcastButtonKt;->b(Lcom/tidal/android/feature/playerscreen/ui/b;Ltl0/a;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V # render connect button ++ invoke-static {v8, v4, v13, v7, v2}, Lcom/tidal/android/feature/playerscreen/ui/composables/BroadcastButtonKt;->b(Lcom/tidal/android/feature/playerscreen/ui/b;Lyl0/a;Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V # render connect button diff --git a/patches/lyrics-sparkle-conditional-visibility.patch b/patches/lyrics-sparkle-conditional-visibility.patch index 1646829..9e30f43 100644 --- a/patches/lyrics-sparkle-conditional-visibility.patch +++ b/patches/lyrics-sparkle-conditional-visibility.patch @@ -1,7 +1,7 @@ --- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali +++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali -@@ -5854,17 +5854,38 @@ - invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/h3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V +@@ -5725,17 +5725,38 @@ + invoke-static {v13, v7, v2, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/l3;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V + + iget-boolean v2, v10, Lcom/tidal/android/feature/playerscreen/ui/r$a;->i:Z # hasLyrics flag + @@ -11,13 +11,13 @@ + + invoke-interface {v7, v2}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open lyrics branch - new-instance v74, Lc8/j; # lyrics-toggle lambda + new-instance v74, Lcom/tidal/android/feature/playerscreen/ui/g0; # lyrics toggle lambda - move-object/from16 v75, p5 # lambda receiver + move-object/from16 v75, p5 # action dispatcher - const/16 v76, 0x1 # lyrics action + const/16 v76, 0x0 # lyrics action disc - invoke-direct/range {v74 .. v76}, Lc8/j;->(Ljava/lang/Object;I)V # build lambda + invoke-direct/range {v74 .. v76}, Lcom/tidal/android/feature/playerscreen/ui/g0;->(Ljava/lang/Object;I)V # build lambda const/16 v71, 0x0 # changed flags @@ -25,17 +25,17 @@ const/16 v73, 0x0 # null modifier - invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Ltl0/a;)V # render sparkle button + invoke-static/range {v71 .. v74}, Lradiant/SparkleButton;->a(ILandroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;Lyl0/a;)V # render sparkle button + + invoke-interface {v7}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close lyrics branch + + goto :goto_sparkle_done # skip empty branch + -+ :cond_sparkle_no_lyrics ++ :cond_sparkle_no_lyrics # no-lyrics branch + const v2, 0x3057f75c # group key (no lyrics) + + invoke-interface {v7, v2}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open empty + + invoke-interface {v7}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close empty + -+ :goto_sparkle_done ++ :goto_sparkle_done # join target diff --git a/patches/player-backdrop.patch b/patches/player-backdrop.patch index 7567e6d..77067f1 100644 --- a/patches/player-backdrop.patch +++ b/patches/player-backdrop.patch @@ -1,11 +1,11 @@ # rl-locals: com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali e( 71 --- a/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali +++ b/com/tidal/android/feature/playerscreen/ui/PlayerScreenKt.smali -@@ -4164,6 +4164,133 @@ - - invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Ltl0/p;)V - -+ const v3, 0x52414449 # group key for slot table +@@ -4172,6 +4172,133 @@ + + invoke-static {v5, v3, v4}, Landroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lyl0/p;)V + ++ const v3, 0x52414449 # slot table key + + invoke-interface {v10, v3}, Landroidx/compose/runtime/Composer;->startReplaceGroup(I)V # open group + @@ -13,75 +13,75 @@ + + iget-object v3, v3, Lcom/tidal/android/feature/playerscreen/ui/r$a;->c:Lcom/tidal/android/feature/playerscreen/ui/d; # cover pager + -+ iget-object v4, v3, Lcom/tidal/android/feature/playerscreen/ui/d;->a:Lon0/b; # item list ++ iget-object v4, v3, Lcom/tidal/android/feature/playerscreen/ui/d;->a:Ltn0/b; # item list + + iget v5, v3, Lcom/tidal/android/feature/playerscreen/ui/d;->b:I # current index + -+ invoke-interface {v4}, Ljava/util/List;->size()I ++ invoke-interface {v4}, Ljava/util/List;->size()I # list size + -+ move-result v6 ++ move-result v6 # size value + -+ if-le v6, v5, :radiant_skip # index out of bounds -> skip ++ if-le v6, v5, :radiant_skip # bounds check + -+ if-ltz v5, :radiant_skip ++ if-ltz v5, :radiant_skip # negative check + -+ invoke-interface {v4, v5}, Ljava/util/List;->get(I)Ljava/lang/Object; ++ invoke-interface {v4, v5}, Ljava/util/List;->get(I)Ljava/lang/Object; # current item + -+ move-result-object v4 ++ move-result-object v4 # current item + + instance-of v6, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # only album covers + -+ if-eqz v6, :radiant_skip ++ if-eqz v6, :radiant_skip # skip non-albums + -+ check-cast v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; ++ check-cast v4, Lcom/tidal/android/feature/playerscreen/ui/c$a; # narrow type + + iget v5, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a;->b:I # album id + + iget-object v4, v4, Lcom/tidal/android/feature/playerscreen/ui/c$a;->c:Ljava/lang/String; # cover uuid + -+ new-instance v6, Lcom/tidal/android/feature/playerscreen/ui/composables/p0; # tidal's cover request ++ 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/p0;->(ILjava/lang/String;)V ++ invoke-direct {v6, v5, v4}, Lcom/tidal/android/feature/playerscreen/ui/composables/n0;->(ILjava/lang/String;)V # build request + -+ sget-object v5, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; ++ sget-object v5, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; # base modifier + -+ const/4 v7, 0x0 ++ const/4 v7, 0x0 # fraction unused + -+ const/4 v8, 0x1 ++ const/4 v8, 0x1 # default fraction + -+ const/4 v3, 0x0 ++ const/4 v3, 0x0 # synthetic null + + invoke-static {v5, v7, v8, v3}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; # fill the player root + -+ move-result-object v5 ++ move-result-object v5 # filled modifier + -+ const/high16 v7, 0x42b40000 # 90f (blur radius dp) ++ const/high16 v7, 0x42b40000 # 90f blur dp + -+ invoke-static {v7}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F ++ invoke-static {v7}, Landroidx/compose/ui/unit/Dp;->constructor-impl(F)F # to Dp + -+ move-result v7 ++ move-result v7 # blur dp value + -+ sget-object v8, Landroidx/compose/ui/draw/BlurredEdgeTreatment;->Companion:Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion; ++ sget-object v8, Landroidx/compose/ui/draw/BlurredEdgeTreatment;->Companion:Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion; # blur edge companion + -+ invoke-virtual {v8}, Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion;->getRectangle---Goahg()Landroidx/compose/ui/graphics/Shape; ++ invoke-virtual {v8}, Landroidx/compose/ui/draw/BlurredEdgeTreatment$Companion;->getRectangle---Goahg()Landroidx/compose/ui/graphics/Shape; # rectangle treatment + -+ move-result-object v8 ++ move-result-object v8 # edge shape + + invoke-static {v5, v7, v8}, Landroidx/compose/ui/draw/BlurKt;->blur-F8QBwvs(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; # apply blur + -+ move-result-object v5 ++ move-result-object v5 # blurred modifier + -+ sget-object v7, Landroidx/compose/ui/layout/ContentScale;->Companion:Landroidx/compose/ui/layout/ContentScale$Companion; ++ sget-object v7, Landroidx/compose/ui/layout/ContentScale;->Companion:Landroidx/compose/ui/layout/ContentScale$Companion; # scale companion + + invoke-virtual {v7}, Landroidx/compose/ui/layout/ContentScale$Companion;->getCrop()Landroidx/compose/ui/layout/ContentScale; # cover-crop scaling + -+ move-result-object v7 ++ move-result-object v7 # crop scale + + move-object/from16 v61, v6 # request + + const/16 v62, 0x0 # contentDescription + -+ move-object/from16 v63, v5 # modifier (blurred + fillMaxSize) ++ move-object/from16 v63, v5 # blurred modifier + + const/16 v64, 0x0 # colorFilter + @@ -89,49 +89,49 @@ + + move-object/from16 v66, v4 # cover uuid + -+ const/16 v67, 0x0 ++ const/16 v67, 0x0 # null onError + + move-object/from16 v68, v10 # composer + -+ const/16 v69, 0x0 ++ const/16 v69, 0x0 # changed flags + -+ const/16 v70, 0x48 ++ const/16 v70, 0x48 # default mask + -+ invoke-static/range {v61 .. v70}, Lsd0/f;->a(Ltl0/l;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/ui/layout/ContentScale;Ljava/lang/Object;Ltl0/a;Landroidx/compose/runtime/Composer;II)V # render blurred cover ++ invoke-static/range {v61 .. v70}, Lxd0/f;->a(Lyl0/l;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/ui/layout/ContentScale;Ljava/lang/Object;Lyl0/a;Landroidx/compose/runtime/Composer;II)V # render blurred cover + + sget-object v3, Landroidx/compose/ui/Modifier;->Companion:Landroidx/compose/ui/Modifier$Companion; # scrim chain start + + const/4 v4, 0x0 # fraction unused + -+ const/4 v5, 0x1 # $default mask ++ const/4 v5, 0x1 # default mask + + const/4 v6, 0x0 # null obj + + invoke-static {v3, v4, v5, v6}, Landroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier; # fill screen + -+ move-result-object v3 # modifier ++ move-result-object v3 # fullscreen modifier + -+ const v6, -0x80000000 # 0x80000000 = 50% black ++ const v6, -0x80000000 # 50% black ARGB + -+ invoke-static {v6}, Landroidx/compose/ui/graphics/ColorKt;->Color(I)J # pack ARGB long ++ invoke-static {v6}, Landroidx/compose/ui/graphics/ColorKt;->Color(I)J # pack color long + -+ move-result-wide v6 # color ++ move-result-wide v6 # color long + + invoke-static {}, Landroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape; # rect shape + -+ move-result-object v4 # shape ++ move-result-object v4 # rect shape + + invoke-static {v3, v6, v7, v4}, Landroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier; # tint with scrim + -+ move-result-object v3 # modifier ++ move-result-object v3 # tinted modifier + -+ const/4 v4, 0x0 # $changed flags ++ const/4 v4, 0x0 # changed flags + + invoke-static {v3, v10, v4}, Landroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V # draw scrim + -+ :radiant_skip ++ :radiant_skip # skip target + invoke-interface {v10}, Landroidx/compose/runtime/Composer;->endReplaceGroup()V # close group + .line 138 sget-object v3, Landroidx/compose/foundation/layout/BoxScopeInstance;->INSTANCE:Landroidx/compose/foundation/layout/BoxScopeInstance; - + diff --git a/tidal-apk/com.aspiro.tidal_2.192.0-9089_1arch_3dpi_24lang_c83a23222f1eac5745b14c826738c6d0_apkmirror.com.apkm b/tidal-apk/com.aspiro.tidal_2.192.1-9090_4arch_7dpi_24lang_56762977dcaecf1452892e71fe48d6f0_apkmirror.com.apkm similarity index 73% rename from tidal-apk/com.aspiro.tidal_2.192.0-9089_1arch_3dpi_24lang_c83a23222f1eac5745b14c826738c6d0_apkmirror.com.apkm rename to tidal-apk/com.aspiro.tidal_2.192.1-9090_4arch_7dpi_24lang_56762977dcaecf1452892e71fe48d6f0_apkmirror.com.apkm index 94524a6..72f3c09 100644 Binary files a/tidal-apk/com.aspiro.tidal_2.192.0-9089_1arch_3dpi_24lang_c83a23222f1eac5745b14c826738c6d0_apkmirror.com.apkm and b/tidal-apk/com.aspiro.tidal_2.192.1-9090_4arch_7dpi_24lang_56762977dcaecf1452892e71fe48d6f0_apkmirror.com.apkm differ