mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-08-27 14:37:45 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7458df8eba | ||
|
|
6a5771cf9e | ||
|
|
a8a576c994 | ||
|
|
585666c403 | ||
|
|
90c008082f |
@@ -51,22 +51,95 @@
|
|||||||
"title": "Static",
|
"title": "Static",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-static.patch"
|
"player-backdrop-static.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Animated",
|
"title": "Animated",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-animated.patch"
|
"player-backdrop-animated.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Playback",
|
"title": "Playback",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-playback.patch"
|
"player-backdrop-playback.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"advancedOptions": [
|
"advancedOptions": [
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "blur_strength",
|
||||||
|
"title": "Blur Strength",
|
||||||
|
"description": "The value of Blur applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_BLUR",
|
||||||
|
"encode": {
|
||||||
|
"kind": "int",
|
||||||
|
"scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "contrast",
|
||||||
|
"title": "Contrast",
|
||||||
|
"description": "The value of Contrast applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_CONTRAST",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "saturation",
|
||||||
|
"title": "Saturation",
|
||||||
|
"description": "The value of Saturation applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_SATURATION",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "brightness",
|
||||||
|
"title": "Brightness",
|
||||||
|
"description": "The value of Brightness applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_BRIGHTNESS",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "toggle",
|
"type": "toggle",
|
||||||
"key": "cover_everywhere",
|
"key": "cover_everywhere",
|
||||||
|
|||||||
@@ -2,13 +2,24 @@
|
|||||||
|
|
||||||
A Manager app for Android that patches TIDAL to bring the Radiant Lyrics experience to mobile.
|
A Manager app for Android that patches TIDAL to bring the Radiant Lyrics experience to mobile.
|
||||||
|
|
||||||
## What it does
|
## What it does?
|
||||||
|
|
||||||
- Blurred album art background in the player
|
This project adds ALLOT of completely Optional & Customisable Patches/Integrations to TIDAL on Android (iOS SoonTM).
|
||||||
- Progress pill overlay in lyrics mode - restored from old UI
|
Every Patch & Integration can be disabled/enabled & adjusted exactly how you want TIDAL to feel/look <3
|
||||||
- Hides the ugly cover art when in lyrics mode
|
|
||||||
|
### Patches:
|
||||||
|
|
||||||
|
- Insane Customisation of the Player Backdrop
|
||||||
|
- Higher quality lyrics from more providers (WIP)
|
||||||
|
- Progress pill overlay in lyrics mode (restored from old UI)
|
||||||
|
- Keeps lyrics controls visible
|
||||||
|
- One-handed player controls
|
||||||
|
- Redesigned mini-player with gestures
|
||||||
- Syllable Level lyrics (SoonTM)
|
- Syllable Level lyrics (SoonTM)
|
||||||
|
|
||||||
|
### Integrations
|
||||||
|
|
||||||
|
- Waze | Control TIDAL playback from Waze
|
||||||
|
|
||||||
### Disclaimer
|
### Disclaimer
|
||||||
|
|
||||||
@@ -18,7 +29,10 @@ This project is not affiliated with TIDAL in any way. Use at your own risk.
|
|||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Batteries <3
|
### Batteries <3
|
||||||
- Android 10.0+ & >340 DPI
|
- Phone of some unknown description
|
||||||
|
- The smallest amount of brain damage
|
||||||
|
- Android 7.0+ & >340 DPI
|
||||||
|
- Internet
|
||||||
- Paid TIDAL Account
|
- Paid TIDAL Account
|
||||||
|
|
||||||
### Steps
|
### Steps
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"tidalVersionCode": 10004,
|
"tidalVersionCode": 10004,
|
||||||
"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.11.0"
|
"patchesVersion": "0.11.1"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
.class public final Lradiant/BackdropFx;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
|
||||||
|
.method public static apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
.locals 14
|
||||||
|
|
||||||
|
const v0, __RL_CONTRAST__
|
||||||
|
|
||||||
|
const v1, __RL_SATURATION__
|
||||||
|
|
||||||
|
const v2, __RL_BRIGHTNESS__
|
||||||
|
|
||||||
|
# cm = ColorMatrix(); cm.setSaturation(s)
|
||||||
|
new-instance v3, Landroid/graphics/ColorMatrix;
|
||||||
|
|
||||||
|
invoke-direct {v3}, Landroid/graphics/ColorMatrix;-><init>()V
|
||||||
|
|
||||||
|
invoke-virtual {v3, v1}, Landroid/graphics/ColorMatrix;->setSaturation(F)V
|
||||||
|
|
||||||
|
# o = 128 - 128*c (contrast pivot at mid-grey, 0..255 space)
|
||||||
|
const/high16 v4, 0x43000000
|
||||||
|
|
||||||
|
mul-float v5, v4, v0
|
||||||
|
|
||||||
|
sub-float v5, v4, v5
|
||||||
|
|
||||||
|
# contrast matrix: diag = c, offset column = o
|
||||||
|
const/16 v6, 0x14
|
||||||
|
|
||||||
|
new-array v7, v6, [F
|
||||||
|
|
||||||
|
const/4 v8, 0x0
|
||||||
|
|
||||||
|
aput v0, v7, v8
|
||||||
|
|
||||||
|
const/4 v8, 0x4
|
||||||
|
|
||||||
|
aput v5, v7, v8
|
||||||
|
|
||||||
|
const/4 v8, 0x6
|
||||||
|
|
||||||
|
aput v0, v7, v8
|
||||||
|
|
||||||
|
const/16 v8, 0x9
|
||||||
|
|
||||||
|
aput v5, v7, v8
|
||||||
|
|
||||||
|
const/16 v8, 0xc
|
||||||
|
|
||||||
|
aput v0, v7, v8
|
||||||
|
|
||||||
|
const/16 v8, 0xe
|
||||||
|
|
||||||
|
aput v5, v7, v8
|
||||||
|
|
||||||
|
const/high16 v9, 0x3f800000
|
||||||
|
|
||||||
|
const/16 v8, 0x12
|
||||||
|
|
||||||
|
aput v9, v7, v8
|
||||||
|
|
||||||
|
new-instance v8, Landroid/graphics/ColorMatrix;
|
||||||
|
|
||||||
|
invoke-direct {v8, v7}, Landroid/graphics/ColorMatrix;-><init>([F)V
|
||||||
|
|
||||||
|
invoke-virtual {v3, v8}, Landroid/graphics/ColorMatrix;->postConcat(Landroid/graphics/ColorMatrix;)V
|
||||||
|
|
||||||
|
# brightness matrix: diag = b
|
||||||
|
new-array v7, v6, [F
|
||||||
|
|
||||||
|
const/4 v8, 0x0
|
||||||
|
|
||||||
|
aput v2, v7, v8
|
||||||
|
|
||||||
|
const/4 v8, 0x6
|
||||||
|
|
||||||
|
aput v2, v7, v8
|
||||||
|
|
||||||
|
const/16 v8, 0xc
|
||||||
|
|
||||||
|
aput v2, v7, v8
|
||||||
|
|
||||||
|
const/16 v8, 0x12
|
||||||
|
|
||||||
|
aput v9, v7, v8
|
||||||
|
|
||||||
|
new-instance v8, Landroid/graphics/ColorMatrix;
|
||||||
|
|
||||||
|
invoke-direct {v8, v7}, Landroid/graphics/ColorMatrix;-><init>([F)V
|
||||||
|
|
||||||
|
invoke-virtual {v3, v8}, Landroid/graphics/ColorMatrix;->postConcat(Landroid/graphics/ColorMatrix;)V
|
||||||
|
|
||||||
|
# out = createBitmap(w, h, ARGB_8888)
|
||||||
|
invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I
|
||||||
|
|
||||||
|
move-result v10
|
||||||
|
|
||||||
|
invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I
|
||||||
|
|
||||||
|
move-result v11
|
||||||
|
|
||||||
|
sget-object v12, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config;
|
||||||
|
|
||||||
|
invoke-static {v10, v11, v12}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
|
||||||
|
|
||||||
|
move-result-object v10
|
||||||
|
|
||||||
|
# canvas over out
|
||||||
|
new-instance v11, Landroid/graphics/Canvas;
|
||||||
|
|
||||||
|
invoke-direct {v11, v10}, Landroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V
|
||||||
|
|
||||||
|
# paint with the color-matrix filter
|
||||||
|
new-instance v12, Landroid/graphics/Paint;
|
||||||
|
|
||||||
|
invoke-direct {v12}, Landroid/graphics/Paint;-><init>()V
|
||||||
|
|
||||||
|
new-instance v13, Landroid/graphics/ColorMatrixColorFilter;
|
||||||
|
|
||||||
|
invoke-direct {v13, v3}, Landroid/graphics/ColorMatrixColorFilter;-><init>(Landroid/graphics/ColorMatrix;)V
|
||||||
|
|
||||||
|
invoke-virtual {v12, v13}, Landroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;
|
||||||
|
|
||||||
|
# draw the blurred bitmap through the filter
|
||||||
|
const/4 v0, 0x0
|
||||||
|
|
||||||
|
invoke-virtual {v11, p0, v0, v0, v12}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
|
||||||
|
|
||||||
|
invoke-virtual {p0}, Landroid/graphics/Bitmap;->recycle()V
|
||||||
|
|
||||||
|
return-object v10
|
||||||
|
.end method
|
||||||
@@ -8,6 +8,8 @@
|
|||||||
# stuff that makes lyrics view stays open.. i forgot what it actually does other than short circuit a call or some shit <3
|
# stuff that makes lyrics view stays open.. i forgot what it actually does other than short circuit a call or some shit <3
|
||||||
.field public static lastMediaId:I
|
.field public static lastMediaId:I
|
||||||
|
|
||||||
|
.field public static lastVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
|
||||||
# direct methods
|
# direct methods
|
||||||
.method static constructor <clinit>()V
|
.method static constructor <clinit>()V
|
||||||
@@ -17,5 +19,9 @@
|
|||||||
|
|
||||||
sput v0, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
sput v0, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
||||||
|
|
||||||
|
const/4 v0, 0x0
|
||||||
|
|
||||||
|
sput-object v0, Lradiant/LyricsReinitGuard;->lastVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|||||||
@@ -5,8 +5,12 @@
|
|||||||
# static fields
|
# static fields
|
||||||
.field public static volatile currentKey:Ljava/lang/String;
|
.field public static volatile currentKey:Ljava/lang/String;
|
||||||
|
|
||||||
|
.field public static volatile currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
.field public static volatile isRlState:Z
|
.field public static volatile isRlState:Z
|
||||||
|
|
||||||
|
.field public static volatile keepOpen:Z
|
||||||
|
|
||||||
|
|
||||||
# direct methods
|
# direct methods
|
||||||
.method static constructor <clinit>()V
|
.method static constructor <clinit>()V
|
||||||
@@ -16,8 +20,12 @@
|
|||||||
|
|
||||||
sput-object v0, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
sput-object v0, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
||||||
|
|
||||||
|
sput-object v0, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
sput-boolean v0, Lradiant/RLAPILyricsHook;->isRlState:Z
|
sput-boolean v0, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
|
sput-boolean v0, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|
||||||
@@ -60,6 +68,45 @@
|
|||||||
return v1
|
return v1
|
||||||
.end method
|
.end method
|
||||||
|
|
||||||
|
.method public static isOwner(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
|
.locals 2
|
||||||
|
|
||||||
|
sget-object v0, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
if-ne p0, v0, :not_owner
|
||||||
|
|
||||||
|
sget-boolean v1, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
|
return v1
|
||||||
|
|
||||||
|
:not_owner
|
||||||
|
const/4 v1, 0x0
|
||||||
|
|
||||||
|
return v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static shouldKeepOpen(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
|
.locals 2
|
||||||
|
|
||||||
|
sget-object v0, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
if-ne p0, v0, :do_not_keep
|
||||||
|
|
||||||
|
sget-boolean v1, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
|
if-nez v1, :keep
|
||||||
|
|
||||||
|
sget-boolean v1, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
|
:keep
|
||||||
|
return v1
|
||||||
|
|
||||||
|
:do_not_keep
|
||||||
|
const/4 v1, 0x0
|
||||||
|
|
||||||
|
return v1
|
||||||
|
.end method
|
||||||
|
|
||||||
.method public static onWampTrack(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;Lcom/aspiro/wamp/model/Track;)V
|
.method public static onWampTrack(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;Lcom/aspiro/wamp/model/Track;)V
|
||||||
.locals 11
|
.locals 11
|
||||||
|
|
||||||
@@ -80,7 +127,7 @@
|
|||||||
|
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :invalid_track
|
||||||
|
|
||||||
:have_track
|
:have_track
|
||||||
invoke-virtual {p1}, Lcom/aspiro/wamp/model/MediaItem;->getTitle()Ljava/lang/String;
|
invoke-virtual {p1}, Lcom/aspiro/wamp/model/MediaItem;->getTitle()Ljava/lang/String;
|
||||||
@@ -93,7 +140,7 @@
|
|||||||
|
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :invalid_track
|
||||||
|
|
||||||
:title_present
|
:title_present
|
||||||
invoke-static {v1}, Lradiant/RLAPILyricsHook;->isBlank(Ljava/lang/String;)Z
|
invoke-static {v1}, Lradiant/RLAPILyricsHook;->isBlank(Ljava/lang/String;)Z
|
||||||
@@ -106,7 +153,7 @@
|
|||||||
|
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :invalid_track
|
||||||
|
|
||||||
:title_ok
|
:title_ok
|
||||||
invoke-virtual {p1}, Lcom/aspiro/wamp/model/MediaItem;->getArtistNames()Ljava/lang/String;
|
invoke-virtual {p1}, Lcom/aspiro/wamp/model/MediaItem;->getArtistNames()Ljava/lang/String;
|
||||||
@@ -119,7 +166,7 @@
|
|||||||
|
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :invalid_track
|
||||||
|
|
||||||
:artist_present
|
:artist_present
|
||||||
invoke-static {v2}, Lradiant/RLAPILyricsHook;->isBlank(Ljava/lang/String;)Z
|
invoke-static {v2}, Lradiant/RLAPILyricsHook;->isBlank(Ljava/lang/String;)Z
|
||||||
@@ -132,24 +179,14 @@
|
|||||||
|
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v3}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :invalid_track
|
||||||
|
|
||||||
:artist_ok
|
:artist_ok
|
||||||
const-string v3, ""
|
invoke-virtual {p1}, Lcom/aspiro/wamp/model/MediaItem;->getId()I
|
||||||
|
|
||||||
new-instance v4, Ljava/lang/StringBuilder;
|
move-result v3
|
||||||
|
|
||||||
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
|
invoke-static {v3}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
|
||||||
|
|
||||||
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
||||||
|
|
||||||
const-string v5, "|"
|
|
||||||
|
|
||||||
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
||||||
|
|
||||||
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
||||||
|
|
||||||
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
||||||
|
|
||||||
move-result-object v4
|
move-result-object v4
|
||||||
|
|
||||||
@@ -161,6 +198,10 @@
|
|||||||
|
|
||||||
if-eqz v5, :rl_new_track
|
if-eqz v5, :rl_new_track
|
||||||
|
|
||||||
|
sget-object v5, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
if-ne p0, v5, :rl_new_track
|
||||||
|
|
||||||
const-string v5, "onWampTrack: same track re-fired, skipping duplicate fetch"
|
const-string v5, "onWampTrack: same track re-fired, skipping duplicate fetch"
|
||||||
|
|
||||||
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
@@ -168,12 +209,51 @@
|
|||||||
return-void
|
return-void
|
||||||
|
|
||||||
:rl_new_track
|
:rl_new_track
|
||||||
|
iget-object v5, p0, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||||
|
|
||||||
|
invoke-interface {v5}, Lkotlinx/coroutines/flow/MutableStateFlow;->getValue()Ljava/lang/Object;
|
||||||
|
|
||||||
|
move-result-object v5
|
||||||
|
|
||||||
|
check-cast v5, Ljava/lang/Boolean;
|
||||||
|
|
||||||
|
invoke-virtual {v5}, Ljava/lang/Boolean;->booleanValue()Z
|
||||||
|
|
||||||
|
move-result v5
|
||||||
|
|
||||||
|
if-nez v5, :store_keep_open
|
||||||
|
|
||||||
|
sget-object v6, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
if-eqz v6, :store_keep_open
|
||||||
|
|
||||||
|
if-eq p0, v6, :store_keep_open
|
||||||
|
|
||||||
|
iget-object v7, v6, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||||
|
|
||||||
|
invoke-interface {v7}, Lkotlinx/coroutines/flow/MutableStateFlow;->getValue()Ljava/lang/Object;
|
||||||
|
|
||||||
|
move-result-object v7
|
||||||
|
|
||||||
|
check-cast v7, Ljava/lang/Boolean;
|
||||||
|
|
||||||
|
invoke-virtual {v7}, Ljava/lang/Boolean;->booleanValue()Z
|
||||||
|
|
||||||
|
move-result v5
|
||||||
|
|
||||||
|
:store_keep_open
|
||||||
|
sput-boolean v5, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
const/4 v5, 0x0
|
const/4 v5, 0x0
|
||||||
|
|
||||||
sput-boolean v5, Lradiant/RLAPILyricsHook;->isRlState:Z
|
sput-boolean v5, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
sput-object v4, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
sput-object v4, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
||||||
|
|
||||||
|
sput-object p0, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
move-object v3, v4
|
||||||
|
|
||||||
new-instance v5, Ljava/lang/StringBuilder;
|
new-instance v5, Ljava/lang/StringBuilder;
|
||||||
|
|
||||||
const-string v6, "onWampTrack: fetching for title='"
|
const-string v6, "onWampTrack: fetching for title='"
|
||||||
@@ -222,6 +302,19 @@
|
|||||||
|
|
||||||
invoke-virtual {v6}, Ljava/lang/Thread;->start()V
|
invoke-virtual {v6}, Ljava/lang/Thread;->start()V
|
||||||
|
|
||||||
|
goto :done
|
||||||
|
|
||||||
|
:invalid_track
|
||||||
|
const/4 v3, 0x0
|
||||||
|
|
||||||
|
sput-boolean v3, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
|
sput-boolean v3, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
|
sput-object v3, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
||||||
|
|
||||||
|
sput-object p0, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
:done
|
:done
|
||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|||||||
@@ -34,6 +34,86 @@
|
|||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|
||||||
|
.method private failCurrent()V
|
||||||
|
.locals 4
|
||||||
|
|
||||||
|
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->isCurrent()Z
|
||||||
|
|
||||||
|
move-result v0
|
||||||
|
|
||||||
|
if-eqz v0, :done
|
||||||
|
|
||||||
|
const/4 v0, 0x0
|
||||||
|
|
||||||
|
sput-object v0, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
||||||
|
|
||||||
|
sput-boolean v0, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
|
sget-boolean v0, Lradiant/StickyLyrics;->enabled:Z
|
||||||
|
|
||||||
|
if-nez v0, :done
|
||||||
|
|
||||||
|
sget-boolean v0, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
|
if-nez v0, :done
|
||||||
|
|
||||||
|
iget-object v1, p0, Lradiant/RLAPILyricsWorker;->vm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
iget-object v2, v1, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||||
|
|
||||||
|
sget-object v3, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
|
||||||
|
|
||||||
|
invoke-interface {v2, v3}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
|
|
||||||
|
:done
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method private isCurrent()Z
|
||||||
|
.locals 4
|
||||||
|
|
||||||
|
iget-object v0, p0, Lradiant/RLAPILyricsWorker;->vm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
sget-object v1, Lradiant/RLAPILyricsHook;->currentVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
|
||||||
|
if-ne v0, v1, :not_current
|
||||||
|
|
||||||
|
iget-object v1, v0, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->a:Lbi/e;
|
||||||
|
|
||||||
|
invoke-interface {v1}, Lbi/e;->getCurrentItem()Lcom/aspiro/wamp/playqueue/u0;
|
||||||
|
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
if-eqz v1, :not_current
|
||||||
|
|
||||||
|
invoke-interface {v1}, Lcom/aspiro/wamp/playqueue/u0;->getMediaItem()Lcom/aspiro/wamp/model/MediaItem;
|
||||||
|
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
if-eqz v1, :not_current
|
||||||
|
|
||||||
|
invoke-virtual {v1}, Lcom/aspiro/wamp/model/MediaItem;->getId()I
|
||||||
|
|
||||||
|
move-result v2
|
||||||
|
|
||||||
|
invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
|
||||||
|
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
iget-object v2, p0, Lradiant/RLAPILyricsWorker;->key:Ljava/lang/String;
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
|
||||||
|
|
||||||
|
move-result v3
|
||||||
|
|
||||||
|
return v3
|
||||||
|
|
||||||
|
:not_current
|
||||||
|
const/4 v3, 0x0
|
||||||
|
|
||||||
|
return v3
|
||||||
|
.end method
|
||||||
|
|
||||||
.method public static fetch(Ljava/lang/String;Z)Ljava/lang/String;
|
.method public static fetch(Ljava/lang/String;Z)Ljava/lang/String;
|
||||||
.locals 7
|
.locals 7
|
||||||
|
|
||||||
@@ -396,30 +476,7 @@
|
|||||||
|
|
||||||
invoke-static {v4}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v4}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
iget-object v4, p0, Lradiant/RLAPILyricsWorker;->key:Ljava/lang/String;
|
goto :request_failed
|
||||||
|
|
||||||
sget-object v5, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
|
||||||
|
|
||||||
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
|
|
||||||
|
|
||||||
move-result v4
|
|
||||||
|
|
||||||
if-eqz v4, :no_close # Smthn needed to keep lyrics open
|
|
||||||
|
|
||||||
sget-boolean v4, Lradiant/StickyLyrics;->enabled:Z
|
|
||||||
|
|
||||||
if-nez v4, :no_close
|
|
||||||
|
|
||||||
iget-object v4, p0, Lradiant/RLAPILyricsWorker;->vm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
|
||||||
|
|
||||||
iget-object v5, v4, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
|
||||||
|
|
||||||
sget-object v6, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
|
|
||||||
|
|
||||||
invoke-interface {v5, v6}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
|
||||||
|
|
||||||
:no_close
|
|
||||||
return-void
|
|
||||||
|
|
||||||
:got_body
|
:got_body
|
||||||
invoke-static {v3}, Lradiant/RLAPILyricsWorker;->parseLines(Ljava/lang/String;)Ljava/util/ArrayList;
|
invoke-static {v3}, Lradiant/RLAPILyricsWorker;->parseLines(Ljava/lang/String;)Ljava/util/ArrayList;
|
||||||
@@ -432,7 +489,7 @@
|
|||||||
|
|
||||||
invoke-static {v4}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v4}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :request_failed
|
||||||
|
|
||||||
:parse_ok
|
:parse_ok
|
||||||
invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
|
invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
|
||||||
@@ -445,7 +502,7 @@
|
|||||||
|
|
||||||
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
return-void
|
goto :request_failed
|
||||||
|
|
||||||
:nonempty
|
:nonempty
|
||||||
new-instance v5, Ljava/lang/StringBuilder;
|
new-instance v5, Ljava/lang/StringBuilder;
|
||||||
@@ -466,11 +523,7 @@
|
|||||||
|
|
||||||
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
invoke-static {v5}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
iget-object v4, p0, Lradiant/RLAPILyricsWorker;->key:Ljava/lang/String;
|
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->isCurrent()Z
|
||||||
|
|
||||||
sget-object v5, Lradiant/RLAPILyricsHook;->currentKey:Ljava/lang/String;
|
|
||||||
|
|
||||||
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
|
|
||||||
|
|
||||||
move-result v4
|
move-result v4
|
||||||
|
|
||||||
@@ -512,6 +565,8 @@
|
|||||||
|
|
||||||
const/4 v6, 0x1
|
const/4 v6, 0x1
|
||||||
|
|
||||||
|
invoke-interface {v5, v8}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
|
|
||||||
sput-boolean v6, Lradiant/RLAPILyricsHook;->isRlState:Z
|
sput-boolean v6, Lradiant/RLAPILyricsHook;->isRlState:Z
|
||||||
|
|
||||||
iget-object v6, v4, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->K:Lkotlinx/coroutines/flow/MutableStateFlow;
|
iget-object v6, v4, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->K:Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||||
@@ -520,25 +575,34 @@
|
|||||||
|
|
||||||
invoke-interface {v6, v7}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
invoke-interface {v6, v7}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
|
|
||||||
|
sget-boolean v9, Lradiant/RLAPILyricsHook;->keepOpen:Z
|
||||||
|
|
||||||
|
if-nez v9, :open_lyrics
|
||||||
|
|
||||||
sget-boolean v9, Lradiant/StickyLyrics;->enabled:Z
|
sget-boolean v9, Lradiant/StickyLyrics;->enabled:Z
|
||||||
|
|
||||||
if-eqz v9, :skip_n
|
if-eqz v9, :skip_n
|
||||||
|
|
||||||
|
:open_lyrics
|
||||||
|
|
||||||
iget-object v6, v4, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
iget-object v6, v4, Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;->P:Lkotlinx/coroutines/flow/MutableStateFlow;
|
||||||
|
|
||||||
invoke-interface {v6, v7}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
invoke-interface {v6, v7}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
|
|
||||||
:skip_n
|
:skip_n
|
||||||
invoke-interface {v5, v8}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
|
||||||
|
|
||||||
:done
|
:done
|
||||||
return-void
|
return-void
|
||||||
|
|
||||||
|
:request_failed
|
||||||
|
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->failCurrent()V
|
||||||
|
|
||||||
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|
||||||
|
|
||||||
# virtual methods
|
# virtual methods
|
||||||
.method public run()V
|
.method public run()V
|
||||||
.locals 1
|
.locals 2
|
||||||
|
|
||||||
:try_start
|
:try_start
|
||||||
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->runImpl()V
|
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->runImpl()V
|
||||||
@@ -551,5 +615,13 @@
|
|||||||
:catch_all
|
:catch_all
|
||||||
move-exception v0
|
move-exception v0
|
||||||
|
|
||||||
|
invoke-virtual {v0}, Ljava/lang/Throwable;->toString()Ljava/lang/String;
|
||||||
|
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-static {v1}, Lradiant/RLAPILyricsHook;->dlog(Ljava/lang/String;)V
|
||||||
|
|
||||||
|
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->failCurrent()V
|
||||||
|
|
||||||
return-void
|
return-void
|
||||||
.end method
|
.end method
|
||||||
|
|||||||
@@ -11,13 +11,18 @@
|
|||||||
.line 28
|
.line 28
|
||||||
--- a/com/tidal/android/feature/playerscreen/ui/PlayerViewModel.smali
|
--- a/com/tidal/android/feature/playerscreen/ui/PlayerViewModel.smali
|
||||||
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerViewModel.smali
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerViewModel.smali
|
||||||
@@ -1382,6 +1382,14 @@
|
@@ -1382,6 +1382,19 @@
|
||||||
.line 109
|
.line 109
|
||||||
.line 110
|
.line 110
|
||||||
move-result v1
|
move-result v1
|
||||||
+ sget v4, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
+ sget v4, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
||||||
+ if-eq v1, v4, :rl_skip_reinit # same track re-emitted -> skip the redundant re-init (avoids the loading-state flash)
|
+ if-ne v1, v4, :rl_reinit_store
|
||||||
|
+ sget-object v4, Lradiant/LyricsReinitGuard;->lastVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
|
+ if-ne v0, v4, :rl_reinit_store
|
||||||
|
+ goto :rl_skip_reinit # only suppress duplicate initialization on the same ViewModel
|
||||||
|
+ :rl_reinit_store
|
||||||
+ sput v1, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
+ sput v1, Lradiant/LyricsReinitGuard;->lastMediaId:I
|
||||||
|
+ sput-object v0, Lradiant/LyricsReinitGuard;->lastVm:Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;
|
||||||
+ goto :rl_reinit_ok
|
+ goto :rl_reinit_ok
|
||||||
+ :rl_skip_reinit
|
+ :rl_skip_reinit
|
||||||
+ sget-object v4, Lkotlin/u;->a:Lkotlin/u;
|
+ sget-object v4, Lkotlin/u;->a:Lkotlin/u;
|
||||||
|
|||||||
+25
-14
@@ -9,43 +9,53 @@
|
|||||||
.line 106
|
.line 106
|
||||||
.line 107
|
.line 107
|
||||||
invoke-virtual {v1}, Lcom/aspiro/wamp/model/MediaItem;->getId()I
|
invoke-virtual {v1}, Lcom/aspiro/wamp/model/MediaItem;->getId()I
|
||||||
@@ -1655,7 +1657,7 @@
|
@@ -1655,7 +1657,11 @@
|
||||||
.line 239
|
.line 239
|
||||||
.line 240
|
.line 240
|
||||||
.line 241
|
.line 241
|
||||||
- if-nez v9, :cond_a
|
- if-nez v9, :cond_a
|
||||||
+ goto :cond_a # skip TIDAL P=false in the has-lyrics path (for some reason)
|
+ invoke-static {v0}, Lradiant/RLAPILyricsHook;->shouldKeepOpen(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
|
+ move-result v20
|
||||||
|
+ if-nez v20, :cond_a # keep visibility only for RL state owned by this ViewModel
|
||||||
|
+ :rl_native_visibility
|
||||||
|
+ if-nez v9, :cond_a
|
||||||
|
|
||||||
.line 242
|
.line 242
|
||||||
.line 243
|
.line 243
|
||||||
@@ -2347,7 +2349,10 @@
|
@@ -2347,7 +2353,12 @@
|
||||||
|
|
||||||
.line 572
|
.line 572
|
||||||
:goto_c
|
:goto_c
|
||||||
+ sget-boolean v5, Lradiant/RLAPILyricsHook;->isRlState:Z
|
+ invoke-static {v0}, Lradiant/RLAPILyricsHook;->isOwner(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
+ if-nez v5, :rl_keep_n2 # RL active -> keep worker content
|
+ move-result v20
|
||||||
|
+ if-nez v20, :rl_keep_n2 # only preserve RL content owned by this ViewModel
|
||||||
|
+ :rl_set_n2
|
||||||
invoke-interface {v9, v1}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
invoke-interface {v9, v1}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
+ :rl_keep_n2
|
+ :rl_keep_n2
|
||||||
|
|
||||||
.line 573
|
.line 573
|
||||||
.line 574
|
.line 574
|
||||||
@@ -2396,7 +2401,10 @@
|
@@ -2396,7 +2407,12 @@
|
||||||
|
|
||||||
.line 595
|
.line 595
|
||||||
.line 596
|
.line 596
|
||||||
+ sget-boolean v7, Lradiant/RLAPILyricsHook;->isRlState:Z
|
+ invoke-static {v0}, Lradiant/RLAPILyricsHook;->shouldKeepOpen(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
+ if-nez v7, :rl_keep_o # RL active -> keep view-open flag
|
+ move-result v20
|
||||||
|
+ if-nez v20, :rl_keep_o # only preserve visibility owned by this ViewModel
|
||||||
|
+ :rl_set_o
|
||||||
invoke-interface {v1, v5}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
invoke-interface {v1, v5}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
+ :rl_keep_o
|
+ :rl_keep_o
|
||||||
|
|
||||||
.line 597
|
.line 597
|
||||||
.line 598
|
.line 598
|
||||||
@@ -2425,7 +2433,10 @@
|
@@ -2425,7 +2441,12 @@
|
||||||
|
|
||||||
.line 610
|
.line 610
|
||||||
.line 611
|
.line 611
|
||||||
+ sget-boolean v7, Lradiant/RLAPILyricsHook;->isRlState:Z
|
+ invoke-static {v0}, Lradiant/RLAPILyricsHook;->isOwner(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
+ if-nez v7, :rl_keep_n # RL active -> keep worker content
|
+ move-result v20
|
||||||
|
+ if-nez v20, :rl_keep_n # only preserve RL content owned by this ViewModel
|
||||||
|
+ :rl_set_n
|
||||||
invoke-interface {v1, v6}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
invoke-interface {v1, v6}, Lkotlinx/coroutines/flow/MutableStateFlow;->setValue(Ljava/lang/Object;)V
|
||||||
+ :rl_keep_n
|
+ :rl_keep_n
|
||||||
|
|
||||||
@@ -53,12 +63,13 @@
|
|||||||
.line 613
|
.line 613
|
||||||
--- a/com/tidal/android/feature/playerscreen/ui/PlayerViewModel$special$$inlined$mapNotNull$1$2.smali
|
--- 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
|
+++ b/com/tidal/android/feature/playerscreen/ui/PlayerViewModel$special$$inlined$mapNotNull$1$2.smali
|
||||||
@@ -2256,6 +2256,10 @@
|
@@ -2256,6 +2256,11 @@
|
||||||
.line 1040
|
.line 1040
|
||||||
.line 1041
|
.line 1041
|
||||||
move-result v34
|
move-result v34
|
||||||
+ sget-boolean v4, Lradiant/RLAPILyricsHook;->isRlState:Z
|
+ invoke-static {v1}, Lradiant/RLAPILyricsHook;->isOwner(Lcom/tidal/android/feature/playerscreen/ui/PlayerViewModel;)Z
|
||||||
+ if-eqz v4, :rl_hl_done # not RL = use TIDAL's hasLyrics
|
+ move-result v4
|
||||||
|
+ if-eqz v4, :rl_hl_done # ignore non-RL state or state owned by an obsolete ViewModel
|
||||||
+ const/16 v34, 0x1 # RL lyrics active = force hasLyrics so the sparkle stays
|
+ const/16 v34, 0x1 # RL lyrics active = force hasLyrics so the sparkle stays
|
||||||
+ :rl_hl_done
|
+ :rl_hl_done
|
||||||
|
|
||||||
|
|||||||
@@ -51,22 +51,95 @@
|
|||||||
"title": "Static",
|
"title": "Static",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-static.patch"
|
"player-backdrop-static.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Animated",
|
"title": "Animated",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-animated.patch"
|
"player-backdrop-animated.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Playback",
|
"title": "Playback",
|
||||||
"fileNames": [
|
"fileNames": [
|
||||||
"player-backdrop-playback.patch"
|
"player-backdrop-playback.patch"
|
||||||
|
],
|
||||||
|
"extensionFiles": [
|
||||||
|
"radiant/BackdropFx.smali"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"advancedOptions": [
|
"advancedOptions": [
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "blur_strength",
|
||||||
|
"title": "Blur Strength",
|
||||||
|
"description": "The value of Blur applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_BLUR",
|
||||||
|
"encode": {
|
||||||
|
"kind": "int",
|
||||||
|
"scale": 1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "contrast",
|
||||||
|
"title": "Contrast",
|
||||||
|
"description": "The value of Contrast applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_CONTRAST",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "saturation",
|
||||||
|
"title": "Saturation",
|
||||||
|
"description": "The value of Saturation applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_SATURATION",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"key": "brightness",
|
||||||
|
"title": "Brightness",
|
||||||
|
"description": "The value of Brightness applied to the backdrop cover",
|
||||||
|
"default": 50,
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"steps": 19,
|
||||||
|
"displayAsPercent": true,
|
||||||
|
"token": "RL_BRIGHTNESS",
|
||||||
|
"encode": {
|
||||||
|
"kind": "floatBits",
|
||||||
|
"scale": 0.02
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "toggle",
|
"type": "toggle",
|
||||||
"key": "cover_everywhere",
|
"key": "cover_everywhere",
|
||||||
|
|||||||
@@ -28,3 +28,94 @@
|
|||||||
|
|
||||||
.line 6
|
.line 6
|
||||||
.line 7
|
.line 7
|
||||||
|
--- a/de0/c.smali
|
||||||
|
+++ b/de0/c.smali
|
||||||
|
@@ -26,29 +26,26 @@
|
||||||
|
.line 2
|
||||||
|
.line 3
|
||||||
|
.line 4
|
||||||
|
- const-string v0, "HeavyBlurTransformation() "
|
||||||
|
-
|
||||||
|
- .line 5
|
||||||
|
- .line 6
|
||||||
|
- const-string v1, " "
|
||||||
|
-
|
||||||
|
- .line 7
|
||||||
|
- .line 8
|
||||||
|
- const/4 v2, 0x6
|
||||||
|
-
|
||||||
|
- .line 9
|
||||||
|
- const/16 v3, 0x19
|
||||||
|
-
|
||||||
|
- .line 10
|
||||||
|
- .line 11
|
||||||
|
- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
-
|
||||||
|
- .line 12
|
||||||
|
- .line 13
|
||||||
|
- .line 14
|
||||||
|
+ new-instance v0, Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
|
||||||
|
+ const-string v1, "RLBackdrop_b"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const/16 v1, __RL_BLUR__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "c"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_CONTRAST__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "s"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_SATURATION__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "r"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_BRIGHTNESS__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
-
|
||||||
|
- .line 15
|
||||||
|
iput-object v0, p0, Lde0/c;->a:Ljava/lang/String;
|
||||||
|
|
||||||
|
.line 16
|
||||||
|
@@ -59,10 +56,17 @@
|
||||||
|
|
||||||
|
# virtual methods
|
||||||
|
.method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
- .locals 2
|
||||||
|
+ .locals 3
|
||||||
|
|
||||||
|
.line 1
|
||||||
|
- const/4 v0, 0x6
|
||||||
|
+ const/16 v2, __RL_BLUR__
|
||||||
|
+ mul-int/lit8 v0, v2, 0x6
|
||||||
|
+ const/16 v1, 0x32
|
||||||
|
+ div-int v0, v0, v1
|
||||||
|
+ const/4 v1, 0x1
|
||||||
|
+ if-ge v0, v1, :rl_ds_ok
|
||||||
|
+ const/4 v0, 0x1
|
||||||
|
+ :rl_ds_ok
|
||||||
|
|
||||||
|
.line 2
|
||||||
|
invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
|
||||||
|
@@ -82,7 +86,7 @@
|
||||||
|
.line 9
|
||||||
|
.line 10
|
||||||
|
.line 11
|
||||||
|
- const/16 v1, 0x19
|
||||||
|
+ div-int/lit8 v1, v2, 0x2
|
||||||
|
|
||||||
|
.line 12
|
||||||
|
.line 13
|
||||||
|
@@ -93,6 +97,10 @@
|
||||||
|
.line 16
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
+ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
+
|
||||||
|
+ move-result-object v1
|
||||||
|
+
|
||||||
|
.line 17
|
||||||
|
invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V
|
||||||
|
|
||||||
|
|||||||
@@ -24,3 +24,94 @@
|
|||||||
|
|
||||||
.line 6
|
.line 6
|
||||||
.line 7
|
.line 7
|
||||||
|
--- a/de0/c.smali
|
||||||
|
+++ b/de0/c.smali
|
||||||
|
@@ -26,29 +26,26 @@
|
||||||
|
.line 2
|
||||||
|
.line 3
|
||||||
|
.line 4
|
||||||
|
- const-string v0, "HeavyBlurTransformation() "
|
||||||
|
-
|
||||||
|
- .line 5
|
||||||
|
- .line 6
|
||||||
|
- const-string v1, " "
|
||||||
|
-
|
||||||
|
- .line 7
|
||||||
|
- .line 8
|
||||||
|
- const/4 v2, 0x6
|
||||||
|
-
|
||||||
|
- .line 9
|
||||||
|
- const/16 v3, 0x19
|
||||||
|
-
|
||||||
|
- .line 10
|
||||||
|
- .line 11
|
||||||
|
- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
-
|
||||||
|
- .line 12
|
||||||
|
- .line 13
|
||||||
|
- .line 14
|
||||||
|
+ new-instance v0, Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
|
||||||
|
+ const-string v1, "RLBackdrop_b"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const/16 v1, __RL_BLUR__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "c"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_CONTRAST__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "s"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_SATURATION__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "r"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_BRIGHTNESS__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
-
|
||||||
|
- .line 15
|
||||||
|
iput-object v0, p0, Lde0/c;->a:Ljava/lang/String;
|
||||||
|
|
||||||
|
.line 16
|
||||||
|
@@ -59,10 +56,17 @@
|
||||||
|
|
||||||
|
# virtual methods
|
||||||
|
.method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
- .locals 2
|
||||||
|
+ .locals 3
|
||||||
|
|
||||||
|
.line 1
|
||||||
|
- const/4 v0, 0x6
|
||||||
|
+ const/16 v2, __RL_BLUR__
|
||||||
|
+ mul-int/lit8 v0, v2, 0x6
|
||||||
|
+ const/16 v1, 0x32
|
||||||
|
+ div-int v0, v0, v1
|
||||||
|
+ const/4 v1, 0x1
|
||||||
|
+ if-ge v0, v1, :rl_ds_ok
|
||||||
|
+ const/4 v0, 0x1
|
||||||
|
+ :rl_ds_ok
|
||||||
|
|
||||||
|
.line 2
|
||||||
|
invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
|
||||||
|
@@ -82,7 +86,7 @@
|
||||||
|
.line 9
|
||||||
|
.line 10
|
||||||
|
.line 11
|
||||||
|
- const/16 v1, 0x19
|
||||||
|
+ div-int/lit8 v1, v2, 0x2
|
||||||
|
|
||||||
|
.line 12
|
||||||
|
.line 13
|
||||||
|
@@ -93,6 +97,10 @@
|
||||||
|
.line 16
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
+ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
+
|
||||||
|
+ move-result-object v1
|
||||||
|
+
|
||||||
|
.line 17
|
||||||
|
invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V
|
||||||
|
|
||||||
|
|||||||
@@ -28,3 +28,94 @@
|
|||||||
|
|
||||||
.line 6
|
.line 6
|
||||||
.line 7
|
.line 7
|
||||||
|
--- a/de0/c.smali
|
||||||
|
+++ b/de0/c.smali
|
||||||
|
@@ -26,29 +26,26 @@
|
||||||
|
.line 2
|
||||||
|
.line 3
|
||||||
|
.line 4
|
||||||
|
- const-string v0, "HeavyBlurTransformation() "
|
||||||
|
-
|
||||||
|
- .line 5
|
||||||
|
- .line 6
|
||||||
|
- const-string v1, " "
|
||||||
|
-
|
||||||
|
- .line 7
|
||||||
|
- .line 8
|
||||||
|
- const/4 v2, 0x6
|
||||||
|
-
|
||||||
|
- .line 9
|
||||||
|
- const/16 v3, 0x19
|
||||||
|
-
|
||||||
|
- .line 10
|
||||||
|
- .line 11
|
||||||
|
- invoke-static {v2, v3, v0, v1}, Landroidx/compose/foundation/text/input/a;->b(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
-
|
||||||
|
- .line 12
|
||||||
|
- .line 13
|
||||||
|
- .line 14
|
||||||
|
+ new-instance v0, Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
|
||||||
|
+ const-string v1, "RLBackdrop_b"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const/16 v1, __RL_BLUR__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "c"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_CONTRAST__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "s"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_SATURATION__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ const-string v1, "r"
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
||||||
|
+ const v1, __RL_BRIGHTNESS__
|
||||||
|
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
|
||||||
|
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
-
|
||||||
|
- .line 15
|
||||||
|
iput-object v0, p0, Lde0/c;->a:Ljava/lang/String;
|
||||||
|
|
||||||
|
.line 16
|
||||||
|
@@ -59,10 +56,17 @@
|
||||||
|
|
||||||
|
# virtual methods
|
||||||
|
.method public final a(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
- .locals 2
|
||||||
|
+ .locals 3
|
||||||
|
|
||||||
|
.line 1
|
||||||
|
- const/4 v0, 0x6
|
||||||
|
+ const/16 v2, __RL_BLUR__
|
||||||
|
+ mul-int/lit8 v0, v2, 0x6
|
||||||
|
+ const/16 v1, 0x32
|
||||||
|
+ div-int v0, v0, v1
|
||||||
|
+ const/4 v1, 0x1
|
||||||
|
+ if-ge v0, v1, :rl_ds_ok
|
||||||
|
+ const/4 v0, 0x1
|
||||||
|
+ :rl_ds_ok
|
||||||
|
|
||||||
|
.line 2
|
||||||
|
invoke-static {p1, v0}, Lcom/squareup/ui/market/layout/e;->c(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
|
||||||
|
@@ -82,7 +86,7 @@
|
||||||
|
.line 9
|
||||||
|
.line 10
|
||||||
|
.line 11
|
||||||
|
- const/16 v1, 0x19
|
||||||
|
+ div-int/lit8 v1, v2, 0x2
|
||||||
|
|
||||||
|
.line 12
|
||||||
|
.line 13
|
||||||
|
@@ -93,6 +97,10 @@
|
||||||
|
.line 16
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
+ invoke-static {v1}, Lradiant/BackdropFx;->apply(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
|
||||||
|
+
|
||||||
|
+ move-result-object v1
|
||||||
|
+
|
||||||
|
.line 17
|
||||||
|
invoke-virtual {v0}, Landroid/graphics/Bitmap;->recycle()V
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user