android: switch to material-motion-compose

This commit is contained in:
Harsh Shandilya 2022-05-03 23:15:56 +05:30
parent 9b9e924475
commit 3e028e8852
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 20 additions and 6 deletions

View file

@ -37,6 +37,8 @@ dependencies {
implementation(libs.androidx.paging.compose)
implementation(libs.copydown)
implementation(libs.dagger.hilt.android)
implementation(libs.material.motion.core)
implementation(libs.material.motion.navigation)
implementation(libs.sqldelight.extensions.coroutines)
implementation(libs.kotlin.coroutines.core)
implementation(libs.kotlinx.serialization.json)

View file

@ -1,5 +1,6 @@
package dev.msfjarvis.claw.android.ui
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
@ -25,9 +26,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import androidx.navigation.navDeepLink
import androidx.paging.compose.collectAsLazyPagingItems
@ -48,8 +46,15 @@ import dev.msfjarvis.claw.common.res.ClawIcons
import dev.msfjarvis.claw.common.theme.LobstersTheme
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
import kotlinx.coroutines.launch
import soup.compose.material.motion.materialElevationScaleIn
import soup.compose.material.motion.materialElevationScaleOut
import soup.compose.material.motion.navigation.MaterialMotionNavHost
import soup.compose.material.motion.navigation.composable
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController
import soup.compose.material.motion.translateXIn
import soup.compose.material.motion.translateXOut
@OptIn(ExperimentalMaterial3Api::class)
@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class)
@Composable
fun LobstersApp(
viewModel: ClawViewModel = viewModel(),
@ -61,7 +66,7 @@ fun LobstersApp(
val hottestListState = rememberLazyListState()
val newestListState = rememberLazyListState()
val savedListState = rememberLazyListState()
val navController = rememberNavController()
val navController = rememberMaterialMotionNavController()
val coroutineScope = rememberCoroutineScope()
val postActions = rememberPostActions(urlLauncher, navController, viewModel)
val currentDestination by currentNavigationDestination(navController)
@ -142,7 +147,7 @@ fun LobstersApp(
)
},
) { paddingValues ->
NavHost(
MaterialMotionNavHost(
navController,
startDestination = Destinations.startDestination.getRoute(),
) {
@ -193,6 +198,10 @@ fun LobstersApp(
navDeepLink { uriPattern = "$uri/s/{postId}/.*" },
navDeepLink { uriPattern = "$uri/s/{postId}" },
),
enterMotionSpec = { translateXIn { it } },
exitMotionSpec = { materialElevationScaleOut() },
popEnterMotionSpec = { materialElevationScaleIn() },
popExitMotionSpec = { translateXOut { it } },
) { backStackEntry ->
val postId = requireNotNull(backStackEntry.arguments?.getString("postId"))
setWebUri("https://lobste.rs/s/$postId")

View file

@ -5,6 +5,7 @@ coroutines = "1.6.1"
dagger = "2.41"
hilt = "1.0.0"
kotlin = "1.6.10"
material_motion = "0.8.4"
richtext = "0.11.0"
serialization = "1.3.2"
sqldelight = "2.0.0-alpha02"
@ -45,6 +46,8 @@ kamel-image = "com.alialbaali.kamel:kamel-image:0.3.0"
kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "serialization" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }
material_motion-core = { module = "io.github.fornewid:material-motion-compose-core", version.ref = "material_motion" }
material_motion-navigation = { module = "io.github.fornewid:material-motion-compose-navigation", version.ref = "material_motion" }
multiplatform-paging = "io.github.kuuuurt:multiplatform-paging:0.4.7"
napier = "io.github.aakira:napier:2.5.0"
r8 = "com.android.tools:r8:3.3.28"