diff --git a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt index ffdcc31..11061fa 100644 --- a/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt +++ b/Manager/app/src/main/kotlin/com/meowarex/rlmobile/ui/screens/patchopts/KnownPatch.kt @@ -169,6 +169,8 @@ enum class KnownPatch( extensionFileNames = listOf( "radiant/MiniPlayerTrackGestures.smali", "radiant/MiniPlayerTrackGestures\$Gesture.smali", + "radiant/MiniPlayerTrackGestures\$OffsetLayer.smali", + "radiant/MiniPlayerTrackGestures\$ResetAnimator.smali", "com/tidal/android/feature/appscaffold/ui/q\$c.smali", ), ), diff --git a/patches/extension/radiant/MiniPlayerGestures.smali b/patches/extension/radiant/MiniPlayerGestures.smali index a98c909..2be4df3 100644 --- a/patches/extension/radiant/MiniPlayerGestures.smali +++ b/patches/extension/radiant/MiniPlayerGestures.smali @@ -468,6 +468,14 @@ return v0 .end method +.method public static isAnyDragging()Z + .locals 1 + + sget-boolean v0, Lradiant/MiniPlayerGestures;->b:Z + + return v0 +.end method + .method public static hasMiniPlayerMedia()Z .locals 1 diff --git a/patches/extension/radiant/MiniPlayerTrackGestures$Gesture.smali b/patches/extension/radiant/MiniPlayerTrackGestures$Gesture.smali index 44239a3..433ef45 100644 --- a/patches/extension/radiant/MiniPlayerTrackGestures$Gesture.smali +++ b/patches/extension/radiant/MiniPlayerTrackGestures$Gesture.smali @@ -17,14 +17,6 @@ # instance fields .field public final a:Lyl0/l; -# X at ACTION_DOWN -.field public b:F - -# Y at ACTION_DOWN -.field public c:F - -.field public d:Z - # direct methods .method public constructor (Lyl0/l;)V @@ -37,24 +29,6 @@ return-void .end method -.method private static dp(F)F - .locals 1 - - invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; - - move-result-object v0 - - invoke-virtual {v0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; - - move-result-object v0 - - iget v0, v0, Landroid/util/DisplayMetrics;->density:F - - mul-float/2addr p0, v0 - - return p0 -.end method - .method private nextTrack()V .locals 2 @@ -82,7 +56,7 @@ # virtual methods .method public final invoke(Landroid/view/MotionEvent;)Lkotlin/u; - .locals 6 + .locals 3 invoke-virtual {p1}, Landroid/view/MotionEvent;->getActionMasked()I @@ -94,6 +68,10 @@ if-eq v0, v1, :up + const/4 v1, 0x2 + + if-eq v0, v1, :move + const/4 v1, 0x3 if-eq v0, v1, :cancel @@ -105,101 +83,53 @@ invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawX()F move-result v0 - - iput v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->b:F - invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawY()F + move-result v1 + invoke-static {v0, v1}, Lradiant/MiniPlayerTrackGestures;->beginDrag(FF)V + goto :done + + # ACTION_MOVE + :move + invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawX()F + move-result v0 + invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawY()F - iput v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->c:F - - const/4 v0, 0x1 - - iput-boolean v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->d:Z - + move-result v1 + invoke-static {v0, v1}, Lradiant/MiniPlayerTrackGestures;->moveDrag(FF)V goto :done # ACTION_UP :up - iget-boolean v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->d:Z - - if-eqz v0, :done - - const/4 v0, 0x0 - - iput-boolean v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->d:Z - invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawX()F move-result v0 - - iget v1, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->b:F - - sub-float/2addr v0, v1 - invoke-virtual {p1}, Landroid/view/MotionEvent;->getRawY()F move-result v1 + invoke-static {v0, v1}, Lradiant/MiniPlayerTrackGestures;->finishDrag(FF)I - iget v2, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->c:F + move-result v0 - sub-float/2addr v1, v2 + if-eqz v0, :done - invoke-static {v0}, Ljava/lang/Math;->abs(F)F - - move-result v2 - - const/high16 v3, 0x42400000 # 48.0f -> at least 48dp horizontal swipe - - invoke-static {v3}, Lradiant/MiniPlayerTrackGestures$Gesture;->dp(F)F - - move-result v3 - - cmpg-float v4, v2, v3 - - if-gez v4, :check_axis - - goto :done - - :check_axis - invoke-static {v1}, Ljava/lang/Math;->abs(F)F - - move-result v1 - - const/high16 v3, 0x3fc00000 # 1.5f -> horizontal distance must dominate vertical mov. by 1.5x - - mul-float/2addr v1, v3 - - cmpg-float v2, v2, v1 - - if-lez v2, :done - - const/4 v1, 0x0 - - cmpg-float v0, v0, v1 - - # Negative dx = swipe left -> next. Positive dx = swipe right -> previous - if-ltz v0, :next + # Negative result = swipe left -> next. Positive result = swipe right -> previous + if-gez v0, :previous invoke-static {}, Lradiant/MiniPlayerTrackGestures;->suppressTapOpen()V - - invoke-direct {p0}, Lradiant/MiniPlayerTrackGestures$Gesture;->previousTrack()V - - goto :done - - :next - invoke-static {}, Lradiant/MiniPlayerTrackGestures;->suppressTapOpen()V - invoke-direct {p0}, Lradiant/MiniPlayerTrackGestures$Gesture;->nextTrack()V + goto :done + :previous + + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->suppressTapOpen()V + invoke-direct {p0}, Lradiant/MiniPlayerTrackGestures$Gesture;->previousTrack()V goto :done # ACTION_CANCEL :cancel - const/4 v0, 0x0 - - iput-boolean v0, p0, Lradiant/MiniPlayerTrackGestures$Gesture;->d:Z + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->cancelDrag()V :done sget-object p1, Lkotlin/u;->a:Lkotlin/u; diff --git a/patches/extension/radiant/MiniPlayerTrackGestures$OffsetLayer.smali b/patches/extension/radiant/MiniPlayerTrackGestures$OffsetLayer.smali new file mode 100644 index 0000000..97bc03f --- /dev/null +++ b/patches/extension/radiant/MiniPlayerTrackGestures$OffsetLayer.smali @@ -0,0 +1,70 @@ +.class public final Lradiant/MiniPlayerTrackGestures$OffsetLayer; +.super Ljava/lang/Object; +.implements Lyl0/l; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingClass; + value = Lradiant/MiniPlayerTrackGestures; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = "OffsetLayer" +.end annotation + + +# static fields +.field public static final INSTANCE:Lradiant/MiniPlayerTrackGestures$OffsetLayer; + + +# direct methods +.method static constructor ()V + .locals 1 + + new-instance v0, Lradiant/MiniPlayerTrackGestures$OffsetLayer; + + invoke-direct {v0}, Lradiant/MiniPlayerTrackGestures$OffsetLayer;->()V + + sput-object v0, Lradiant/MiniPlayerTrackGestures$OffsetLayer;->INSTANCE:Lradiant/MiniPlayerTrackGestures$OffsetLayer; + + return-void +.end method + +.method private constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public final invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)Lkotlin/u; + .locals 1 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->b:Landroidx/compose/runtime/MutableFloatState; + + invoke-interface {v0}, Landroidx/compose/runtime/MutableFloatState;->getFloatValue()F + + move-result v0 + + invoke-interface {p1, v0}, Landroidx/compose/ui/graphics/GraphicsLayerScope;->setTranslationX(F)V + + sget-object p1, Lkotlin/u;->a:Lkotlin/u; + + return-object p1 +.end method + +.method public bridge synthetic invoke(Ljava/lang/Object;)Ljava/lang/Object; + .locals 0 + + check-cast p1, Landroidx/compose/ui/graphics/GraphicsLayerScope; + + invoke-virtual {p0, p1}, Lradiant/MiniPlayerTrackGestures$OffsetLayer;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)Lkotlin/u; + + move-result-object p1 + + return-object p1 +.end method diff --git a/patches/extension/radiant/MiniPlayerTrackGestures$ResetAnimator.smali b/patches/extension/radiant/MiniPlayerTrackGestures$ResetAnimator.smali new file mode 100644 index 0000000..2f839b0 --- /dev/null +++ b/patches/extension/radiant/MiniPlayerTrackGestures$ResetAnimator.smali @@ -0,0 +1,60 @@ +.class public final Lradiant/MiniPlayerTrackGestures$ResetAnimator; +.super Ljava/lang/Object; +.implements Landroid/animation/ValueAnimator$AnimatorUpdateListener; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingClass; + value = Lradiant/MiniPlayerTrackGestures; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = "ResetAnimator" +.end annotation + + +# direct methods +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public final onAnimationUpdate(Landroid/animation/ValueAnimator;)V + .locals 3 + + move-object v0, p1 + + invoke-virtual {p1}, Landroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object; + + move-result-object v1 + + check-cast v1, Ljava/lang/Float; + + invoke-virtual {v1}, Ljava/lang/Float;->floatValue()F + + move-result v1 + + invoke-static {v1}, Lradiant/MiniPlayerTrackGestures;->setDragOffsetDirect(F)V + + invoke-virtual {v0}, Landroid/animation/ValueAnimator;->getAnimatedFraction()F + + move-result v1 + + const/high16 v2, 0x3f800000 # 1.0f + + cmpg-float v1, v1, v2 + + if-gez v1, :done + + invoke-static {v0}, Lradiant/MiniPlayerTrackGestures;->clearResetAnimator(Landroid/animation/ValueAnimator;)V + + :done + + return-void +.end method diff --git a/patches/extension/radiant/MiniPlayerTrackGestures.smali b/patches/extension/radiant/MiniPlayerTrackGestures.smali index 03b93c6..e9294a5 100644 --- a/patches/extension/radiant/MiniPlayerTrackGestures.smali +++ b/patches/extension/radiant/MiniPlayerTrackGestures.smali @@ -5,8 +5,38 @@ # static fields .field private static a:J +.field public static b:Landroidx/compose/runtime/MutableFloatState; + +.field private static c:Landroid/animation/ValueAnimator; + +.field private static d:Ljava/lang/Object; + +# X at ACTION_DOWN +.field private static e:F + +# Y at ACTION_DOWN +.field private static f:F + +.field private static g:Z + +.field private static h:Z + # direct methods +.method static constructor ()V + .locals 1 + + const/4 v0, 0x0 + + invoke-static {v0}, Landroidx/compose/runtime/PrimitiveSnapshotStateKt;->mutableFloatStateOf(F)Landroidx/compose/runtime/MutableFloatState; + + move-result-object v0 + + sput-object v0, Lradiant/MiniPlayerTrackGestures;->b:Landroidx/compose/runtime/MutableFloatState; + + return-void +.end method + .method private constructor ()V .locals 0 @@ -15,6 +45,372 @@ return-void .end method +.method public static animateReset()V + .locals 7 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + if-eqz v0, :read_offset + + invoke-virtual {v0}, Landroid/animation/ValueAnimator;->cancel()V + + const/4 v0, 0x0 + + sput-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + :read_offset + sget-object v0, Lradiant/MiniPlayerTrackGestures;->b:Landroidx/compose/runtime/MutableFloatState; + + invoke-interface {v0}, Landroidx/compose/runtime/MutableFloatState;->getFloatValue()F + + move-result v0 + + invoke-static {v0}, Ljava/lang/Math;->abs(F)F + + move-result v1 + + const/4 v3, 0x0 + + const/high16 v2, 0x3f000000 # 0.5f + + cmpg-float v1, v1, v2 + + if-lez v1, :snap_zero + + const/4 v1, 0x2 + + new-array v1, v1, [F + + const/4 v2, 0x0 + + aput v0, v1, v2 + + const/4 v0, 0x1 + + aput v3, v1, v0 + + invoke-static {v1}, Landroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimator; + + move-result-object v1 + + const-wide/16 v4, 0xb4 # 180ms + + invoke-virtual {v1, v4, v5}, Landroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator; + + new-instance v0, Landroid/view/animation/DecelerateInterpolator; + + const/high16 v4, 0x3fc00000 # 1.5f + + invoke-direct {v0, v4}, Landroid/view/animation/DecelerateInterpolator;->(F)V + + invoke-virtual {v1, v0}, Landroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V + + new-instance v0, Lradiant/MiniPlayerTrackGestures$ResetAnimator; + + invoke-direct {v0}, Lradiant/MiniPlayerTrackGestures$ResetAnimator;->()V + + invoke-virtual {v1, v0}, Landroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V + + sput-object v1, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + invoke-virtual {v1}, Landroid/animation/ValueAnimator;->start()V + + return-void + + :snap_zero + invoke-static {v3}, Lradiant/MiniPlayerTrackGestures;->setDragOffsetDirect(F)V + + return-void +.end method + +.method public static beginDrag(FF)V + .locals 2 + + sput p0, Lradiant/MiniPlayerTrackGestures;->e:F + + sput p1, Lradiant/MiniPlayerTrackGestures;->f:F + + const/4 v0, 0x1 + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + const/4 v0, 0x0 + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->h:Z + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + if-eqz v0, :zero + + invoke-virtual {v0}, Landroid/animation/ValueAnimator;->cancel()V + + const/4 v0, 0x0 + + sput-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + :zero + const/4 v0, 0x0 + + invoke-static {v0}, Lradiant/MiniPlayerTrackGestures;->setDragOffsetDirect(F)V + + return-void +.end method + +.method public static cancelDrag()V + .locals 1 + + const/4 v0, 0x0 + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->h:Z + + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->animateReset()V + + return-void +.end method + +.method public static clearResetAnimator(Landroid/animation/ValueAnimator;)V + .locals 1 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + if-ne v0, p0, :done + + const/4 v0, 0x0 + + sput-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + :done + return-void +.end method + +.method public static finishDrag(FF)I + .locals 5 + + sget-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + if-nez v0, :active + + const/4 v0, 0x0 + + return v0 + + :active + const/4 v0, 0x0 + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + sget-boolean v1, Lradiant/MiniPlayerTrackGestures;->h:Z + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->h:Z + + sget v2, Lradiant/MiniPlayerTrackGestures;->e:F + + sub-float/2addr p0, v2 + + sget v2, Lradiant/MiniPlayerTrackGestures;->f:F + + sub-float/2addr p1, v2 + + if-eqz v1, :reset + + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->suppressTapOpen()V + + :reset + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->animateReset()V + + invoke-static {p0}, Ljava/lang/Math;->abs(F)F + + move-result v1 + + const/high16 v2, 0x42400000 # 48.0f -> at least 48dp horizontal swipe + + invoke-static {v2}, Lradiant/MiniPlayerTrackGestures;->dp(F)F + + move-result v2 + + cmpg-float v3, v1, v2 + + if-gez v3, :check_axis + + return v0 + + :check_axis + invoke-static {p1}, Ljava/lang/Math;->abs(F)F + + move-result p1 + + const/high16 v2, 0x3fc00000 # 1.5f -> horizontal distance must dominate vertical mov. by 1.5x + + mul-float/2addr p1, v2 + + cmpg-float v1, v1, p1 + + if-lez v1, :no_swipe + + const/4 p1, 0x0 + + cmpg-float p0, p0, p1 + + if-ltz p0, :next + + const/4 v0, 0x1 + + return v0 + + :next + const/4 v0, -0x1 + + return v0 + + :no_swipe + return v0 +.end method + +.method public static moveDrag(FF)V + .locals 6 + + sget-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + if-eqz v0, :done + + invoke-static {}, Lradiant/MiniPlayerGestures;->isAnyDragging()Z + + move-result v0 + + if-eqz v0, :move_continue + + const/4 v0, 0x0 + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->g:Z + + sput-boolean v0, Lradiant/MiniPlayerTrackGestures;->h:Z + + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->animateReset()V + + goto :done + + :move_continue + sget v0, Lradiant/MiniPlayerTrackGestures;->e:F + + sub-float/2addr p0, v0 + + sget v0, Lradiant/MiniPlayerTrackGestures;->f:F + + sub-float/2addr p1, v0 + + invoke-static {p0}, Ljava/lang/Math;->abs(F)F + + move-result v0 + + invoke-static {p1}, Ljava/lang/Math;->abs(F)F + + move-result v1 + + sget-boolean v2, Lradiant/MiniPlayerTrackGestures;->h:Z + + if-nez v2, :publish + + const/high16 v2, 0x40c00000 # 6.0f dp dead zone + + invoke-static {v2}, Lradiant/MiniPlayerTrackGestures;->dp(F)F + + move-result v2 + + cmpg-float v3, v0, v2 + + if-gez v3, :move_axis + + goto :done + + :move_axis + const v2, 0x3f8ccccd # 1.1f horizontal dominance while dragging + + mul-float/2addr v1, v2 + + cmpg-float v2, v0, v1 + + if-gez v2, :accept + + goto :done + + :accept + const/4 v2, 0x1 + + sput-boolean v2, Lradiant/MiniPlayerTrackGestures;->h:Z + + :publish + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->suppressTapOpen()V + + invoke-static {p0}, Lradiant/MiniPlayerTrackGestures;->setDragOffset(F)V + + :done + return-void +.end method + +.method private static dp(F)F + .locals 1 + + invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; + + move-result-object v0 + + invoke-virtual {v0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; + + move-result-object v0 + + iget v0, v0, Landroid/util/DisplayMetrics;->density:F + + mul-float/2addr p0, v0 + + return p0 +.end method + +.method public static feedbackModifier(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; + .locals 2 + + const/high16 v0, 0x3f800000 # 1.0f + + invoke-static {p0, v0}, Landroidx/compose/ui/ZIndexModifierKt;->zIndex(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; + + move-result-object p0 + + sget-object v0, Lradiant/MiniPlayerTrackGestures$OffsetLayer;->INSTANCE:Lradiant/MiniPlayerTrackGestures$OffsetLayer; + + invoke-static {p0, v0}, Landroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer(Landroidx/compose/ui/Modifier;Lyl0/l;)Landroidx/compose/ui/Modifier; + + move-result-object p0 + + return-object p0 +.end method + +.method public static onRenderedItem(Ljava/lang/Object;)V + .locals 2 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->d:Ljava/lang/Object; + + if-eqz v0, :store_initial + + invoke-virtual {v0, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z + + move-result v1 + + if-nez v1, :done + + sput-object p0, Lradiant/MiniPlayerTrackGestures;->d:Ljava/lang/Object; + + invoke-static {}, Lradiant/MiniPlayerTrackGestures;->animateReset()V + + return-void + + :store_initial + sput-object p0, Lradiant/MiniPlayerTrackGestures;->d:Ljava/lang/Object; + + :done + return-void +.end method + .method public static consumeTapOpenSuppression()Z .locals 5 @@ -67,6 +463,80 @@ return-void .end method +.method public static setDragOffset(F)V + .locals 5 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + if-eqz v0, :rubber_band + + invoke-virtual {v0}, Landroid/animation/ValueAnimator;->cancel()V + + const/4 v0, 0x0 + + sput-object v0, Lradiant/MiniPlayerTrackGestures;->c:Landroid/animation/ValueAnimator; + + :rubber_band + invoke-static {p0}, Ljava/lang/Math;->abs(F)F + + move-result v0 + + const/high16 v1, 0x42800000 # 64.0f dp free travel + + invoke-static {v1}, Lradiant/MiniPlayerTrackGestures;->dp(F)F + + move-result v1 + + cmpg-float v2, v0, v1 + + if-lez v2, :publish + + sub-float/2addr v0, v1 + + const/high16 v2, 0x3e800000 # 0.25f resistance after 64dp + + mul-float/2addr v0, v2 + + const v2, 0x3eb33333 # 0.35f max extra travel + + mul-float/2addr v2, v1 + + invoke-static {v0, v2}, Ljava/lang/Math;->min(FF)F + + move-result v0 + + add-float/2addr v0, v1 + + const/4 v1, 0x0 + + cmpg-float v2, p0, v1 + + if-gez v2, :positive + + neg-float p0, v0 + + goto :publish + + :positive + move p0, v0 + + + :publish + invoke-static {p0}, Lradiant/MiniPlayerTrackGestures;->setDragOffsetDirect(F)V + + return-void +.end method + +.method public static setDragOffsetDirect(F)V + .locals 1 + + sget-object v0, Lradiant/MiniPlayerTrackGestures;->b:Landroidx/compose/runtime/MutableFloatState; + + invoke-interface {v0, p0}, Landroidx/compose/runtime/MutableFloatState;->setFloatValue(F)V + + return-void +.end method + .method public static trackModifier(Landroidx/compose/ui/Modifier;Lyl0/l;)Landroidx/compose/ui/Modifier; .locals 1 diff --git a/patches/mini-player-gestures-left-right.patch b/patches/mini-player-gestures-left-right.patch index 1dc9a9c..7957ebf 100644 --- a/patches/mini-player-gestures-left-right.patch +++ b/patches/mini-player-gestures-left-right.patch @@ -11,6 +11,29 @@ .line 38 sget-object v21, Landroidx/compose/ui/Alignment;->Companion:Landroidx/compose/ui/Alignment$Companion; +@@ -1884,5 +1888,5 @@ + .line 56 + iget-object v6, v0, Lcom/tidal/android/feature/appscaffold/ui/s;->b:Lcom/tidal/android/feature/appscaffold/ui/p; +- ++ invoke-static {v6}, Lradiant/MiniPlayerTrackGestures;->onRenderedItem(Ljava/lang/Object;)V # reset stale drag offset if track metadata changes mid-gesture + .line 57 + invoke-virtual/range {v16 .. v16}, Lcom/squareup/ui/market/core/theme/MarketStylesheet;->getBorderRadii()Lcom/squareup/ui/market/core/theme/MarketStylesheet$b; +@@ -1919,5 +1923,6 @@ + invoke-static {v5, v4}, Landroidx/compose/foundation/layout/SizeKt;->size-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier; +- + move-result-object v4 +- ++ invoke-static {v4}, Lradiant/MiniPlayerTrackGestures;->feedbackModifier(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; # move the whole cover container with horizontal swipe ++ move-result-object v4 ++ + .line 63 +@@ -2032,3 +2038,5 @@ + move-result-object v4 +- ++ invoke-static {v4}, Lradiant/MiniPlayerTrackGestures;->feedbackModifier(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier; # move title/artist with horizontal swipe ++ move-result-object v4 ++ + .line 72 --- a/com/tidal/android/feature/appscaffold/ui/MiniPlayerViewModel.smali +++ b/com/tidal/android/feature/appscaffold/ui/MiniPlayerViewModel.smali @@ -816,10 +816,10 @@