From 98c55661e86672f1c8993c5c3c5e98832a931db9 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 22 Aug 2023 11:05:17 -0400 Subject: [PATCH] Migrates to Compose 1.5.0 --- app/build.gradle | 2 +- .../amethyst/ui/actions/NewPostView.kt | 2 +- .../amethyst/ui/components/SlidingCarousel.kt | 8 ++-- .../ui/components/ZoomableContentView.kt | 12 ++--- .../amethyst/ui/note/ChannelCardCompose.kt | 2 +- .../amethyst/ui/note/ReactionsRow.kt | 8 ++-- .../ui/screen/RememberForeverStates.kt | 25 ++++++---- .../ui/screen/loggedIn/BookmarkListScreen.kt | 4 +- .../ui/screen/loggedIn/ChatroomListScreen.kt | 3 +- .../ui/screen/loggedIn/DiscoverScreen.kt | 24 +++++----- .../ui/screen/loggedIn/HiddenUsersScreen.kt | 4 +- .../amethyst/ui/screen/loggedIn/HomeScreen.kt | 4 +- .../ui/screen/loggedIn/ProfileScreen.kt | 10 ++-- .../ui/screen/loggedIn/VideoScreen.kt | 46 ++++++++++++------- build.gradle | 3 +- quartz/build.gradle | 2 +- 16 files changed, 85 insertions(+), 74 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bde0a2df4..229e270ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -88,7 +88,7 @@ android { dependencies { implementation project(path: ':quartz') - implementation 'androidx.core:core-ktx:1.10.1' + implementation "androidx.core:core-ktx:$core_ktx_version" implementation 'androidx.activity:activity-compose:1.7.2' implementation "androidx.compose.ui:ui:$compose_ui_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_ui_version" diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt index b7e818af8..346e71377 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt @@ -886,7 +886,7 @@ fun DisplayLocationInTitle(geohash: String) { fun Notifying(baseMentions: ImmutableList?, onClick: (User) -> Unit) { val mentions = baseMentions?.toSet() - FlowRow(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(horizontal = 10.dp)) { + FlowRow(verticalArrangement = Arrangement.Center, modifier = Modifier.padding(horizontal = 10.dp)) { if (!mentions.isNullOrEmpty()) { Text( stringResource(R.string.reply_notify), diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/SlidingCarousel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/SlidingCarousel.kt index bd88d47d2..38f1f4f88 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/SlidingCarousel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/SlidingCarousel.kt @@ -18,7 +18,6 @@ import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -30,9 +29,8 @@ import com.vitorpamplona.amethyst.ui.theme.placeholderText @OptIn(ExperimentalFoundationApi::class) @Composable fun SlidingCarousel( + pagerState: PagerState, modifier: Modifier = Modifier, - pagerState: PagerState = remember { PagerState() }, - itemsCount: Int, itemContent: @Composable (index: Int) -> Unit ) { val isDragged by pagerState.interactionSource.collectIsDraggedAsState() @@ -40,7 +38,7 @@ fun SlidingCarousel( Box( modifier = modifier.fillMaxWidth() ) { - HorizontalPager(pageCount = itemsCount, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> itemContent(page) } @@ -55,7 +53,7 @@ fun SlidingCarousel( ) { DotsIndicator( modifier = Modifier.padding(horizontal = 8.dp, vertical = 6.dp), - totalDots = itemsCount, + totalDots = pagerState.pageCount, selectedIndex = if (isDragged) pagerState.currentPage else pagerState.targetPage, dotSize = 8.dp ) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 9e11efe18..373f24214 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -637,7 +637,7 @@ fun ZoomableImageDialog( ) { Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.TopCenter) { - val pagerState: PagerState = rememberPagerState() + val pagerState: PagerState = rememberPagerState() { allImages.size } LaunchedEffect(key1 = pagerState, key2 = imageUrl) { val page = allImages.indexOf(imageUrl) @@ -648,12 +648,10 @@ fun ZoomableImageDialog( if (allImages.size > 1) { SlidingCarousel( - pagerState = pagerState, - itemsCount = allImages.size, - itemContent = { index -> - RenderImageOrVideo(allImages[index], false, accountViewModel) - } - ) + pagerState = pagerState + ) { index -> + RenderImageOrVideo(allImages[index], false, accountViewModel) + } } else { RenderImageOrVideo(imageUrl, false, accountViewModel) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChannelCardCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChannelCardCompose.kt index 6a7e79ad1..c6aef6fad 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChannelCardCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChannelCardCompose.kt @@ -770,7 +770,7 @@ fun RenderChannelThumb(baseNote: Note, channel: Channel, accountViewModel: Accou @OptIn(ExperimentalLayoutApi::class) @Composable fun Gallery(users: List, accountViewModel: AccountViewModel) { - FlowRow(verticalAlignment = CenterVertically) { + FlowRow(verticalArrangement = Arrangement.Center) { users.take(6).forEach { ClickableUserPicture(it, Size35dp, accountViewModel) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index 30de27007..971a4e26b 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -4,7 +4,7 @@ import android.content.Context import android.util.Log import android.widget.Toast import androidx.compose.animation.AnimatedContent -import androidx.compose.animation.AnimatedContentScope +import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.ContentTransform import androidx.compose.animation.Crossfade import androidx.compose.animation.ExperimentalAnimationApi @@ -610,14 +610,14 @@ private fun SlidingAnimationCount(baseCount: MutableState, textColor: Color private fun SlidingAnimationCount(baseCount: Int, textColor: Color) { AnimatedContent( targetState = baseCount, - transitionSpec = AnimatedContentScope::transitionSpec + transitionSpec = AnimatedContentTransitionScope::transitionSpec ) { count -> TextCount(count, textColor) } } @OptIn(ExperimentalAnimationApi::class) -private fun AnimatedContentScope.transitionSpec(): ContentTransform { +private fun AnimatedContentTransitionScope.transitionSpec(): ContentTransform { return slideAnimation } @@ -644,7 +644,7 @@ private fun TextCount(count: Int, textColor: Color) { private fun SlidingAnimationAmount(amount: MutableState, textColor: Color) { AnimatedContent( targetState = amount.value, - transitionSpec = AnimatedContentScope::transitionSpec + transitionSpec = AnimatedContentTransitionScope::transitionSpec ) { count -> Text( text = count, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RememberForeverStates.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RememberForeverStates.kt index 575646ca0..6d5c4ebf7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RememberForeverStates.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/RememberForeverStates.kt @@ -3,8 +3,10 @@ package com.vitorpamplona.amethyst.ui.screen import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.pager.PagerState +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import com.vitorpamplona.amethyst.ui.navigation.Route import kotlin.math.roundToInt @@ -61,17 +63,19 @@ fun rememberForeverLazyListState( fun rememberForeverPagerState( key: String, initialFirstVisibleItemIndex: Int = 0, - initialFirstVisibleItemScrollOffset: Float = 0.0f + initialFirstVisibleItemScrollOffset: Float = 0.0f, + pageCount: () -> Int ): PagerState { - val scrollState = rememberSaveable(saver = PagerState.Saver) { - val savedValue = savedScrollStates[key] - val savedIndex = savedValue?.index ?: initialFirstVisibleItemIndex - val savedOffset = savedValue?.scrollOffsetFraction ?: initialFirstVisibleItemScrollOffset - PagerState( - savedIndex, - savedOffset - ) - } + val savedValue = savedScrollStates[key] + val savedIndex = savedValue?.index ?: initialFirstVisibleItemIndex + val savedOffset = savedValue?.scrollOffsetFraction ?: initialFirstVisibleItemScrollOffset + + val scrollState = rememberPagerState( + savedIndex, + savedOffset, + pageCount + ) + DisposableEffect(scrollState) { onDispose { val lastIndex = scrollState.currentPage @@ -79,5 +83,6 @@ fun rememberForeverPagerState( savedScrollStates[key] = ScrollState(lastIndex, lastOffset) } } + return scrollState } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/BookmarkListScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/BookmarkListScreen.kt index 46f65e75c..a8040c539 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/BookmarkListScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/BookmarkListScreen.kt @@ -50,7 +50,7 @@ fun BookmarkListScreen(accountViewModel: AccountViewModel, nav: (String) -> Unit Column(Modifier.fillMaxHeight()) { Column(modifier = Modifier.padding(start = 10.dp, end = 10.dp)) { - val pagerState = rememberPagerState() + val pagerState = rememberPagerState() { 2 } val coroutineScope = rememberCoroutineScope() TabRow( @@ -73,7 +73,7 @@ fun BookmarkListScreen(accountViewModel: AccountViewModel, nav: (String) -> Unit } ) } - HorizontalPager(pageCount = 2, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> when (page) { 0 -> RefresheableFeedView( privateFeedViewModel, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt index 81c383229..39b60a649 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt @@ -57,7 +57,7 @@ fun ChatroomListScreen( accountViewModel: AccountViewModel, nav: (String) -> Unit ) { - val pagerState = rememberPagerState() + val pagerState = rememberPagerState() { 2 } val coroutineScope = rememberCoroutineScope() var moreActionsExpanded by remember { mutableStateOf(false) } @@ -136,7 +136,6 @@ fun ChatroomListScreen( } HorizontalPager( - pageCount = 2, state = pagerState, modifier = Modifier.fillMaxSize() ) { page -> diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/DiscoverScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/DiscoverScreen.kt index ed06371c8..65df80ee9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/DiscoverScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/DiscoverScreen.kt @@ -69,7 +69,17 @@ fun DiscoverScreen( ) { val lifeCycleOwner = LocalLifecycleOwner.current - val pagerState = rememberForeverPagerState(key = PagerStateKeys.DISCOVER_SCREEN) + val tabs by remember(discoveryLiveFeedViewModel, discoveryCommunityFeedViewModel, discoveryChatFeedViewModel) { + mutableStateOf( + listOf( + TabItem(R.string.discover_live, discoveryLiveFeedViewModel, Route.Discover.base + "Live", ScrollStateKeys.DISCOVER_LIVE, LiveActivitiesEvent.kind), + TabItem(R.string.discover_community, discoveryCommunityFeedViewModel, Route.Discover.base + "Community", ScrollStateKeys.DISCOVER_COMMUNITY, CommunityDefinitionEvent.kind), + TabItem(R.string.discover_chat, discoveryChatFeedViewModel, Route.Discover.base + "Chats", ScrollStateKeys.DISCOVER_CHATS, ChannelCreateEvent.kind) + ).toImmutableList() + ) + } + + val pagerState = rememberForeverPagerState(key = PagerStateKeys.DISCOVER_SCREEN) { tabs.size } WatchAccountForDiscoveryScreen( discoveryLiveFeedViewModel = discoveryLiveFeedViewModel, @@ -92,16 +102,6 @@ fun DiscoverScreen( } } - val tabs by remember(discoveryLiveFeedViewModel, discoveryCommunityFeedViewModel, discoveryChatFeedViewModel) { - mutableStateOf( - listOf( - TabItem(R.string.discover_live, discoveryLiveFeedViewModel, Route.Discover.base + "Live", ScrollStateKeys.DISCOVER_LIVE, LiveActivitiesEvent.kind), - TabItem(R.string.discover_community, discoveryCommunityFeedViewModel, Route.Discover.base + "Community", ScrollStateKeys.DISCOVER_COMMUNITY, CommunityDefinitionEvent.kind), - TabItem(R.string.discover_chat, discoveryChatFeedViewModel, Route.Discover.base + "Chats", ScrollStateKeys.DISCOVER_CHATS, ChannelCreateEvent.kind) - ).toImmutableList() - ) - } - Column(Modifier.fillMaxHeight()) { Column( modifier = Modifier.padding(vertical = 0.dp) @@ -139,7 +139,7 @@ private fun DiscoverPages( } } - HorizontalPager(pageCount = 3, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> RefresheableView(tabs[page].viewModel, true) { SaveableFeedState(tabs[page].viewModel, scrollStateKey = tabs[page].scrollStateKey) { listState -> RenderDiscoverFeed( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HiddenUsersScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HiddenUsersScreen.kt index 5d68bf472..7f78f7bbe 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HiddenUsersScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HiddenUsersScreen.kt @@ -78,7 +78,7 @@ fun HiddenUsersScreen( Column(Modifier.fillMaxHeight()) { Column(modifier = Modifier.padding(start = 10.dp, end = 10.dp)) { - val pagerState = rememberPagerState() + val pagerState = rememberPagerState() { 2 } val coroutineScope = rememberCoroutineScope() var warnAboutReports by remember { mutableStateOf(accountViewModel.account.warnAboutPostsWithReports) } var filterSpam by remember { mutableStateOf(accountViewModel.account.filterSpamFromStrangers) } @@ -129,7 +129,7 @@ fun HiddenUsersScreen( } ) } - HorizontalPager(pageCount = 2, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> when (page) { 0 -> RefreshingUserFeedView(hiddenFeedViewModel, accountViewModel, nav) 1 -> RefreshingUserFeedView(spammerFeedViewModel, accountViewModel, nav) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt index 73732e409..36de0257a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt @@ -56,7 +56,7 @@ fun HomeScreen( ) { var wantsToAddNip47 by remember(nip47) { mutableStateOf(nip47) } - val pagerState = rememberForeverPagerState(key = PagerStateKeys.HOME_SCREEN) + val pagerState = rememberForeverPagerState(key = PagerStateKeys.HOME_SCREEN) { 2 } WatchAccountForHomeScreen(homeFeedViewModel, repliesFeedViewModel, accountViewModel) @@ -124,7 +124,7 @@ private fun HomePages( } } - HorizontalPager(pageCount = 2, state = pagerState) { page -> + HorizontalPager(state = pagerState) { page -> RefresheableFeedView( viewModel = tabs[page].viewModel, routeForLastRead = tabs[page].routeForLastRead, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt index 2f3468937..1985b72b6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt @@ -308,7 +308,6 @@ private fun RenderSurface( columnSize = it } ) { - val pagerState = rememberPagerState() val coroutineScope = rememberCoroutineScope() val scrollState = rememberScrollState() @@ -347,7 +346,6 @@ private fun RenderSurface( ) { RenderScreen( baseUser, - pagerState, tabRowModifier, pagerModifier, threadsViewModel, @@ -370,7 +368,6 @@ private fun RenderSurface( @OptIn(ExperimentalFoundationApi::class) private fun RenderScreen( baseUser: User, - pagerState: PagerState, tabRowModifier: Modifier, pagerModifier: Modifier, threadsViewModel: NostrUserProfileNewThreadsFeedViewModel, @@ -384,6 +381,8 @@ private fun RenderScreen( accountViewModel: AccountViewModel, nav: (String) -> Unit ) { + val pagerState = rememberPagerState { 9 } + Column() { ProfileHeader(baseUser, appRecommendations, nav, accountViewModel) ScrollableTabRow( @@ -395,7 +394,6 @@ private fun RenderScreen( CreateAndRenderTabs(baseUser, pagerState) } HorizontalPager( - pageCount = 9, state = pagerState, modifier = pagerModifier ) { page -> @@ -1089,7 +1087,7 @@ private fun DisplayAppRecommendations( Text(stringResource(id = R.string.recommended_apps)) FlowRow( - verticalAlignment = Alignment.CenterVertically, + verticalArrangement = Arrangement.Center, modifier = Modifier.padding(vertical = 5.dp) ) { state.feed.value.forEach { app -> @@ -1174,7 +1172,7 @@ private fun RenderBadgeList( nav: (String) -> Unit ) { FlowRow( - verticalAlignment = Alignment.CenterVertically, + verticalArrangement = Arrangement.Center, modifier = Modifier.padding(vertical = 5.dp) ) { list.forEach { badgeAwardEvent -> diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt index 2195ee070..81643f5bc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.VerticalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.Icon import androidx.compose.material.IconButton import androidx.compose.material.MaterialTheme @@ -131,15 +132,7 @@ private fun SaveableFeedState( nav: (String) -> Unit, scrollStateKey: String? = null ) { - val pagerState = if (scrollStateKey != null) { - rememberForeverPagerState(scrollStateKey) - } else { - remember { PagerState() } - } - - WatchScrollToTop(videoFeedView, pagerState) - - RenderPage(videoFeedView, accountViewModel, pagerState, nav) + RenderPage(videoFeedView, accountViewModel, scrollStateKey, nav) } @OptIn(ExperimentalFoundationApi::class) @@ -163,7 +156,7 @@ public fun WatchScrollToTop( fun RenderPage( videoFeedView: NostrVideoFeedViewModel, accountViewModel: AccountViewModel, - pagerState: PagerState, + pagerStateKey: String?, nav: (String) -> Unit ) { val feedState by videoFeedView.feedContent.collectAsState() @@ -184,12 +177,7 @@ fun RenderPage( } is FeedState.Loaded -> { - SlidingCarousel( - state.feed, - pagerState, - accountViewModel, - nav - ) + LoadedState(state, pagerStateKey, videoFeedView, accountViewModel, nav) } is FeedState.Loading -> { @@ -201,6 +189,31 @@ fun RenderPage( } } +@Composable +@OptIn(ExperimentalFoundationApi::class) +private fun LoadedState( + state: FeedState.Loaded, + pagerStateKey: String?, + videoFeedView: NostrVideoFeedViewModel, + accountViewModel: AccountViewModel, + nav: (String) -> Unit +) { + val pagerState = if (pagerStateKey != null) { + rememberForeverPagerState(pagerStateKey) { state.feed.value.size } + } else { + rememberPagerState { state.feed.value.size } + } + + WatchScrollToTop(videoFeedView, pagerState) + + SlidingCarousel( + state.feed, + pagerState, + accountViewModel, + nav + ) +} + @OptIn(ExperimentalFoundationApi::class) @Composable fun SlidingCarousel( @@ -210,7 +223,6 @@ fun SlidingCarousel( nav: (String) -> Unit ) { VerticalPager( - pageCount = feed.value.size, state = pagerState, beyondBoundsPageCount = 1, modifier = Modifier.fillMaxSize(1f), diff --git a/build.gradle b/build.gradle index ceb00b794..ede08fdeb 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { ext { fragment_version = "1.6.1" lifecycle_version = '2.6.1' - compose_ui_version = '1.4.3' + compose_ui_version = '1.5.0' nav_version = "2.6.0" room_version = "2.4.3" accompanist_version = '0.30.1' @@ -12,6 +12,7 @@ buildscript { vico_version = '1.7.3' exoplayer_version = '1.1.0' media3_version = '1.1.0' + core_ktx_version = '1.10.1' } dependencies { classpath 'com.google.gms:google-services:4.3.15' diff --git a/quartz/build.gradle b/quartz/build.gradle index 916b6afdc..b3836de73 100644 --- a/quartz/build.gradle +++ b/quartz/build.gradle @@ -32,7 +32,7 @@ android { } dependencies { - implementation 'androidx.core:core-ktx:1.9.0' + implementation "androidx.core:core-ktx:$core_ktx_version" // @Immutable and @Stable implementation "androidx.compose.runtime:runtime:$compose_ui_version"