mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 10:37:05 +05:30
android: switch to material-motion-compose
This commit is contained in:
parent
9b9e924475
commit
3e028e8852
3 changed files with 20 additions and 6 deletions
|
@ -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)
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue