11package cloud.mindbox.mobile_sdk.inapp.presentation.view
22
33import android.app.Activity
4- import android.content.Context
54import android.content.ContextWrapper
65import android.view.View
76import android.view.ViewGroup
@@ -44,7 +43,7 @@ internal class InAppPositionController {
4443 this .backgroundOriginalIndex = backgroundView?.let { parent.indexOfChild(it) } ? : - 1
4544 }
4645
47- entryView.context. findActivity().safeAs<FragmentActivity >()
46+ entryView.findActivity().safeAs<FragmentActivity >()
4847 ?.supportFragmentManager
4948 ?.registerFragmentLifecycleCallbacks(
5049 fragmentLifecycleCallbacks,
@@ -54,7 +53,7 @@ internal class InAppPositionController {
5453 }
5554
5655 fun stop (): Unit = loggingRunCatching {
57- originalParent?.context?. findActivity().safeAs<FragmentActivity >()
56+ originalParent?.findActivity().safeAs<FragmentActivity >()
5857 ?.supportFragmentManager
5958 ?.unregisterFragmentLifecycleCallbacks(
6059 fragmentLifecycleCallbacks
@@ -65,14 +64,14 @@ internal class InAppPositionController {
6564 }
6665
6766 private fun repositionInApp (): Unit = loggingRunCatching {
68- val activity = inAppView?.context?. findActivity().safeAs<FragmentActivity >() ? : return @loggingRunCatching
67+ val activity = inAppView?.findActivity().safeAs<FragmentActivity >() ? : return @loggingRunCatching
6968 val topDialog = findTopDialogFragment(activity.supportFragmentManager)
7069 val targetParent = topDialog?.dialog?.window?.decorView.safeAs<ViewGroup >()
7170 if (targetParent != null ) {
7271 if (inAppView?.parent != targetParent) {
7372 moveViewToTarget(backgroundView, targetParent)
7473 moveViewToTarget(inAppView, targetParent)
75- val currentFocus = ( originalParent?.context?. findActivity() )?.currentFocus
74+ val currentFocus = originalParent?.findActivity()?.currentFocus
7675 if (currentFocus != null && currentFocus != inAppView) {
7776 currentFocus.clearFocus()
7877 }
@@ -85,11 +84,10 @@ internal class InAppPositionController {
8584
8685 private fun repositionInappToOriginal () {
8786 val original = originalParent ? : return
88- if (inAppView?.parent != original) {
89- backgroundView?.let { moveViewToTarget(it, original, backgroundOriginalIndex) }
90- moveViewToTarget(inAppView, original, inAppOriginalIndex)
91- inAppView?.requestFocus()
92- }
87+ if (inAppView?.parent == original) return
88+ backgroundView?.let { moveViewToTarget(it, original, backgroundOriginalIndex) }
89+ moveViewToTarget(inAppView, original, inAppOriginalIndex)
90+ inAppView?.requestFocus()
9391 }
9492
9593 private fun moveViewToTarget (view : View ? , target : ViewGroup , index : Int = -1) {
@@ -106,8 +104,8 @@ internal class InAppPositionController {
106104 return fragmentManager.fragments.filterIsInstance<DialogFragment >().lastOrNull { it.isAdded }
107105 }
108106
109- private fun Context .findActivity (): Activity ? {
110- var context = this
107+ private fun View .findActivity (): Activity ? {
108+ var context = this .context
111109 while (context is ContextWrapper ) {
112110 if (context is Activity ) return context
113111 context = context.baseContext
0 commit comments