From e1c46f0604efb4c4e86f919d9e0e10400348c28e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 5 Feb 2025 17:43:02 +0200 Subject: [PATCH] Fix closing welcome bottom sheet --- .../koitharu/kotatsu/core/nav/AppRouter.kt | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt index 4c81e9efb..b31b7708e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/nav/AppRouter.kt @@ -428,10 +428,16 @@ class AppRouter private constructor( } fun closeWelcomeSheet(): Boolean { - val fm = fragment?.parentFragmentManager ?: activity?.supportFragmentManager ?: return false - val sheet = fm.findFragmentByTag(fragmentTag()) as? WelcomeSheet ?: return false - sheet.dismissAllowingStateLoss() - return true + val tag = fragmentTag() + val sheet = fragment?.findFragmentByTagRecursive(tag) + ?: activity?.supportFragmentManager?.findFragmentByTag(tag) + ?: return false + return if (sheet is WelcomeSheet) { + sheet.dismissAllowingStateLoss() + true + } else { + false + } } /** Private utils **/ @@ -478,6 +484,18 @@ class AppRouter private constructor( ) } + private fun Fragment.findFragmentByTagRecursive(fragmentTag: String): Fragment? { + childFragmentManager.findFragmentByTag(fragmentTag)?.let { + return it + } + val parent = parentFragment + return if (parent != null) { + parent.findFragmentByTagRecursive(fragmentTag) + } else { + parentFragmentManager.findFragmentByTag(fragmentTag) + } + } + companion object { fun from(view: View): AppRouter? = runCatching {