app: InAppUpdatePresenter got less coupling with ArticlesListActivity
authorDa Risk <da_risk@geekorum.com>
Sat, 22 May 2021 01:37:03 -0400
changeset 797 0247078b1664
parent 796 6102cd19502b
child 798 69da2335bb24
app: InAppUpdatePresenter got less coupling with ArticlesListActivity
app/src/main/java/com/geekorum/ttrss/articles_list/InAppUpdatePresenter.kt
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/InAppUpdatePresenter.kt	Sat May 22 01:23:38 2021 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/InAppUpdatePresenter.kt	Sat May 22 01:37:03 2021 -0400
@@ -34,6 +34,7 @@
 import androidx.core.graphics.drawable.IconCompat
 import androidx.core.view.doOnNextLayout
 import androidx.core.view.updatePadding
+import androidx.lifecycle.LifecycleOwner
 import com.geekorum.geekdroid.views.banners.BannerContainer
 import com.geekorum.geekdroid.views.banners.BannerSpec
 import com.geekorum.geekdroid.views.banners.buildBanner
@@ -51,7 +52,7 @@
  */
 class InAppUpdatePresenter(
     private val bannerContainer: BannerContainer,
-    private val activity: ArticleListActivity,
+    private val lifecyleOwner: LifecycleOwner,
     private val inAppUpdateViewModel: InAppUpdateViewModel,
     activityResultRegistry: ActivityResultRegistry,
 ) {
@@ -84,16 +85,17 @@
         registry: ActivityResultRegistry,
         callback: ActivityResultCallback<O>): ActivityResultLauncher<I> {
         return registry.register(
-            "in_app_update_presenter", activity, contract, callback)
+            "in_app_update_presenter", lifecyleOwner, contract, callback)
     }
 
     private fun setUpViewModels() {
-        inAppUpdateViewModel.isUpdateAvailable.observe(activity) {
+        inAppUpdateViewModel.isUpdateAvailable.observe(lifecyleOwner) {
             if (it) {
                 Timber.d("Update available")
-                val banner = buildBanner(activity) {
+                val context = bannerContainer.context
+                val banner = buildBanner(context) {
                     messageId = R.string.banner_update_msg
-                    icon = IconCompat.createWithResource(activity,
+                    icon = IconCompat.createWithResource(context,
                         R.mipmap.ic_launcher)
                     setPositiveButton(R.string.banner_update_btn) {
                         inAppUpdateViewModel.startUpdateFlow(intentSenderForResultStarter,
@@ -109,12 +111,13 @@
             }
         }
 
-        inAppUpdateViewModel.isUpdateReadyToInstall.observe(activity) {
+        inAppUpdateViewModel.isUpdateReadyToInstall.observe(lifecyleOwner) {
             if (it) {
                 Timber.d("Update ready to install")
-                val banner = buildBanner(activity) {
+                val context = bannerContainer.context
+                val banner = buildBanner(context) {
                     message = "Update ready to install"
-                    icon = IconCompat.createWithResource(activity,
+                    icon = IconCompat.createWithResource(context,
                         R.mipmap.ic_launcher)
                     setPositiveButton("Restart") {
                         hideBanner()
@@ -146,9 +149,9 @@
             }
         })
 
-        (bannerContainer.parent as? View)?.doOnNextLayout {
-            val fragmentContainerView = activity.findViewById<View>(R.id.middle_pane_layout)
-            fragmentContainerView.updatePadding(bottom = bannerContainer.height)
+        (bannerContainer.parent as? View)?.doOnNextLayout { parent ->
+            val fragmentContainerView = parent.findViewById<View>(R.id.middle_pane_layout)
+            fragmentContainerView?.updatePadding(bottom = bannerContainer.height)
         }
     }
 
@@ -156,7 +159,8 @@
         val behavior = BottomSheetBehavior.from(bannerContainer)
         behavior.isHideable = true
         behavior.state = BottomSheetBehavior.STATE_HIDDEN
-        val fragmentContainerView = activity.findViewById<View>(R.id.middle_pane_layout)
+        val parent = bannerContainer.parent as View?
+        val fragmentContainerView = parent?.findViewById<View>(R.id.middle_pane_layout)
         fragmentContainerView?.updatePadding(bottom = 0)
     }
 }