app: update to compose 1.2.0-rc03 and kotlin 1.7.0
authorDa Risk <da_risk@geekorum.com>
Fri, 08 Jul 2022 18:55:34 -0400
changeset 895 4419dced6b92
parent 894 53dec2220f3c
child 896 c236a78aaf37
app: update to compose 1.2.0-rc03 and kotlin 1.7.0
app/build.gradle.kts
app/src/main/java/com/geekorum/ttrss/articles_list/ArticleCardsList.kt
app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt
app/src/main/java/com/geekorum/ttrss/articles_list/FabPresenter.kt
app/src/main/java/com/geekorum/ttrss/articles_list/magazine/MagazineFragment.kt
build.gradle.kts
buildSrc/build.gradle.kts
gradle.properties
--- a/app/build.gradle.kts	Fri Jul 08 18:33:26 2022 -0400
+++ b/app/build.gradle.kts	Fri Jul 08 18:55:34 2022 -0400
@@ -40,7 +40,7 @@
     id("dagger.hilt.android.plugin")
 }
 
-val composeVersion = "1.1.1"
+val composeVersion = "1.2.0-rc03"
 
 android {
     val compileSdkInt: Int by rootProject.extra
@@ -88,7 +88,7 @@
     }
 
     composeOptions {
-        kotlinCompilerExtensionVersion = composeVersion
+        kotlinCompilerExtensionVersion = "1.2.0"
     }
 
     flavorDimensions += "distribution"
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleCardsList.kt	Fri Jul 08 18:33:26 2022 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleCardsList.kt	Fri Jul 08 18:55:34 2022 -0400
@@ -273,7 +273,6 @@
     }
 }
 
-@OptIn(ExperimentalMaterialApi::class)
 @Composable
 private fun ArticleCardList() {
     val articles = Array(25) {
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt	Fri Jul 08 18:33:26 2022 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt	Fri Jul 08 18:55:34 2022 -0400
@@ -28,10 +28,13 @@
 import android.view.ViewGroup
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.material.Surface
+import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.input.nestedscroll.nestedScroll
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.ViewCompositionStrategy
+import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
 import androidx.core.app.ShareCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
@@ -66,6 +69,7 @@
         }
     }
 
+    @OptIn(ExperimentalComposeUiApi::class)
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?,
         savedInstanceState: Bundle?
@@ -78,7 +82,9 @@
                         val appBarHeightDp = with(LocalDensity.current) {
                             activityViewModel.appBarHeight.toDp()
                         }
