--- a/com/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment.smali +++ b/com/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment.smali @@ -107,6 +107,118 @@ .end method +.method public final Y(ILcom/aspiro/wamp/model/FavoriteTrack;)Z + .locals 3 + + # reject unavailable tracks + if-eqz p2, :not_eligible + + iget-object v0, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->d:Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/g0; + + if-eqz v0, :not_eligible + + invoke-virtual {v0, p1}, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/g0;->b(I)Lcom/aspiro/wamp/model/FavoriteTrack; + + move-result-object v1 + + if-eqz v1, :not_eligible + + invoke-virtual {p2}, Lcom/aspiro/wamp/model/MediaItem;->getId()I + + move-result v2 + + invoke-virtual {v1}, Lcom/aspiro/wamp/model/MediaItem;->getId()I + + move-result p1 + + if-ne v2, p1, :not_eligible + + iget-object v0, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->f:Lcom/aspiro/wamp/model/AvailabilityInteractor; + + if-eqz v0, :not_eligible + + invoke-interface {v0, v1}, Lcom/aspiro/wamp/model/AvailabilityInteractor;->getAvailability(Lcom/aspiro/wamp/model/MediaItem;)Lcom/aspiro/wamp/model/Availability$MediaItem; + + move-result-object v0 + + invoke-virtual {v0}, Lcom/aspiro/wamp/model/Availability$MediaItem;->isAvailable()Z + + move-result v0 + + if-eqz v0, :not_eligible + + const/4 v0, 0x1 + + return v0 + + :not_eligible + const/4 v0, 0x0 + + return v0 +.end method + +.method public final Z(ILcom/aspiro/wamp/model/FavoriteTrack;)V + .locals 6 + + move v5, p1 + + invoke-virtual {p0, p1, p2}, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->Y(ILcom/aspiro/wamp/model/FavoriteTrack;)Z + + move-result v0 + + if-eqz v0, :done + + # accepts a Source, wrap the swiped track. + iget-object p1, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->d:Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/g0; + + if-eqz p1, :done + + iget-object v0, p1, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/g0;->m:Lcom/tidal/android/navigation/NavigationInfo; + + invoke-static {v0}, Lcom/aspiro/wamp/playqueue/source/model/b;->m(Lcom/tidal/android/navigation/NavigationInfo;)Lcom/aspiro/wamp/playqueue/source/model/MyItemsSource; + + move-result-object v4 + + invoke-virtual {v4, p2}, Lcom/aspiro/wamp/playqueue/source/model/Source;->addSourceItem(Lcom/aspiro/wamp/model/MediaItem;)V + + iget-object v3, p1, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/g0;->k:Lcom/aspiro/wamp/eventtracking/model/ContextualMetadata; + + iget-object v0, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->b:Lx40/a; + + instance-of p1, v0, Lh4/a; + + if-eqz p1, :done + + check-cast v0, Lh4/a; + + invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getActivity()Landroidx/fragment/app/FragmentActivity; + + move-result-object v1 + + if-eqz v1, :done + + move-object v2, p2 + + invoke-virtual/range {v0 .. v4}, Lh4/a;->q(Landroidx/fragment/app/FragmentActivity;Lcom/aspiro/wamp/model/Track;Lcom/aspiro/wamp/eventtracking/model/ContextualMetadata;Lcom/aspiro/wamp/playqueue/source/model/Source;)Z + + move-result v0 + + if-nez v0, :done + + # if nothing is playing, call row click handler to play the track directly instead of adding it to queue + iget-object v0, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->l:Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/m; + + if-eqz v0, :done + + iget-object v0, v0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/m;->f:Landroidx/recyclerview/widget/RecyclerView; + + invoke-virtual {p0, v0, v5, v0}, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->w(Landroidx/recyclerview/widget/RecyclerView;ILandroid/view/View;)V + + :done + return-void +.end method + + # virtual methods .method public final M()Ln8/b; .locals 1 @@ -2265,9 +2418,16 @@ iput-object p0, p1, Lo4/g;->e:Lo4/g$e; .line 224 .line 225 iput p2, p1, Lo4/g;->b:I + iget-object p1, p0, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->l:Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/m; + + invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; + + iget-object p1, p1, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/m;->f:Landroidx/recyclerview/widget/RecyclerView; + + invoke-static {p0, p1}, Lradiant/swipe/FavoriteTracksResolver;->install(Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;Landroidx/recyclerview/widget/RecyclerView;)V .line 226 .line 227 invoke-virtual {p0}, Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/FavoriteTracksFragment;->N()Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/n; --- a/p7/a.smali +++ b/p7/a.smali @@ -33,3 +33,11 @@ .end method +.method public b(Landroidx/recyclerview/widget/RecyclerView;)V + .locals 0 + + invoke-static {p1}, Lradiant/swipe/DynamicTrackResolver;->install(Landroidx/recyclerview/widget/RecyclerView;)V + + return-void +.end method + .method public final c(Ljava/lang/Object;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)V --- a/com/aspiro/wamp/mycollection/subpages/albums/myalbums/MyAlbumsView.smali +++ b/com/aspiro/wamp/mycollection/subpages/albums/myalbums/MyAlbumsView.smali @@ -1286,6 +1286,8 @@ .line 23 invoke-static {v0, p2}, Lcom/tidal/android/feature/appscaffold/ui/recyclerview/b;->a(Landroidx/lifecycle/LifecycleOwner;Landroidx/recyclerview/widget/RecyclerView;)Lcom/tidal/android/feature/appscaffold/ui/recyclerview/a; + invoke-static {p0, p2}, Lradiant/swipe/MyAlbumsResolver;->install(Lcom/aspiro/wamp/mycollection/subpages/albums/myalbums/MyAlbumsView;Landroidx/recyclerview/widget/RecyclerView;)V + .line 24 .line 25 .line 26 --- a/androidx/recyclerview/widget/ItemTouchHelper$2.smali +++ b/androidx/recyclerview/widget/ItemTouchHelper$2.smali @@ -773,7 +773,11 @@ const/4 v5, 0x1 .line 54 - if-eq p1, v5, :cond_9 + if-ne p1, v5, :rl_not_explicit_release + iget-object v6, v2, Landroidx/recyclerview/widget/ItemTouchHelper;->mCallback:Landroidx/recyclerview/widget/ItemTouchHelper$Callback; + invoke-static {v6, v5}, Lradiant/SwipeToQueue;->setReleaseAllowed(Landroidx/recyclerview/widget/ItemTouchHelper$Callback;Z)V + goto :cond_9 + :rl_not_explicit_release .line 55 .line 56 @@ -867,6 +871,9 @@ .line 97 :cond_6 + const/4 v6, 0x0 + iget-object v1, v2, Landroidx/recyclerview/widget/ItemTouchHelper;->mCallback:Landroidx/recyclerview/widget/ItemTouchHelper$Callback; + invoke-static {v1, v6}, Lradiant/SwipeToQueue;->setReleaseAllowed(Landroidx/recyclerview/widget/ItemTouchHelper$Callback;Z)V iget-object p1, v2, Landroidx/recyclerview/widget/ItemTouchHelper;->mVelocityTracker:Landroid/view/VelocityTracker; .line 98 --- a/h4/a.smali +++ b/h4/a.smali @@ -931,1 +931,46 @@ .end method + +.method public final q(Landroidx/fragment/app/FragmentActivity;Lcom/aspiro/wamp/model/Track;Lcom/aspiro/wamp/eventtracking/model/ContextualMetadata;Lcom/aspiro/wamp/playqueue/source/model/Source;)Z + .locals 3 + + iget-object v0, p0, Lh4/a;->n:Lcom/aspiro/wamp/contextmenu/menu/track/TrackContextMenu$a; + + check-cast v0, Lcom/aspiro/wamp/contextmenu/menu/track/d; + + iget-object v1, v0, Lcom/aspiro/wamp/contextmenu/menu/track/d;->a:Lcom/aspiro/wamp/contextmenu/menu/track/c; + + iget-object v0, v1, Lcom/aspiro/wamp/contextmenu/menu/track/c;->b:Ldagger/internal/j; + + invoke-interface {v0}, Lql0/a;->get()Ljava/lang/Object; + + move-result-object v0 + + check-cast v0, Lm3/f$a; + + invoke-interface {v0, p2, p3, p4}, Lm3/f$a;->a(Lcom/aspiro/wamp/model/Track;Lcom/aspiro/wamp/eventtracking/model/ContextualMetadata;Lcom/aspiro/wamp/playqueue/source/model/Source;)Lm3/f; + + move-result-object v0 + + iget-object v2, v0, Lm3/f;->j:Lcom/aspiro/wamp/playqueue/g1; + + invoke-virtual {v2}, Lcom/aspiro/wamp/playqueue/g1;->a()Lcom/aspiro/wamp/player/d; + + move-result-object v2 + + invoke-virtual {v2}, Lcom/aspiro/wamp/player/d;->b()Lcom/aspiro/wamp/model/MediaItemParent; + + move-result-object v2 + + if-eqz v2, :empty_queue + + invoke-virtual {v0, p1}, Lm3/f;->b(Landroidx/fragment/app/FragmentActivity;)V + + const/4 v0, 0x1 + + return v0 + + :empty_queue + const/4 v0, 0x0 + + return v0 +.end method --- a/com/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl.smali +++ b/com/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl.smali @@ -31,6 +31,10 @@ .field public g:I +.field public final h:Landroid/graphics/drawable/Drawable; + +.field public i:Z + # direct methods .method public constructor (Landroid/content/Context;Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/a;Lcom/aspiro/wamp/nowplaying/view/playqueue/l;)V @@ -55,6 +59,26 @@ .line 10 .line 11 + # trash icon + sget p2, Lcom/aspiro/wamp/R$drawable;->ic_delete:I + + invoke-virtual {p1, p2}, Landroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable; + + move-result-object p2 + + if-eqz p2, :store_remove_icon + + invoke-virtual {p2}, Landroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; + + move-result-object p2 + + const/4 p3, -0x1 + + invoke-virtual {p2, p3}, Landroid/graphics/drawable/Drawable;->setTint(I)V + + :store_remove_icon + iput-object p2, p0, Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl;->h:Landroid/graphics/drawable/Drawable; + new-instance p2, Landroid/graphics/drawable/ColorDrawable; .line 12 @@ -377,6 +401,10 @@ .line 5 .line 6 .line 7 + const/4 v0, 0x0 + + iput-boolean v0, p0, Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl;->i:Z + iget-object v0, p0, Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl;->d:Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl$ActionType; .line 8 @@ -844,7 +872,7 @@ .line 32 .line 33 - const/4 v1, 0x4 + const/16 v1, __RL_SWIPE_TO_QUEUE_DIRECTION__ .line 34 :cond_1 @@ -896,7 +924,23 @@ .end method +.method public getSwipeEscapeVelocity(F)F + .locals 1 + # Float.MAX_VALUE + const v0, 0x7f7fffff + + return v0 +.end method + +.method public getSwipeThreshold(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;)F + .locals 1 + # 0.3f + const v0, 0x3e99999a + + return v0 +.end method + .method public final onChildDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;FFIZ)V - .locals 2 + .locals 8 .line 1 invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; @@ -916,6 +960,16 @@ .line 10 invoke-super/range {p0 .. p7}, Landroidx/recyclerview/widget/ItemTouchHelper$Callback;->onChildDraw(Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;FFIZ)V + move-object/from16 v0, p0 + move-object/from16 v1, p1 + move-object/from16 v2, p3 + move/from16 v3, p4 + move/from16 v4, p6 + move/from16 v5, p7 + invoke-static/range {v0 .. v5}, Lradiant/QueueSwipeRemove;->draw(Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/ItemTouchHelperCallbackImpl;Landroid/graphics/Canvas;Landroidx/recyclerview/widget/RecyclerView$ViewHolder;FIZ)V + + goto :cond_0 + .line 11 .line 12 .line 13 --- a/com/aspiro/wamp/nowplaying/view/playqueue/l.smali +++ b/com/aspiro/wamp/nowplaying/view/playqueue/l.smali @@ -983,6 +983,8 @@ .line 121 move-result-object p1 + invoke-static {p1}, Lradiant/QueueSwipeRemove;->setRemoveDuration(Landroidx/recyclerview/widget/RecyclerView;)V + .line 122 new-instance p2, Landroidx/recyclerview/widget/LinearLayoutManager;