1313
1414import org .schabi .newpipe .NewPipeDatabase ;
1515import org .schabi .newpipe .R ;
16- import org .schabi .newpipe .database .playlist .PlaylistMetadataEntry ;
16+ import org .schabi .newpipe .database .playlist .PlaylistDuplicatesEntry ;
1717import org .schabi .newpipe .database .stream .model .StreamEntity ;
1818import org .schabi .newpipe .local .LocalItemListAdapter ;
1919import org .schabi .newpipe .local .playlist .LocalPlaylistManager ;
2626public final class PlaylistAppendDialog extends PlaylistDialog {
2727 private static final String TAG = PlaylistAppendDialog .class .getCanonicalName ();
2828
29- private static final float DEFAULT_ALPHA = 1f ;
30- private static final float GRAYED_OUT_ALPHA = 0.3f ;
31-
3229 private RecyclerView playlistRecyclerView ;
3330 private LocalItemListAdapter playlistAdapter ;
34- private List <Long > duplicateIds ;
3531
3632 private final CompositeDisposable playlistDisposables = new CompositeDisposable ();
3733
@@ -64,15 +60,13 @@ public void onViewCreated(@NonNull final View view, @Nullable final Bundle saved
6460 final LocalPlaylistManager playlistManager =
6561 new LocalPlaylistManager (NewPipeDatabase .getInstance (requireContext ()));
6662
67- duplicateIds = playlistManager .getDuplicatePlaylists (getStreamEntities ().get (0 ).getUrl ())
68- .blockingFirst ();
69-
7063 playlistAdapter = new LocalItemListAdapter (getActivity ());
7164 playlistAdapter .setHasStableIds (true );
7265 playlistAdapter .setSelectedListener (selectedItem -> {
7366 final List <StreamEntity > entities = getStreamEntities ();
74- if (selectedItem instanceof PlaylistMetadataEntry && entities != null ) {
75- onPlaylistSelected (playlistManager , (PlaylistMetadataEntry ) selectedItem , entities );
67+ if (selectedItem instanceof PlaylistDuplicatesEntry && entities != null ) {
68+ onPlaylistSelected (playlistManager ,
69+ (PlaylistDuplicatesEntry ) selectedItem , entities );
7670 }
7771 });
7872
@@ -83,7 +77,8 @@ public void onViewCreated(@NonNull final View view, @Nullable final Bundle saved
8377 final View newPlaylistButton = view .findViewById (R .id .newPlaylist );
8478 newPlaylistButton .setOnClickListener (ignored -> openCreatePlaylistDialog ());
8579
86- playlistDisposables .add (playlistManager .getPlaylists ()
80+ playlistDisposables .add (playlistManager
81+ .getPlaylistDuplicates (getStreamEntities ().get (0 ).getUrl ())
8782 .observeOn (AndroidSchedulers .mainThread ())
8883 .subscribe (this ::onPlaylistsReceived ));
8984 }
@@ -125,63 +120,24 @@ public void openCreatePlaylistDialog() {
125120 requireDialog ().dismiss ();
126121 }
127122
128- private void onPlaylistsReceived (@ NonNull final List <PlaylistMetadataEntry > playlists ) {
123+ private void onPlaylistsReceived (@ NonNull final List <PlaylistDuplicatesEntry > playlists ) {
129124 if (playlistAdapter != null && playlistRecyclerView != null ) {
130125 playlistAdapter .clearStreamItemList ();
131126 playlistAdapter .addItems (playlists );
132127 playlistRecyclerView .setVisibility (View .VISIBLE );
133-
134- playlistRecyclerView .addOnScrollListener (new RecyclerView .OnScrollListener () {
135- @ Override
136- public void onScrolled (@ NonNull final RecyclerView recyclerView , final int dx ,
137- final int dy ) {
138- showDuplicateIndicators (recyclerView );
139- }
140- });
141- initDuplicateIndicators (playlistRecyclerView );
142- }
143- }
144-
145- public void initDuplicateIndicators (@ NonNull final RecyclerView view ) {
146- showDuplicateIndicators (view );
147-
148- if (!duplicateIds .isEmpty ()) {
149- final View indicatorExplanation = getView ()
150- .findViewById (R .id .playlist_duplicate );
151- indicatorExplanation .setVisibility (View .VISIBLE );
152- }
153- }
154-
155- public void showDuplicateIndicators (@ NonNull final RecyclerView view ) {
156- if (view .getAdapter () == null ) {
157- return ;
158- }
159-
160- final int count = view .getAdapter ().getItemCount ();
161- for (int i = 0 ; i < count ; i ++) {
162-
163- final RecyclerView .ViewHolder viewHolder = view .findViewHolderForAdapterPosition (i );
164- if (viewHolder != null ) {
165- if (duplicateIds .contains (view .getAdapter ().getItemId (i ))) {
166- viewHolder .itemView .setAlpha (GRAYED_OUT_ALPHA );
167- } else {
168- viewHolder .itemView .setAlpha (DEFAULT_ALPHA );
169- }
170-
171- }
172128 }
173129 }
174130
175131 private void onPlaylistSelected (@ NonNull final LocalPlaylistManager manager ,
176- @ NonNull final PlaylistMetadataEntry playlist ,
132+ @ NonNull final PlaylistDuplicatesEntry playlist ,
177133 @ NonNull final List <StreamEntity > streams ) {
178134
179- final int numOfDuplicates = manager . getPlaylistDuplicateCount ( playlist . uid ,
180- streams . get ( 0 ). getUrl ()). blockingFirst ();
181- String toastText = getString (R .string .playlist_add_stream_success );
182-
183- if ( numOfDuplicates > 0 ) {
184- toastText = getString (R .string .playlist_add_stream_success_duplicate , numOfDuplicates );
135+ final String toastText ;
136+ if ( playlist . timesStreamIsContained > 0 ) {
137+ toastText = getString (R .string .playlist_add_stream_success_duplicate ,
138+ playlist . timesStreamIsContained );
139+ } else {
140+ toastText = getString (R .string .playlist_add_stream_success );
185141 }
186142
187143 final Toast successToast = Toast .makeText (getContext (), toastText , Toast .LENGTH_SHORT );
0 commit comments