mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	Merge pull request #1878 from shivanju/auto_queue_logic
#1336 Fix for inserting new streams when auto queuing is enabled
This commit is contained in:
		| @@ -145,7 +145,7 @@ public class PlayerHelper { | |||||||
|  |  | ||||||
|         final StreamInfoItem nextVideo = info.getNextVideo(); |         final StreamInfoItem nextVideo = info.getNextVideo(); | ||||||
|         if (nextVideo != null && !urls.contains(nextVideo.getUrl())) { |         if (nextVideo != null && !urls.contains(nextVideo.getUrl())) { | ||||||
|             return new SinglePlayQueue(nextVideo); |             return getAutoQueuedSinglePlayQueue(nextVideo); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         final List<InfoItem> relatedItems = info.getRelatedStreams(); |         final List<InfoItem> relatedItems = info.getRelatedStreams(); | ||||||
| @@ -158,7 +158,7 @@ public class PlayerHelper { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         Collections.shuffle(autoQueueItems); |         Collections.shuffle(autoQueueItems); | ||||||
|         return autoQueueItems.isEmpty() ? null : new SinglePlayQueue(autoQueueItems.get(0)); |         return autoQueueItems.isEmpty() ? null : getAutoQueuedSinglePlayQueue(autoQueueItems.get(0)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     //////////////////////////////////////////////////////////////////////////// |     //////////////////////////////////////////////////////////////////////////// | ||||||
| @@ -350,4 +350,10 @@ public class PlayerHelper { | |||||||
|         return getPreferences(context).getString(context.getString(R.string.minimize_on_exit_key), |         return getPreferences(context).getString(context.getString(R.string.minimize_on_exit_key), | ||||||
|                 key); |                 key); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private static SinglePlayQueue getAutoQueuedSinglePlayQueue(StreamInfoItem streamInfoItem) { | ||||||
|  |         SinglePlayQueue singlePlayQueue = new SinglePlayQueue(streamInfoItem); | ||||||
|  |         singlePlayQueue.getItem().setAutoQueued(true); | ||||||
|  |         return singlePlayQueue; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -233,6 +233,9 @@ public abstract class PlayQueue implements Serializable { | |||||||
|             backup.addAll(itemList); |             backup.addAll(itemList); | ||||||
|             Collections.shuffle(itemList); |             Collections.shuffle(itemList); | ||||||
|         } |         } | ||||||
|  |         if (!streams.isEmpty() && streams.get(streams.size() - 1).isAutoQueued() && !itemList.get(0).isAutoQueued()) { | ||||||
|  |             streams.remove(streams.size() - 1); | ||||||
|  |         } | ||||||
|         streams.addAll(itemList); |         streams.addAll(itemList); | ||||||
|  |  | ||||||
|         broadcast(new AppendEvent(itemList.size())); |         broadcast(new AppendEvent(itemList.size())); | ||||||
| @@ -314,7 +317,9 @@ public abstract class PlayQueue implements Serializable { | |||||||
|             queueIndex.incrementAndGet(); |             queueIndex.incrementAndGet(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         streams.add(target, streams.remove(source)); |         PlayQueueItem playQueueItem = streams.remove(source); | ||||||
|  |         playQueueItem.setAutoQueued(false); | ||||||
|  |         streams.add(target, playQueueItem); | ||||||
|         broadcast(new MoveEvent(source, target)); |         broadcast(new MoveEvent(source, target)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,9 +25,10 @@ public class PlayQueueItem implements Serializable { | |||||||
|     @NonNull final private String uploader; |     @NonNull final private String uploader; | ||||||
|     @NonNull final private StreamType streamType; |     @NonNull final private StreamType streamType; | ||||||
|  |  | ||||||
|  |     private boolean isAutoQueued; | ||||||
|  |  | ||||||
|     private long recoveryPosition; |     private long recoveryPosition; | ||||||
|     private Throwable error; |     private Throwable error; | ||||||
|  |  | ||||||
|     PlayQueueItem(@NonNull final StreamInfo info) { |     PlayQueueItem(@NonNull final StreamInfo info) { | ||||||
|         this(info.getName(), info.getUrl(), info.getServiceId(), info.getDuration(), |         this(info.getName(), info.getUrl(), info.getServiceId(), info.getDuration(), | ||||||
|                 info.getThumbnailUrl(), info.getUploaderName(), info.getStreamType()); |                 info.getThumbnailUrl(), info.getUploaderName(), info.getStreamType()); | ||||||
| @@ -105,6 +106,14 @@ public class PlayQueueItem implements Serializable { | |||||||
|                 .doOnError(throwable -> error = throwable); |                 .doOnError(throwable -> error = throwable); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public boolean isAutoQueued() { | ||||||
|  |         return isAutoQueued; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setAutoQueued(boolean autoQueued) { | ||||||
|  |         isAutoQueued = autoQueued; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     //////////////////////////////////////////////////////////////////////////// |     //////////////////////////////////////////////////////////////////////////// | ||||||
|     // Item States, keep external access out |     // Item States, keep external access out | ||||||
|     //////////////////////////////////////////////////////////////////////////// |     //////////////////////////////////////////////////////////////////////////// | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tobias Groza
					Tobias Groza