From 40815086adb1f545c8c7cc76bb40e8a417130863 Mon Sep 17 00:00:00 2001 From: plasticanu <111103032+plasticanu@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:22:32 +1100 Subject: [PATCH] Fix crash when the user clicks download then quits the history fragment (#9143) * Fix crash when the user clicks download then quits the history fragment * add a nonnull annotation to the context parameter in the DownloadDialog constructor. * Revert "Merge branch 'TeamNewPipe:dev' into fix/HistoryFragmentDownloadDialogCrash" This reverts commit 968d7a7603bda0994beaec6d4aaf28a193841792. * Revert "Merge branch 'TeamNewPipe:dev' into fix/HistoryFragmentDownloadDialogCrash" This reverts commit 968d7a7603bda0994beaec6d4aaf28a193841792, reversing changes made to 52963ba37dd3a390425fb2f962476b604c3e2a83. Reverted merge jlhzxc * update project to the latest dev branch * Revert "update project to the latest dev branch" This reverts commit fb3ed83d51af3149370343f9675770a19fe5ebb3. revert changes to build files * Revert "Revert "Merge branch 'TeamNewPipe:dev' into fix/HistoryFragmentDownloadDialogCrash"" This reverts commit f9e1835e71ae089dec19eb2b6814f128c8eda44a. --- .../org/schabi/newpipe/download/DownloadDialog.java | 2 +- .../info_list/dialog/StreamDialogDefaultEntry.java | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java index 42b2c695c..2975fe43a 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java @@ -159,7 +159,7 @@ public class DownloadDialog extends DialogFragment * @param context the context to use just to obtain preferences and strings (will not be stored) * @param info the info from which to obtain downloadable streams and other info (e.g. title) */ - public DownloadDialog(final Context context, @NonNull final StreamInfo info) { + public DownloadDialog(@NonNull final Context context, @NonNull final StreamInfo info) { this.currentInfo = info; // TODO: Adapt this code when the downloader support other types of stream deliveries diff --git a/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java b/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java index 1265e9767..c67880d0e 100644 --- a/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java +++ b/app/src/main/java/org/schabi/newpipe/info_list/dialog/StreamDialogDefaultEntry.java @@ -112,12 +112,19 @@ public enum StreamDialogDefaultEntry { ShareUtils.shareText(fragment.requireContext(), item.getName(), item.getUrl(), item.getThumbnailUrl())), + /** + * Opens a {@link DownloadDialog} after fetching some stream info. + * If the user quits the current fragment, it will not open a DownloadDialog. + */ DOWNLOAD(R.string.download, (fragment, item) -> fetchStreamInfoAndSaveToDatabase(fragment.requireContext(), item.getServiceId(), item.getUrl(), info -> { - final DownloadDialog downloadDialog = - new DownloadDialog(fragment.requireContext(), info); - downloadDialog.show(fragment.getChildFragmentManager(), "downloadDialog"); + if (fragment.getContext() != null) { + final DownloadDialog downloadDialog = + new DownloadDialog(fragment.requireContext(), info); + downloadDialog.show(fragment.getChildFragmentManager(), + "downloadDialog"); + } }) ),