-                        Surface(Modifier.fillMaxSize()) {
+
+                        val nestedScrollInterop = rememberNestedScrollInteropConnection()
+                        Surface(Modifier.fillMaxSize().nestedScroll(nestedScrollInterop)) {
                             ArticleCardList(
                                 viewModel = articlesViewModel,
                                 onCardClick = activityViewModel::displayArticle,
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/FabPresenter.kt	Fri Jul 08 18:33:26 2022 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/FabPresenter.kt	Fri Jul 08 18:55:34 2022 -0400
@@ -20,8 +20,10 @@
  */
 package com.geekorum.ttrss.articles_list
 
+import androidx.coordinatorlayout.widget.CoordinatorLayout
 import androidx.navigation.NavController
 import androidx.navigation.dynamicfeatures.DynamicGraphNavigator
+import com.geekorum.geekdroid.views.behaviors.ScrollAwareFABBehavior
 import com.geekorum.ttrss.R
 import com.google.android.material.floatingactionbutton.FloatingActionButton
 
@@ -33,6 +35,9 @@
     private val navController: NavController
 ){
 
+    val fabBehavior: ScrollAwareFABBehavior? =
+        (fab.layoutParams as? CoordinatorLayout.LayoutParams)?.behavior as? ScrollAwareFABBehavior
+
     init {
         setup()
     }
@@ -41,14 +46,21 @@
         navController.addOnDestinationChangedListener { controller, destination, _ ->
             val progressDestinationId = (controller.graph as? DynamicGraphNavigator.DynamicNavGraph)?.progressDestination ?: 0
             when (destination.id) {
-                progressDestinationId -> {
+                progressDestinationId,
+                R.id.articlesSearchFragment -> {
+                    setFabBehavior(null)
                     fab.hide()
                 }
-                R.id.articlesSearchFragment -> {
-                    //TODO hide fab. but fab has scrollaware behavior that get it shown back when scrolling
+                else -> {
+                    setFabBehavior(fabBehavior)
+                    fab.show()
                 }
-                else -> fab.show()
             }
         }
     }
+
+    private fun setFabBehavior(behavior: ScrollAwareFABBehavior?) {
+        (fab.layoutParams as? CoordinatorLayout.LayoutParams)?.behavior = behavior
+    }
+
 }
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/magazine/MagazineFragment.kt	Fri Jul 08 18:33:26 2022 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/magazine/MagazineFragment.kt	Fri Jul 08 18:55:34 2022 -0400
@@ -30,6 +30,7 @@
 import androidx.compose.animation.core.MutableTransitionState
 import androidx.compose.animation.fadeIn
 import androidx.compose.animation.slideInVertically
+import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.lazy.LazyColumn
@@ -38,10 +39,13 @@
 import androidx.compose.runtime.*
 import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.ui.Alignment
+import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.input.nestedscroll.nestedScroll
 import androidx.compose.ui.platform.ComposeView
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.ViewCompositionStrategy
+import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.core.app.ShareCompat
@@ -68,6 +72,7 @@
     private val activityViewModel: ActivityViewModel by activityViewModels()
     private val magazineViewModel: MagazineViewModel by viewModels()
 
+    @OptIn(ExperimentalComposeUiApi::class)
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
         return ComposeView(requireContext()).apply {
             setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
@@ -77,7 +82,9 @@
                         val appBarHeightDp = with(LocalDensity.current) {
                             activityViewModel.appBarHeight.toDp()
                         }
-                        Surface(Modifier.fillMaxSize()) {
+
+                        val nestedScrollInterop = rememberNestedScrollInteropConnection()
+                        Surface(Modifier.fillMaxSize().nestedScroll(nestedScrollInterop)) {
                             ArticlesMagazine(
                                 viewModel = magazineViewModel,
                                 onCardClick = activityViewModel::displayArticle,
@@ -120,6 +127,7 @@
 }
 
 
+@OptIn(ExperimentalFoundationApi::class)
 @Composable
 private fun ArticlesMagazine(
     viewModel: MagazineViewModel,
@@ -189,7 +197,9 @@
                 }
 
                 AnimatedVisibility(visibilityState,
-                    enter = fadeIn() + slideInVertically { it / 3 }) {
+                    enter = fadeIn() + slideInVertically { it / 3 },
+                    modifier = Modifier.animateItemPlacement()
+                ) {
                     if (articleWithFeed != null) {
                         ArticleCard(
                             articleWithFeed = articleWithFeed,
@@ -217,8 +227,6 @@
     val feedNameOrAuthor = feed.displayTitle.takeIf { it.isNotBlank() } ?: feed.title
 
     ArticleCard(
-//                TODO add this on beta03
-//                modifier = Modifier.animateItemPlacement(),
         title = article.title,
         flavorImageUrl = article.flavorImageUri,
         excerpt = article.contentExcerpt,
--- a/build.gradle.kts	Fri Jul 08 18:33:26 2022 -0400
+++ b/build.gradle.kts	Fri Jul 08 18:55:34 2022 -0400
@@ -74,7 +74,7 @@
         kotlinOptions {
             jvmTarget = "1.8"
             freeCompilerArgs = listOf(
-                "-Xjvm-default=all", "-Xopt-in=kotlin.RequiresOptIn")
+                "-Xjvm-default=all", "-opt-in=kotlin.RequiresOptIn")
         }
     }
 
--- a/buildSrc/build.gradle.kts	Fri Jul 08 18:33:26 2022 -0400
+++ b/buildSrc/build.gradle.kts	Fri Jul 08 18:55:34 2022 -0400
@@ -35,7 +35,7 @@
     implementation("com.github.triplet.gradle:play-publisher:3.7.0")
     implementation("com.geekorum.gradle.avdl:flydroid:0.0.3")
     // need to be added to work with compose  https://issuetracker.google.com/issues/195342732
-    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
+    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0")
 
     // fix https://github.com/google/dagger/issues/3068
     implementation("com.squareup:javapoet:1.13.0")
--- a/gradle.properties	Fri Jul 08 18:33:26 2022 -0400
+++ b/gradle.properties	Fri Jul 08 18:55:34 2022 -0400
@@ -18,7 +18,7 @@
 kapt.include.compile.classpath=false
 
 # plugin dependencies version
-kotlinVersion=1.6.10
+kotlinVersion=1.7.0
 androidxNavigationVersion=2.3.5
 crashlyticsVersion=2.5.2
 googleServicesVersion=4.3.5