mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 23:03:00 +00:00 
			
		
		
		
	Move local/remote playlist merge() to PlaylistLocalItem class
In order not to have a utils class just for one function
This commit is contained in:
		| @@ -1,7 +1,33 @@ | ||||
| package org.schabi.newpipe.database.playlist; | ||||
|  | ||||
| import org.schabi.newpipe.database.LocalItem; | ||||
| import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
|  | ||||
| public interface PlaylistLocalItem extends LocalItem { | ||||
|     String getOrderingName(); | ||||
|  | ||||
|     static List<PlaylistLocalItem> merge( | ||||
|             final List<PlaylistMetadataEntry> localPlaylists, | ||||
|             final List<PlaylistRemoteEntity> remotePlaylists) { | ||||
|         final List<PlaylistLocalItem> items = new ArrayList<>( | ||||
|                 localPlaylists.size() + remotePlaylists.size()); | ||||
|         items.addAll(localPlaylists); | ||||
|         items.addAll(remotePlaylists); | ||||
|  | ||||
|         Collections.sort(items, (left, right) -> { | ||||
|             final String on1 = left.getOrderingName(); | ||||
|             final String on2 = right.getOrderingName(); | ||||
|             if (on1 == null) { | ||||
|                 return on2 == null ? 0 : 1; | ||||
|             } else { | ||||
|                 return on2 == null ? -1 : on1.compareToIgnoreCase(on2); | ||||
|             } | ||||
|         }); | ||||
|  | ||||
|         return items; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -29,7 +29,6 @@ import org.schabi.newpipe.local.playlist.RemotePlaylistManager; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.OnClickGesture; | ||||
| import org.schabi.newpipe.util.PlaylistItemsUtils; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @@ -138,7 +137,7 @@ public final class BookmarkFragment extends BaseLocalListFragment<List<PlaylistL | ||||
|         super.startLoading(forceLoad); | ||||
|  | ||||
|         Flowable.combineLatest(localPlaylistManager.getPlaylists(), | ||||
|                 remotePlaylistManager.getPlaylists(), PlaylistItemsUtils::merge) | ||||
|                 remotePlaylistManager.getPlaylists(), PlaylistLocalItem::merge) | ||||
|                 .onBackpressureLatest() | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe(getPlaylistsSubscriber()); | ||||
|   | ||||
| @@ -29,7 +29,6 @@ import org.schabi.newpipe.local.playlist.LocalPlaylistManager; | ||||
| import org.schabi.newpipe.local.playlist.RemotePlaylistManager; | ||||
| import org.schabi.newpipe.report.ErrorActivity; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.PlaylistItemsUtils; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Vector; | ||||
| @@ -84,12 +83,12 @@ public class SelectPlaylistFragment extends DialogFragment { | ||||
|         recyclerView.setVisibility(View.GONE); | ||||
|         emptyView.setVisibility(View.GONE); | ||||
|  | ||||
|         final AppDatabase database = NewPipeDatabase.getInstance(this.getContext()); | ||||
|         final AppDatabase database = NewPipeDatabase.getInstance(requireContext()); | ||||
|         final LocalPlaylistManager localPlaylistManager = new LocalPlaylistManager(database); | ||||
|         final RemotePlaylistManager remotePlaylistManager = new RemotePlaylistManager(database); | ||||
|  | ||||
|         playlistsSubscriber = Flowable.combineLatest(localPlaylistManager.getPlaylists(), | ||||
|                 remotePlaylistManager.getPlaylists(), PlaylistItemsUtils::merge) | ||||
|                 remotePlaylistManager.getPlaylists(), PlaylistLocalItem::merge) | ||||
|                 .subscribe(this::displayPlaylists, this::onError); | ||||
|  | ||||
|         return v; | ||||
|   | ||||
| @@ -1,38 +0,0 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import org.schabi.newpipe.database.playlist.PlaylistLocalItem; | ||||
| import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry; | ||||
| import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
|  | ||||
| public final class PlaylistItemsUtils { | ||||
|     private PlaylistItemsUtils() { } | ||||
|  | ||||
|     public static List<PlaylistLocalItem> merge( | ||||
|             final List<PlaylistMetadataEntry> localPlaylists, | ||||
|             final List<PlaylistRemoteEntity> remotePlaylists) { | ||||
|         final List<PlaylistLocalItem> items = new ArrayList<>( | ||||
|                 localPlaylists.size() + remotePlaylists.size()); | ||||
|         items.addAll(localPlaylists); | ||||
|         items.addAll(remotePlaylists); | ||||
|  | ||||
|         Collections.sort(items, (left, right) -> { | ||||
|             String on1 = left.getOrderingName(); | ||||
|             String on2 = right.getOrderingName(); | ||||
|             if (on1 == null && on2 == null) { | ||||
|                 return 0; | ||||
|             } else if (on1 != null && on2 == null) { | ||||
|                 return -1; | ||||
|             } else if (on1 == null && on2 != null) { | ||||
|                 return 1; | ||||
|             } else { | ||||
|                 return on1.compareToIgnoreCase(on2); | ||||
|             } | ||||
|         }); | ||||
|  | ||||
|         return items; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Stypox
					Stypox