From df11ee34d71de9279db3c722b8c9497745fb3f23 Mon Sep 17 00:00:00 2001 From: stslex Date: Fri, 13 Sep 2024 00:11:08 +0300 Subject: [PATCH 1/3] update libraries --- .../core/ui/components/base/PhotosBaseItem.kt | 15 ++++++++------- gradle/libs.versions.toml | 18 +++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt index 19f594fa..cbd0dc01 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.ripple.rememberRipple import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -47,9 +46,10 @@ fun PhotosBaseItem( .clip(RoundedCornerShape(Dimen.medium)) .clickable( onClick = onContainerClick, - role = Role.Button, - interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple() +// todo check this if needed +// role = Role.Button, +// interactionSource = remember { MutableInteractionSource() }, +// indication = rememberRipple() ), ) { ImageComponent( @@ -63,9 +63,10 @@ fun PhotosBaseItem( .fillMaxWidth() .clickable( onClick = onHeaderClick, - role = Role.Button, - interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple() +// todo check this if needed +// role = Role.Button, +// interactionSource = remember { MutableInteractionSource() }, +// indication = rememberRipple() ) .background( color = MaterialTheme.colorScheme.background.copy( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b25c4250..593ee4df 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] -androidDesugarJdkLibs = "2.0.4" -kotlin = "2.0.10" +androidDesugarJdkLibs = "2.1.2" +kotlin = "2.0.20" androidGradlePlugin = "8.5.2" -androidTools = "31.5.2" +androidTools = "31.6.0" minSdk = "28" targetSdk = "35" @@ -14,15 +14,15 @@ ktx = "1.13.1" material = "1.12.0" appcompat = "1.7.0" immutableCollection = "0.3.5" -lifecycle = "2.8.4" +lifecycle = "2.8.5" coroutines = "1.8.1" -composeBom = "2024.06.00" +composeBom = "2024.09.01" composeGradle = "1.6.11" -composeNavigation = "2.8.0-beta07" +composeNavigation = "2.8.0" accompanist = "0.30.0" coilCompose = "2.5.0" -composeActivity = "1.9.1" +composeActivity = "1.9.2" koin = "3.5.6" koinKsp = "1.3.1" @@ -38,9 +38,9 @@ robolectric = "4.9" androidxTest = "1.6.1" room = "2.6.1" -ksp = "2.0.10-1.0.24" +ksp = "2.0.20-1.0.24" mockito = "2.19.0" -vkompose = "0.5.5-k2" +vkompose = "0.6.1-k2" serialization = "1.7.1" paging = "3.3.2" slf4j = "1.7.9" From 294724ba03d08ce2d80380fd482b56934c0a6759 Mon Sep 17 00:00:00 2001 From: stslex Date: Fri, 13 Sep 2024 01:17:44 +0300 Subject: [PATCH 2/3] add shared element transition --- .../ui/components/NavigationHost.kt | 29 ++++--- .../csplashscreen/core/navigation/Screen.kt | 3 +- .../core/ui/base/DaggerViewModel.kt | 16 ++-- .../core/ui/components/base/PhotosBaseItem.kt | 83 +++++++++++-------- .../slex/csplashscreen/core/ui/theme/Theme.kt | 19 ++++- .../ui/presenter/SingleCollectionStore.kt | 17 +++- .../feature/home/ui/MainScreen.kt | 2 - .../feature/home/ui/presenter/HomeStore.kt | 8 +- .../ui/ImageDetailScreen.kt | 41 ++++++--- gradle/libs.versions.toml | 5 +- 10 files changed, 151 insertions(+), 72 deletions(-) diff --git a/app/src/main/java/st/slex/csplashscreen/ui/components/NavigationHost.kt b/app/src/main/java/st/slex/csplashscreen/ui/components/NavigationHost.kt index 4fc3b569..af949328 100644 --- a/app/src/main/java/st/slex/csplashscreen/ui/components/NavigationHost.kt +++ b/app/src/main/java/st/slex/csplashscreen/ui/components/NavigationHost.kt @@ -1,11 +1,15 @@ package st.slex.csplashscreen.ui.components +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.Stable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import st.slex.csplashscreen.core.navigation.Screen +import st.slex.csplashscreen.core.ui.theme.LocalSharedTransitionScope import st.slex.csplashscreen.feature.collection.navigation.singleCollectionGraph import st.slex.csplashscreen.feature.favourite.navigation.favouriteGraph import st.slex.csplashscreen.feature.feature_photo_detail.navigation.imageDetailGraph @@ -16,6 +20,7 @@ import st.slex.csplashscreen.feature.user.navigation.userGraph @Stable class NavHostControllerHolder(val navController: NavHostController) +@OptIn(ExperimentalSharedTransitionApi::class) @Composable @Stable fun NavigationHost( @@ -23,15 +28,19 @@ fun NavigationHost( modifier: Modifier = Modifier, startDestination: Screen = Screen.Home ) { - NavHost( - navController = holder.navController, - startDestination = startDestination - ) { - homeGraph(modifier) - userGraph(modifier) - imageDetailGraph(modifier) - searchPhotosGraph(modifier) - singleCollectionGraph(modifier) - favouriteGraph(modifier) + SharedTransitionLayout { + CompositionLocalProvider(LocalSharedTransitionScope provides this) { + NavHost( + navController = holder.navController, + startDestination = startDestination + ) { + homeGraph(modifier) + userGraph(modifier) + imageDetailGraph(modifier) + searchPhotosGraph(modifier) + singleCollectionGraph(modifier) + favouriteGraph(modifier) + } + } } } diff --git a/core/navigation/src/main/java/st/slex/csplashscreen/core/navigation/Screen.kt b/core/navigation/src/main/java/st/slex/csplashscreen/core/navigation/Screen.kt index b1f45593..7b898b76 100644 --- a/core/navigation/src/main/java/st/slex/csplashscreen/core/navigation/Screen.kt +++ b/core/navigation/src/main/java/st/slex/csplashscreen/core/navigation/Screen.kt @@ -1,5 +1,6 @@ package st.slex.csplashscreen.core.navigation +import androidx.compose.animation.AnimatedContentScope import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.navigation.NavGraphBuilder @@ -32,7 +33,7 @@ sealed interface Screen { } inline fun NavGraphBuilder.navScreen( - noinline content: @Composable (S) -> Unit + noinline content: @Composable AnimatedContentScope.(S) -> Unit ) { composable { backStackEntry -> content(backStackEntry.toRoute()) diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt index 2a91d585..0f48e0ff 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/base/DaggerViewModel.kt @@ -1,21 +1,25 @@ package st.slex.csplashscreen.core.ui.base import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.lifecycle.ViewModel import androidx.navigation.NavGraphBuilder import org.koin.androidx.compose.koinViewModel import st.slex.csplashscreen.core.navigation.Screen import st.slex.csplashscreen.core.navigation.navScreen +import st.slex.csplashscreen.core.ui.theme.LocalNavAnimatedVisibilityScope inline fun NavGraphBuilder.screen( noinline content: @Composable (Destination, S) -> Unit ) { navScreen { screen -> - val viewModel: S = koinViewModel( - key = screen.hashCode().toString() - ) - /*TODO maybe good point to make instance of state, event, action here - and then send in to Content Screen*/ - content(screen, viewModel) + CompositionLocalProvider(LocalNavAnimatedVisibilityScope provides this) { + val viewModel: S = koinViewModel( + key = screen.hashCode().toString() + ) + /*TODO maybe good point to make instance of state, event, action here + and then send in to Content Screen*/ + content(screen, viewModel) + } } } diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt index cbd0dc01..638fd183 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/components/base/PhotosBaseItem.kt @@ -1,8 +1,11 @@ package st.slex.csplashscreen.core.ui.components.base +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Row @@ -20,11 +23,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp import st.slex.csplashscreen.core.ui.components.ImageComponent import st.slex.csplashscreen.core.ui.theme.Dimen +import st.slex.csplashscreen.core.ui.theme.rememberNavAnimatedVisibilityScope +import st.slex.csplashscreen.core.ui.theme.rememberSharedTransitionScope +@OptIn(ExperimentalSharedTransitionApi::class) @Composable fun PhotosBaseItem( onContainerClick: () -> Unit, @@ -38,46 +43,58 @@ fun PhotosBaseItem( val itemHeight = remember { configuration.screenHeightDp.dp / 3 } - Box( - modifier = modifier - .fillMaxWidth() - .height(itemHeight) - .padding(bottom = Dimen.medium) - .clip(RoundedCornerShape(Dimen.medium)) - .clickable( - onClick = onContainerClick, + val sharedTransitionScope = rememberSharedTransitionScope() + with(sharedTransitionScope) { + Box( + modifier = Modifier + .sharedBounds( + sharedContentState = rememberSharedContentState(key = url), + animatedVisibilityScope = rememberNavAnimatedVisibilityScope(), + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds(), + ) + .then(modifier) + .fillMaxWidth() + .height(itemHeight) + .padding(bottom = Dimen.medium) + .clip(RoundedCornerShape(Dimen.medium)) + .clickable( + onClick = onContainerClick, // todo check this if needed // role = Role.Button, // interactionSource = remember { MutableInteractionSource() }, // indication = rememberRipple() - ), - ) { - ImageComponent( - modifier = Modifier.fillMaxSize(), - url = url, - contentScale = ContentScale.Crop - ) - Row( - modifier = Modifier - .align(Alignment.TopStart) - .fillMaxWidth() - .clickable( - onClick = onHeaderClick, + ), + ) { + ImageComponent( + modifier = Modifier + .fillMaxSize(), + url = url, + contentScale = ContentScale.Crop + ) + Row( + modifier = Modifier + .align(Alignment.TopStart) + .fillMaxWidth() + .clickable( + onClick = onHeaderClick, // todo check this if needed // role = Role.Button, // interactionSource = remember { MutableInteractionSource() }, // indication = rememberRipple() - ) - .background( - color = MaterialTheme.colorScheme.background.copy( - alpha = 0.7f ) - ) - .padding(Dimen.small), - verticalAlignment = Alignment.CenterVertically - ) { - headerContent() + .background( + color = MaterialTheme.colorScheme.background.copy( + alpha = 0.7f + ) + ) + .padding(Dimen.small), + verticalAlignment = Alignment.CenterVertically + ) { + headerContent() + } + content() } - content() } } \ No newline at end of file diff --git a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/theme/Theme.kt b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/theme/Theme.kt index bffa6121..7a9ef3c0 100644 --- a/core/ui/src/main/java/st/slex/csplashscreen/core/ui/theme/Theme.kt +++ b/core/ui/src/main/java/st/slex/csplashscreen/core/ui/theme/Theme.kt @@ -1,6 +1,9 @@ package st.slex.csplashscreen.core.ui.theme import android.os.Build +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionScope import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -9,6 +12,7 @@ import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.compositionLocalOf import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp @@ -184,4 +188,17 @@ fun AppTheme( content = content ) } -} \ No newline at end of file +} + +val LocalNavAnimatedVisibilityScope = compositionLocalOf { null } + +@OptIn(ExperimentalSharedTransitionApi::class) +val LocalSharedTransitionScope = compositionLocalOf { null } + +@OptIn(ExperimentalSharedTransitionApi::class) +@Composable +fun rememberSharedTransitionScope() = checkNotNull(LocalSharedTransitionScope.current) + +@Composable +fun rememberNavAnimatedVisibilityScope() = + checkNotNull(LocalNavAnimatedVisibilityScope.current) diff --git a/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/ui/presenter/SingleCollectionStore.kt b/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/ui/presenter/SingleCollectionStore.kt index 80220961..b65effd3 100644 --- a/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/ui/presenter/SingleCollectionStore.kt +++ b/feature/collection/src/main/java/st/slex/csplashscreen/feature/collection/ui/presenter/SingleCollectionStore.kt @@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map +import st.slex.csplashscreen.core.core.Logger import st.slex.csplashscreen.core.core.coroutine.AppDispatcher import st.slex.csplashscreen.core.core.coroutine.CoroutineExt.mapState import st.slex.csplashscreen.core.photos.ui.model.PhotoModel @@ -33,6 +34,7 @@ class SingleCollectionStore( ) { override fun sendAction(action: Action) { + Logger.d("action: $action", TAG) when (action) { is Action.Init -> actionInit(action) is Action.OnProfileClick -> actionProfileClick(action) @@ -46,7 +48,7 @@ class SingleCollectionStore( collectionId = action.collectionId ) } - allPhotos.launch { pagingData -> + getPhotos(action.collectionId).launch { pagingData -> updateState { currentState -> currentState.copy( photos = pagingData @@ -55,6 +57,18 @@ class SingleCollectionStore( } } + private fun getPhotos( + collectionId: String + ): StateFlow> = Pager(pagingConfig) { + PagingSource { page, pageSize -> + interactor.getPhotos( + uuid = collectionId, + page = page, + pageSize = pageSize + ).map { it.toPresentation() } + } + }.flow.state() + @OptIn(ExperimentalCoroutinesApi::class) private val allPhotos: StateFlow> get() = state @@ -90,5 +104,6 @@ class SingleCollectionStore( pageSize = 5, enablePlaceholders = false ) + private const val TAG = "SingleCollectionStore" } } \ No newline at end of file diff --git a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/MainScreen.kt b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/MainScreen.kt index 56d10761..7e694b3d 100644 --- a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/MainScreen.kt +++ b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/MainScreen.kt @@ -1,6 +1,5 @@ package st.slex.csplashscreen.feature.home.ui -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.pager.HorizontalPager @@ -17,7 +16,6 @@ import st.slex.csplashscreen.core.photos.ui.model.PhotoModel import st.slex.csplashscreen.feature.home.ui.component.tabs.MainScreenTabRow import st.slex.csplashscreen.feature.home.ui.component.tabs.MainScreenTabs -@OptIn(ExperimentalFoundationApi::class) @Composable fun MainScreen( navToProfile: (username: String) -> Unit, diff --git a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/presenter/HomeStore.kt b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/presenter/HomeStore.kt index 02b9d8de..a7fe7b7d 100644 --- a/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/presenter/HomeStore.kt +++ b/feature/home/src/main/java/st/slex/csplashscreen/feature/home/ui/presenter/HomeStore.kt @@ -28,12 +28,12 @@ class HomeStore( initialState = State.INIT ) { - private val collections: StateFlow> - get() = Pager(config = config) { PagingSource(interactor::getAllCollections) } + private val collections: StateFlow> = + Pager(config = config) { PagingSource(interactor::getAllCollections) } .state { collection -> collection.toPresentation() } - private val photos: StateFlow> - get() = Pager(config = config) { PagingSource(interactor::getAllPhotos) } + private val photos: StateFlow> = + Pager(config = config) { PagingSource(interactor::getAllPhotos) } .state { image -> image.toPresentation() } override fun sendAction(action: Action) { diff --git a/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/ui/ImageDetailScreen.kt b/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/ui/ImageDetailScreen.kt index e292baf3..bae231a1 100644 --- a/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/ui/ImageDetailScreen.kt +++ b/feature/photo-detail/src/main/java/st/slex/csplashscreen/feature/feature_photo_detail/ui/ImageDetailScreen.kt @@ -1,8 +1,12 @@ package st.slex.csplashscreen.feature.feature_photo_detail.ui import androidx.activity.compose.BackHandler +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.isSystemInDarkTheme @@ -38,6 +42,8 @@ import kotlinx.collections.immutable.toImmutableList import st.slex.csplashscreen.core.ui.components.ImageComponent import st.slex.csplashscreen.core.ui.components.UserImageHeadWithUserName import st.slex.csplashscreen.core.ui.theme.Dimen +import st.slex.csplashscreen.core.ui.theme.rememberNavAnimatedVisibilityScope +import st.slex.csplashscreen.core.ui.theme.rememberSharedTransitionScope import st.slex.csplashscreen.feature.feature_photo_detail.R import st.slex.csplashscreen.feature.feature_photo_detail.domain.model.ImageDetail import st.slex.csplashscreen.feature.feature_photo_detail.ui.components.DetailImageBodyTags @@ -181,6 +187,7 @@ private fun UserDetailImageHead( } } +@OptIn(ExperimentalSharedTransitionApi::class) @Composable private fun BindTopImageHead( url: String, @@ -203,16 +210,26 @@ private fun BindTopImageHead( label = "detailImageHeight" ) - ImageComponent( - modifier = Modifier - .fillMaxWidth() - .height(height) - .clipToBounds() - .background(MaterialTheme.colorScheme.background) - .clickable { - isExpanded = isExpanded.not() - }, - url = url, - contentScale = ContentScale.FillWidth - ) + val sharedTransitionScope = rememberSharedTransitionScope() + with(sharedTransitionScope) { + ImageComponent( + modifier = Modifier + .fillMaxWidth() + .height(height) + .clipToBounds() + .background(MaterialTheme.colorScheme.background) + .clickable { + isExpanded = isExpanded.not() + } + .sharedBounds( + sharedContentState = rememberSharedContentState(key = url), + animatedVisibilityScope = rememberNavAnimatedVisibilityScope(), + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() + ), + url = url, + contentScale = ContentScale.FillWidth + ) + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 593ee4df..4a710e26 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -69,15 +69,15 @@ androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", versi androidx-compose-activity = { group = "androidx.activity", name = "activity-compose", version.ref = "composeActivity" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-compose-animation = { group = "androidx.compose.animation", name = "animation" } androidx-compose-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } +androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } androidx-compose-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-compose-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } -androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } - coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilCompose" } androidx-compose-paging = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" } @@ -167,6 +167,7 @@ compose = [ "androidx-compose-tooling-preview", "androidx-compose-foundation", "androidx-compose-paging", + "androidx-compose-animation", "coil-compose" ] From cfc7e95a1f1ed0a933895e031e72db9ecf9cc251 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 10:54:17 +0000 Subject: [PATCH 3/3] update version --- fastlane/report.xml | 6 +++--- gradle/libs.versions.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fastlane/report.xml b/fastlane/report.xml index 4bbd74e2..34a9678a 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -5,17 +5,17 @@ - + - + - + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4a710e26..e5fd008c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,8 +7,8 @@ androidTools = "31.6.0" minSdk = "28" targetSdk = "35" compileSdk = "35" -versionName = "1.73" -versionCode = "20" +versionName = "1.74" +versionCode = "21" ktx = "1.13.1" material = "1.12.0"