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.androidx.paging.compose)
implementation(libs.copydown) implementation(libs.copydown)
implementation(libs.dagger.hilt.android) implementation(libs.dagger.hilt.android)
implementation(libs.material.motion.core)
implementation(libs.material.motion.navigation)
implementation(libs.sqldelight.extensions.coroutines) implementation(libs.sqldelight.extensions.coroutines)
implementation(libs.kotlin.coroutines.core) implementation(libs.kotlin.coroutines.core)
implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json)

View file

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

View file

@ -5,6 +5,7 @@ coroutines = "1.6.1"
dagger = "2.41" dagger = "2.41"
hilt = "1.0.0" hilt = "1.0.0"
kotlin = "1.6.10" kotlin = "1.6.10"
material_motion = "0.8.4"
richtext = "0.11.0" richtext = "0.11.0"
serialization = "1.3.2" serialization = "1.3.2"
sqldelight = "2.0.0-alpha02" 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" } 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-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "serialization" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", 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" multiplatform-paging = "io.github.kuuuurt:multiplatform-paging:0.4.7"
napier = "io.github.aakira:napier:2.5.0" napier = "io.github.aakira:napier:2.5.0"
r8 = "com.android.tools:r8:3.3.28" r8 = "com.android.tools:r8:3.3.28"