diff --git a/app/src/main/java/org/schabi/newpipe/ktx/Context.kt b/app/src/main/java/org/schabi/newpipe/ktx/Context.kt index f2f4e9613..69f6b7358 100644 --- a/app/src/main/java/org/schabi/newpipe/ktx/Context.kt +++ b/app/src/main/java/org/schabi/newpipe/ktx/Context.kt @@ -3,6 +3,7 @@ package org.schabi.newpipe.ktx import android.content.Context import android.content.ContextWrapper import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager tailrec fun Context.findFragmentActivity(): FragmentActivity { return when (this) { @@ -11,3 +12,7 @@ tailrec fun Context.findFragmentActivity(): FragmentActivity { else -> throw IllegalStateException("Unable to find FragmentActivity") } } + +fun Context.findFragmentManager(): FragmentManager { + return findFragmentActivity().supportFragmentManager +} diff --git a/app/src/main/java/org/schabi/newpipe/ui/components/items/ItemList.kt b/app/src/main/java/org/schabi/newpipe/ui/components/items/ItemList.kt index 977be3b53..5af58aa17 100644 --- a/app/src/main/java/org/schabi/newpipe/ui/components/items/ItemList.kt +++ b/app/src/main/java/org/schabi/newpipe/ui/components/items/ItemList.kt @@ -18,7 +18,7 @@ import org.schabi.newpipe.extractor.InfoItem import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem import org.schabi.newpipe.extractor.stream.StreamInfoItem import org.schabi.newpipe.info_list.ItemViewMode -import org.schabi.newpipe.ktx.findFragmentActivity +import org.schabi.newpipe.ktx.findFragmentManager import org.schabi.newpipe.player.playqueue.PlayQueue import org.schabi.newpipe.ui.components.common.LazyColumnThemedScrollbar import org.schabi.newpipe.ui.components.items.playlist.PlaylistListItem @@ -41,11 +41,10 @@ fun ItemList( val context = LocalContext.current val onClick = remember { { item: InfoItem -> - val fragmentManager = context.findFragmentActivity().supportFragmentManager if (item is StreamInfoItem) { NavigationHelper.openVideoDetailFragment( context, - fragmentManager, + context.findFragmentManager(), item.serviceId, item.url, item.name, @@ -54,7 +53,7 @@ fun ItemList( ) } else if (item is PlaylistInfoItem) { NavigationHelper.openPlaylistFragment( - fragmentManager, + context.findFragmentManager(), item.serviceId, item.url, item.name diff --git a/app/src/main/java/org/schabi/newpipe/ui/components/menu/LongPressAction.kt b/app/src/main/java/org/schabi/newpipe/ui/components/menu/LongPressAction.kt index c3455e576..5bf536fa6 100644 --- a/app/src/main/java/org/schabi/newpipe/ui/components/menu/LongPressAction.kt +++ b/app/src/main/java/org/schabi/newpipe/ui/components/menu/LongPressAction.kt @@ -50,7 +50,7 @@ import org.schabi.newpipe.extractor.channel.ChannelInfoItem import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem import org.schabi.newpipe.extractor.stream.StreamInfoItem import org.schabi.newpipe.ktx.findFragmentActivity -import org.schabi.newpipe.local.dialog.PlaylistAppendDialog +import org.schabi.newpipe.ktx.findFragmentManager import org.schabi.newpipe.local.dialog.PlaylistDialog import org.schabi.newpipe.local.history.HistoryRecordManager import org.schabi.newpipe.local.playlist.LocalPlaylistManager @@ -240,9 +240,7 @@ data class LongPressAction( addAction(Type.Download) { context -> val info = fetchStreamInfoAndSaveToDatabase(context, item.serviceId, item.url) val downloadDialog = DownloadDialog(context, info) - val fragmentManager = context.findFragmentActivity() - .supportFragmentManager - downloadDialog.show(fragmentManager, "downloadDialog") + downloadDialog.show(context.findFragmentManager(), "downloadDialog") } addAction(Type.AddToPlaylist) { context -> LocalPlaylistManager(NewPipeDatabase.getInstance(context)) @@ -251,11 +249,7 @@ data class LongPressAction( PlaylistDialog.createCorrespondingDialog(context, listOf(StreamEntity(item))) .awaitSingle() } - val tag = if (dialog is PlaylistAppendDialog) "append" else "create" - dialog.show( - context.findFragmentActivity().supportFragmentManager, - "StreamDialogEntry@${tag}_playlist" - ) + dialog.show(context.findFragmentManager(), "addToPlaylistDialog") } addAction(Type.ShowChannelDetails) { context -> val uploaderUrl = fetchUploaderUrlIfSparse( diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index 0a7906b8d..f89148b38 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -493,8 +493,7 @@ public final class NavigationHelper { return; } try { - final var activity = ContextKt.findFragmentActivity(context); - openChannelFragment(activity.getSupportFragmentManager(), comment.getServiceId(), + openChannelFragment(ContextKt.findFragmentManager(context), comment.getServiceId(), comment.getUploaderUrl(), comment.getUploaderName()); } catch (final Exception e) { ErrorUtil.showUiErrorSnackbar(context, "Opening channel fragment", e);