mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-08-27 06:27:46 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdbcc4fc62 | ||
|
|
3b893c12ff | ||
|
|
9d60e3dc80 | ||
|
|
36382437f1 | ||
|
|
5dc9188772 | ||
|
|
7823a54d11 | ||
|
|
4d5fea843e | ||
|
|
d6bc889387 | ||
|
|
8501ccb0a9 | ||
|
|
ad6ebac6ce | ||
|
|
320148e774 | ||
|
|
d8e119eb4b | ||
|
|
10e5dcf365 |
@@ -70,6 +70,12 @@ enum class KnownPatch(
|
|||||||
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,
|
||||||
),
|
),
|
||||||
|
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,
|
||||||
|
),
|
||||||
CoverEverywhere(
|
CoverEverywhere(
|
||||||
order = 35,
|
order = 35,
|
||||||
fileNames = listOf(
|
fileNames = listOf(
|
||||||
@@ -130,6 +136,7 @@ enum class KnownPatch(
|
|||||||
LyricsRlApi,
|
LyricsRlApi,
|
||||||
LyricsKeepControlsVisible,
|
LyricsKeepControlsVisible,
|
||||||
PlayerBackdrop,
|
PlayerBackdrop,
|
||||||
|
QualityBadgeColors,
|
||||||
LyricsProgressPill,
|
LyricsProgressPill,
|
||||||
CoverEverywhere,
|
CoverEverywhere,
|
||||||
),
|
),
|
||||||
|
|||||||
+9
-5
@@ -7,7 +7,6 @@ import android.app.PendingIntent
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
@@ -51,15 +50,15 @@ class UpdateCheckWorker(
|
|||||||
.maxByOrNull { it.first }
|
.maxByOrNull { it.first }
|
||||||
?: return Result.success()
|
?: return Result.success()
|
||||||
|
|
||||||
val (version, release) = latestVersion
|
val (version, _) = latestVersion
|
||||||
if (current >= version) return Result.success()
|
if (current >= version) return Result.success()
|
||||||
|
|
||||||
Log.i(BuildConfig.TAG, "Update available: $version (installed $current)")
|
Log.i(BuildConfig.TAG, "Update available: $version (installed $current)")
|
||||||
postUpdateNotification(version.toString(), release.htmlUrl)
|
postUpdateNotification(version.toString())
|
||||||
return Result.success()
|
return Result.success()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun postUpdateNotification(version: String, releaseUrl: String) {
|
private fun postUpdateNotification(version: String) {
|
||||||
val nm = applicationContext.getSystemService<NotificationManager>() ?: return
|
val nm = applicationContext.getSystemService<NotificationManager>() ?: return
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
@@ -78,10 +77,15 @@ class UpdateCheckWorker(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val launchIntent = applicationContext.packageManager
|
||||||
|
.getLaunchIntentForPackage(applicationContext.packageName)
|
||||||
|
?.apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
|
||||||
|
?: return
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getActivity(
|
val pendingIntent = PendingIntent.getActivity(
|
||||||
applicationContext,
|
applicationContext,
|
||||||
0,
|
0,
|
||||||
Intent(Intent.ACTION_VIEW, Uri.parse(releaseUrl)).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) },
|
launchIntent,
|
||||||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
|
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -258,7 +258,7 @@
|
|||||||
<string name="patch_lyrics_progress_pill_desc">Restores the old Track Progress Pill in the top of the Lyrics screen!</string>
|
<string name="patch_lyrics_progress_pill_desc">Restores the old Track Progress Pill in the top of the Lyrics screen!</string>
|
||||||
<string name="patch_lyrics_replace_button_title">Replace Lyrics Button</string>
|
<string name="patch_lyrics_replace_button_title">Replace Lyrics Button</string>
|
||||||
<string name="patch_lyrics_replace_button_desc">Replaces the Lyrics button with the RL Sparkle!</string>
|
<string name="patch_lyrics_replace_button_desc">Replaces the Lyrics button with the RL Sparkle!</string>
|
||||||
<string name="patch_lyrics_rl_api_title">Radiant Lyrics API</string>
|
<string name="patch_lyrics_rl_api_title">Radiant Lyrics API - WIP</string>
|
||||||
<string name="patch_lyrics_rl_api_desc">Use Radiant Lyrics API to fetch Lyrics (Higher quality & More providers)</string>
|
<string name="patch_lyrics_rl_api_desc">Use Radiant Lyrics API to fetch Lyrics (Higher quality & More providers)</string>
|
||||||
<string name="patch_sticky_lyrics_title">Sticky Lyrics</string>
|
<string name="patch_sticky_lyrics_title">Sticky Lyrics</string>
|
||||||
<string name="patch_sticky_lyrics_desc">Always Forces the Lyrics page to be opened (aslong as the track has lyrics)</string>
|
<string name="patch_sticky_lyrics_desc">Always Forces the Lyrics page to be opened (aslong as the track has lyrics)</string>
|
||||||
@@ -268,6 +268,8 @@
|
|||||||
>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_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.5"
|
"patchesVersion": "0.9.8"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -344,7 +344,7 @@
|
|||||||
|
|
||||||
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
|
||||||
const-string v0, "&platform=Radiant%20Lyrics"
|
const-string v0, "&platform=rl-mobile"
|
||||||
|
|
||||||
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
|
||||||
|
|||||||
@@ -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