From d0c03a0211209cdff8ad2819a4c3c2580a57ee37 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Tue, 14 Jul 2020 21:15:29 +0200 Subject: [PATCH 01/11] Use androidx.annotation.NonNull instead of io.reactivex.annotations.NonNull --- app/src/main/java/org/schabi/newpipe/App.java | 2 +- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 4 ++-- .../schabi/newpipe/fragments/list/BaseListInfoFragment.java | 5 ++--- .../newpipe/player/playqueue/AbstractInfoPlayQueue.java | 3 ++- .../schabi/newpipe/player/playqueue/PlayQueueAdapter.java | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java index 531cb5a38..33d77ea47 100644 --- a/app/src/main/java/org/schabi/newpipe/App.java +++ b/app/src/main/java/org/schabi/newpipe/App.java @@ -9,6 +9,7 @@ import android.content.SharedPreferences; import android.os.Build; import android.util.Log; +import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import com.nostra13.universalimageloader.cache.memory.impl.LRULimitedMemoryCache; @@ -37,7 +38,6 @@ import java.net.SocketException; import java.util.Collections; import java.util.List; -import io.reactivex.annotations.NonNull; import io.reactivex.exceptions.CompositeException; import io.reactivex.exceptions.MissingBackpressureException; import io.reactivex.exceptions.OnErrorNotImplementedException; diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index fff689930..5718a4600 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1025,7 +1025,7 @@ public class VideoDetailFragment extends BaseStateFragment if (description.getType() == Description.HTML) { disposables.add(Single.just(description.getContent()) - .map((@io.reactivex.annotations.NonNull String descriptionText) -> { + .map((@NonNull String descriptionText) -> { Spanned parsedDescription; if (Build.VERSION.SDK_INT >= 24) { parsedDescription = Html.fromHtml(descriptionText, 0); @@ -1037,7 +1037,7 @@ public class VideoDetailFragment extends BaseStateFragment }) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> { + .subscribe((@NonNull Spanned spanned) -> { videoDescriptionView.setText(spanned); videoDescriptionView.setVisibility(View.VISIBLE); })); diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java index 82b1d18ed..86b093e45 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java @@ -158,11 +158,10 @@ public abstract class BaseListInfoFragment .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doFinally(this::allowDownwardFocusScroll) - .subscribe((@io.reactivex.annotations.NonNull - ListExtractor.InfoItemsPage InfoItemsPage) -> { + .subscribe((@NonNull ListExtractor.InfoItemsPage InfoItemsPage) -> { isLoading.set(false); handleNextItems(InfoItemsPage); - }, (@io.reactivex.annotations.NonNull Throwable throwable) -> { + }, (@NonNull Throwable throwable) -> { isLoading.set(false); onError(throwable); }); diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/AbstractInfoPlayQueue.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/AbstractInfoPlayQueue.java index cde376f4f..3c15cd342 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/AbstractInfoPlayQueue.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/AbstractInfoPlayQueue.java @@ -2,6 +2,8 @@ package org.schabi.newpipe.player.playqueue; import android.util.Log; +import androidx.annotation.NonNull; + import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.ListInfo; @@ -13,7 +15,6 @@ import java.util.Collections; import java.util.List; import io.reactivex.SingleObserver; -import io.reactivex.annotations.NonNull; import io.reactivex.disposables.Disposable; abstract class AbstractInfoPlayQueue extends PlayQueue { diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueAdapter.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueAdapter.java index f8777597a..3b42f2745 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueAdapter.java @@ -6,6 +6,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import org.schabi.newpipe.R; @@ -20,7 +21,6 @@ import org.schabi.newpipe.util.FallbackViewHolder; import java.util.List; import io.reactivex.Observer; -import io.reactivex.annotations.NonNull; import io.reactivex.disposables.Disposable; /** From 7a30f4a7d2598549e9fcd5a8d75a04461c420609 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Sat, 30 May 2020 17:51:23 +0200 Subject: [PATCH 02/11] Remove calls to getNextStream() --- app/build.gradle | 2 +- .../fragments/detail/VideoDetailFragment.java | 4 -- .../list/videos/RelatedVideosFragment.java | 37 ++++++------------- .../newpipe/player/helper/PlayerHelper.java | 31 ++++++++-------- .../newpipe/util/RelatedStreamInfo.java | 16 -------- 5 files changed, 29 insertions(+), 61 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b77e6c986..94c7a2ce5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,7 +163,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.TeamNewPipe:NewPipeExtractor:a70cb0283ffc3bba2709815673a5a7940aab0a3a' + implementation 'com.github.wb9688:NewPipeExtractor:70136e6a099d610d1fe6340549aa0542f7f26f1e' implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751" implementation "org.jsoup:jsoup:1.13.1" diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index fff689930..b2f1709c2 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -365,10 +365,6 @@ public class VideoDetailFragment extends BaseStateFragment public void onSaveInstanceState(final Bundle outState) { super.onSaveInstanceState(outState); - // Check if the next video label and video is visible, - // if it is, include the two elements in the next check - int nextCount = currentInfo != null && currentInfo.getNextVideo() != null ? 2 : 0; - if (!isLoading.get() && currentInfo != null && isVisible()) { outState.putSerializable(INFO_KEY, currentInfo); } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java index 5d48afd15..d66433fa8 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java @@ -9,7 +9,6 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CompoundButton; import android.widget.Switch; import androidx.annotation.NonNull; @@ -40,9 +39,7 @@ public class RelatedVideosFragment extends BaseListInfoFragment PreferenceManager.getDefaultSharedPreferences(getContext()).edit() - .putBoolean(getString(R.string.auto_queue_key), b).apply(); - } - }); + .putBoolean(getString(R.string.auto_queue_key), b).apply()); return headerRootLayout; } else { return null; @@ -105,7 +92,7 @@ public class RelatedVideosFragment extends BaseListInfoFragment loadMoreItemsLogic() { - return Single.fromCallable(() -> ListExtractor.InfoItemsPage.emptyPage()); + return Single.fromCallable(ListExtractor.InfoItemsPage::emptyPage); } /*////////////////////////////////////////////////////////////////////////// @@ -216,8 +203,8 @@ public class RelatedVideosFragment extends BaseListInfoFragment - * This method detects and prevents cycle by naively checking if a - * candidate next video's url already exists in the existing items. + * This method detects and prevents cycles by naively checking + * if a candidate next video's url already exists in the existing items. *

*

- * To select the next video, {@link StreamInfo#getNextVideo()} is first - * checked. If it is nonnull and is not part of the existing items, then - * it will be used as the next video. Otherwise, an random item with - * non-repeating url will be selected from the {@link StreamInfo#getRelatedStreams()}. + * The first item in {@link StreamInfo#getRelatedStreams()} is checked first. + * If it is non-null and is not part of the existing items, it will be used as the next stream. + * Otherwise, a random item with non-repeating url will be selected + * from the {@link StreamInfo#getRelatedStreams()}. *

* * @param info currently playing stream @@ -152,27 +152,28 @@ public final class PlayerHelper { @Nullable public static PlayQueue autoQueueOf(@NonNull final StreamInfo info, @NonNull final List existingItems) { - Set urls = new HashSet<>(existingItems.size()); + final Set urls = new HashSet<>(existingItems.size()); for (final PlayQueueItem item : existingItems) { urls.add(item.getUrl()); } - final StreamInfoItem nextVideo = info.getNextVideo(); - if (nextVideo != null && !urls.contains(nextVideo.getUrl())) { - return getAutoQueuedSinglePlayQueue(nextVideo); - } - final List relatedItems = info.getRelatedStreams(); if (relatedItems == null) { return null; } - List autoQueueItems = new ArrayList<>(); + if (relatedItems.get(0) != null && relatedItems.get(0) instanceof StreamInfoItem + && !urls.contains(relatedItems.get(0).getUrl())) { + return getAutoQueuedSinglePlayQueue((StreamInfoItem) relatedItems.get(0)); + } + + final List autoQueueItems = new ArrayList<>(); for (final InfoItem item : info.getRelatedStreams()) { if (item instanceof StreamInfoItem && !urls.contains(item.getUrl())) { autoQueueItems.add((StreamInfoItem) item); } } + Collections.shuffle(autoQueueItems); return autoQueueItems.isEmpty() ? null : getAutoQueuedSinglePlayQueue(autoQueueItems.get(0)); diff --git a/app/src/main/java/org/schabi/newpipe/util/RelatedStreamInfo.java b/app/src/main/java/org/schabi/newpipe/util/RelatedStreamInfo.java index ce642da5e..fcd392d67 100644 --- a/app/src/main/java/org/schabi/newpipe/util/RelatedStreamInfo.java +++ b/app/src/main/java/org/schabi/newpipe/util/RelatedStreamInfo.java @@ -4,16 +4,12 @@ import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListInfo; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler; import org.schabi.newpipe.extractor.stream.StreamInfo; -import org.schabi.newpipe.extractor.stream.StreamInfoItem; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RelatedStreamInfo extends ListInfo { - - private StreamInfoItem nextStream; - public RelatedStreamInfo(final int serviceId, final ListLinkHandler listUrlIdHandler, final String name) { super(serviceId, listUrlIdHandler, name); @@ -25,20 +21,8 @@ public class RelatedStreamInfo extends ListInfo { RelatedStreamInfo relatedStreamInfo = new RelatedStreamInfo( info.getServiceId(), handler, info.getName()); List streams = new ArrayList<>(); - if (info.getNextVideo() != null) { - streams.add(info.getNextVideo()); - } streams.addAll(info.getRelatedStreams()); relatedStreamInfo.setRelatedItems(streams); - relatedStreamInfo.setNextStream(info.getNextVideo()); return relatedStreamInfo; } - - public StreamInfoItem getNextStream() { - return nextStream; - } - - public void setNextStream(final StreamInfoItem nextStream) { - this.nextStream = nextStream; - } } From 4274827dbe4a814f2aa4cb2ffc8c4168f5a322a3 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Wed, 15 Jul 2020 18:52:36 +0200 Subject: [PATCH 03/11] Use relatedItems instead of info.getRelatedStreams() --- app/build.gradle | 2 +- .../newpipe/fragments/list/videos/RelatedVideosFragment.java | 2 +- .../java/org/schabi/newpipe/player/helper/PlayerHelper.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 94c7a2ce5..229871f59 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,7 +163,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.wb9688:NewPipeExtractor:70136e6a099d610d1fe6340549aa0542f7f26f1e' + implementation 'com.github.wb9688:NewPipeExtractor:fc3a63fec56c110d7f434ef4377b3eeb2b8bbefe' implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751" implementation "org.jsoup:jsoup:1.13.1" diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java index d66433fa8..cf2101111 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/videos/RelatedVideosFragment.java @@ -83,7 +83,7 @@ public class RelatedVideosFragment extends BaseListInfoFragment PreferenceManager.getDefaultSharedPreferences(getContext()).edit() - .putBoolean(getString(R.string.auto_queue_key), b).apply()); + .putBoolean(getString(R.string.auto_queue_key), b).apply()); return headerRootLayout; } else { return null; diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java index da0e7403a..e63e56bf9 100644 --- a/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java +++ b/app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java @@ -168,7 +168,7 @@ public final class PlayerHelper { } final List autoQueueItems = new ArrayList<>(); - for (final InfoItem item : info.getRelatedStreams()) { + for (final InfoItem item : relatedItems) { if (item instanceof StreamInfoItem && !urls.contains(item.getUrl())) { autoQueueItems.add((StreamInfoItem) item); } From e028a63f304951efdee5843b58828d958d2e3e94 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Sat, 18 Jul 2020 10:01:44 +0200 Subject: [PATCH 04/11] Check for description == null --- .../schabi/newpipe/fragments/detail/VideoDetailFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index fff689930..4413a7d1e 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1018,7 +1018,7 @@ public class VideoDetailFragment extends BaseStateFragment } private void prepareDescription(final Description description) { - if (TextUtils.isEmpty(description.getContent()) + if (description == null || TextUtils.isEmpty(description.getContent()) || description == Description.emptyDescription) { return; } From 88c86e88b04839bd670cf2ef77ef1cb5e0ac6faf Mon Sep 17 00:00:00 2001 From: TobiGr Date: Mon, 20 Jul 2020 20:34:02 +0200 Subject: [PATCH 05/11] Update extractor version --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 229871f59..558fcc083 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,7 +163,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.wb9688:NewPipeExtractor:fc3a63fec56c110d7f434ef4377b3eeb2b8bbefe' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:df28a087de3d9ccb9eb180e001b1d8ca7f7cf544' implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751" implementation "org.jsoup:jsoup:1.13.1" From 6e73e0b395e71f9c30afb1e0d4390ac80b389170 Mon Sep 17 00:00:00 2001 From: Alexander-- Date: Wed, 22 Jul 2020 06:07:30 +0659 Subject: [PATCH 06/11] Use View.isShown() to avoid focus overlay glitches A View can become focused while being invisible, if it's parent is invisible. Use global draw listener and View.isShown() to catch such cases. --- .../newpipe/views/FocusOverlayView.java | 31 ++++++------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java b/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java index 1c868f66a..3d9dbc16a 100644 --- a/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java +++ b/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java @@ -74,44 +74,26 @@ public final class FocusOverlayView extends Drawable implements @Override public void onGlobalFocusChanged(final View oldFocus, final View newFocus) { - int l = focusRect.left; - int r = focusRect.right; - int t = focusRect.top; - int b = focusRect.bottom; - - if (newFocus != null && newFocus.getWidth() > 0 && newFocus.getHeight() > 0) { - newFocus.getGlobalVisibleRect(focusRect); - + if (newFocus != null) { focused = new WeakReference<>(newFocus); } else { - focusRect.setEmpty(); - focused = null; } - if (l != focusRect.left || r != focusRect.right - || t != focusRect.top || b != focusRect.bottom) { - invalidateSelf(); - } - - focused = new WeakReference<>(newFocus); + updateRect(); animator.sendEmptyMessageDelayed(0, 1000); } private void updateRect() { - if (focused == null) { - return; - } - - View focusedView = this.focused.get(); + View focusedView = focused == null ? null : this.focused.get(); int l = focusRect.left; int r = focusRect.right; int t = focusRect.top; int b = focusRect.bottom; - if (focusedView != null) { + if (focusedView != null && isShown(focusedView)) { focusedView.getGlobalVisibleRect(focusRect); } else { focusRect.setEmpty(); @@ -123,6 +105,10 @@ public final class FocusOverlayView extends Drawable implements } } + private boolean isShown(final View view) { + return view.getWidth() != 0 && view.getHeight() != 0 && view.isShown(); + } + @Override public void onDraw() { updateRect(); @@ -223,6 +209,7 @@ public final class FocusOverlayView extends Drawable implements observer.addOnGlobalFocusChangeListener(overlay); observer.addOnGlobalLayoutListener(overlay); observer.addOnTouchModeChangeListener(overlay); + observer.addOnDrawListener(overlay); overlay.setCurrentFocus(decor.getFocusedChild()); From 801267df189455ad43c8aeaf546fe3d3cdcafcd7 Mon Sep 17 00:00:00 2001 From: Alexander-- Date: Wed, 22 Jul 2020 07:57:04 -0400 Subject: [PATCH 07/11] Add @NonNull annotation to method argument Co-authored-by: Tobias Groza --- .../main/java/org/schabi/newpipe/views/FocusOverlayView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java b/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java index 3d9dbc16a..bd5ae10e8 100644 --- a/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java +++ b/app/src/main/java/org/schabi/newpipe/views/FocusOverlayView.java @@ -105,7 +105,7 @@ public final class FocusOverlayView extends Drawable implements } } - private boolean isShown(final View view) { + private boolean isShown(@NonNull final View view) { return view.getWidth() != 0 && view.getHeight() != 0 && view.isShown(); } From 185a5fad88786d6f6736e369e262c668dd36fad9 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Thu, 23 Jul 2020 13:24:48 +0200 Subject: [PATCH 08/11] Disable shrinkResources --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b77e6c986..c2083440b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,7 +50,7 @@ android { // TODO: update Gradle version release { minifyEnabled true - shrinkResources true + shrinkResources false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' archivesBaseName = 'app' } From b0685c153a0341da0f94c98d0fd12363d009e7b9 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sun, 26 Jul 2020 14:26:01 +0200 Subject: [PATCH 09/11] Update extractor version --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b97958edc..b5e4c9b83 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,7 +163,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.TeamNewPipe:NewPipeExtractor:df28a087de3d9ccb9eb180e001b1d8ca7f7cf544' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:b4481dfec21cf39aabbb791290d30130235aeabd' implementation "com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751" implementation "org.jsoup:jsoup:1.13.1" From 17edd1c3d4cc80d4c5f9077ba6cb910f8b1a0315 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sun, 26 Jul 2020 14:38:41 +0200 Subject: [PATCH 10/11] Add changelog --- fastlane/metadata/android/en-US/changelogs/952.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/952.txt diff --git a/fastlane/metadata/android/en-US/changelogs/952.txt b/fastlane/metadata/android/en-US/changelogs/952.txt new file mode 100644 index 000000000..c72818bc5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/952.txt @@ -0,0 +1,7 @@ +Improved +• Auto-play is available for all services (instead of only for YouTube) + +Fixed +• Fixed related streams by supporting YouTube's new continuations +• Fixed age restricted YouTube videos +• [Android TV] Fixed lingering focus highlight overlay \ No newline at end of file From f53a0f0d07b9d2ff6cd8a712eda806ecdd5bb587 Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sun, 26 Jul 2020 14:39:18 +0200 Subject: [PATCH 11/11] Update version to 0.19.7 (952) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b5e4c9b83..cfd1a5a00 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { resValue "string", "app_name", "NewPipe" minSdkVersion 19 targetSdkVersion 29 - versionCode 951 - versionName "0.19.6" + versionCode 952 + versionName "0.19.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true