From 8c87c4a4dfb9b99ccd5902b629085b3191029bbb Mon Sep 17 00:00:00 2001 From: ComicSANS Date: Sun, 27 Oct 2024 16:33:18 +0300 Subject: [PATCH 1/5] Updated onboarding animation & refactored some composables --- .../modal/embedding/EmbeddingScreen.kt | 23 ++++++++++--- .../screen/onboarding/OnBoardingScreen.kt | 9 +++--- .../components/ConfigurationModeButton.kt | 32 ++++++++++++------- .../connectivity/ConnectivityComposable.kt | 5 +-- 4 files changed, 44 insertions(+), 25 deletions(-) diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt index 033dd6b0..1486eed1 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt @@ -34,6 +34,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity @@ -144,22 +146,33 @@ private fun ScreenContent( if (!state.loading && state.embeddings.isNotEmpty()) { Row( modifier = modifier - .padding(horizontal = 12.dp) .fillMaxWidth() .height(intrinsicSize = IntrinsicSize.Max) - .clip(RoundedCornerShape(16.dp)) - .background(color = bgColor) .onSizeChanged { if (it.height > dividerHeight) dividerHeight = it.height - }, + } + .drawBehind { + drawRoundRect( + color = bgColor, + cornerRadius = CornerRadius(16.dp.toPx()) + ) + } + .padding(horizontal = 12.dp), ) { + val selectorBgColor = + if (state.selector) MaterialTheme.colorScheme.primary else Color.Transparent Box( modifier = Modifier .fillMaxWidth() .height(with(LocalDensity.current) { dividerHeight.toDp() }) .weight(1f) .clip(RoundedCornerShape(16.dp)) - .background(color = if (state.selector) MaterialTheme.colorScheme.primary else Color.Transparent) + .drawBehind { + drawRoundRect( + color = selectorBgColor, + cornerRadius = CornerRadius(16.dp.toPx()) + ) + } .clickable { processIntent(EmbeddingIntent.ChangeSelector(true)) }, contentAlignment = Alignment.Center, ) { diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt index 863ebd2b..c22f2212 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt @@ -2,7 +2,6 @@ package com.shifthackz.aisdv1.presentation.screen.onboarding import androidx.activity.compose.BackHandler import androidx.compose.animation.core.animateFloatAsState -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -16,7 +15,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check @@ -36,14 +34,15 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.draw.rotate import androidx.compose.ui.unit.dp -import com.shifthackz.android.core.mvi.MviComponent import com.shifthackz.aisdv1.presentation.model.LaunchSource import com.shifthackz.aisdv1.presentation.screen.onboarding.page.FormPageContent import com.shifthackz.aisdv1.presentation.screen.onboarding.page.LocalDiffusionPageContent import com.shifthackz.aisdv1.presentation.screen.onboarding.page.LookAndFeelPageContent import com.shifthackz.aisdv1.presentation.screen.onboarding.page.ProviderPageContent +import com.shifthackz.android.core.mvi.MviComponent import kotlinx.coroutines.Job import kotlinx.coroutines.launch @@ -151,7 +150,9 @@ private fun OnBoardingScreenContent( Box( modifier = Modifier .size(8.dp) - .background(color, CircleShape) + .drawBehind { + drawCircle(color = color) + } ) } } diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/setup/components/ConfigurationModeButton.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/setup/components/ConfigurationModeButton.kt index 39da974d..cf3320cf 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/setup/components/ConfigurationModeButton.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/setup/components/ConfigurationModeButton.kt @@ -3,7 +3,6 @@ package com.shifthackz.aisdv1.presentation.screen.setup.components import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi @@ -24,7 +23,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.CornerRadius +import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign @@ -43,19 +44,23 @@ fun ConfigurationModeButton( mode: ServerSource, onClick: (ServerSource) -> Unit = {}, ) { + val bgColor = MaterialTheme.colorScheme.surfaceVariant + val borderColor = MaterialTheme.colorScheme.primary Column( modifier = modifier .clip(RoundedCornerShape(16.dp)) - .background( - color = MaterialTheme.colorScheme.surfaceVariant, - shape = RoundedCornerShape(16.dp), - ) - .border( - width = 2.dp, - shape = RoundedCornerShape(16.dp), - color = if (state.mode == mode) MaterialTheme.colorScheme.primary - else Color.Transparent, - ) + .drawBehind { + drawRoundRect( + color = bgColor, + cornerRadius = CornerRadius(16.dp.toPx()), + ) + if (state.mode != mode) return@drawBehind + drawRoundRect( + color = borderColor, + style = Stroke(2.dp.toPx()), + cornerRadius = CornerRadius(16.dp.toPx()), + ) + } .clickable { onClick(mode) } .padding(horizontal = 4.dp) .padding(bottom = 4.dp), @@ -68,12 +73,15 @@ fun ConfigurationModeButton( imageVector = when (mode) { ServerSource.AUTOMATIC1111, ServerSource.SWARM_UI -> Icons.Default.Computer + ServerSource.HORDE, ServerSource.OPEN_AI, ServerSource.STABILITY_AI, ServerSource.HUGGING_FACE -> Icons.Default.Cloud + ServerSource.LOCAL_MICROSOFT_ONNX, ServerSource.LOCAL_GOOGLE_MEDIA_PIPE -> Icons.Default.Android + else -> Icons.Default.QuestionMark }, contentDescription = null, diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/widget/connectivity/ConnectivityComposable.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/widget/connectivity/ConnectivityComposable.kt index 5862035d..28987940 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/widget/connectivity/ConnectivityComposable.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/widget/connectivity/ConnectivityComposable.kt @@ -95,9 +95,6 @@ private fun ConnectivityWidgetState( modifier = Modifier .drawWithCache { val brushSize = 40f - val brushDefault = Brush.linearGradient( - colors = listOf(uiColor, uiColor) - ) val brushAnimated = Brush.linearGradient( colors = listOf( Color.Transparent, @@ -110,8 +107,8 @@ private fun ConnectivityWidgetState( ) onDrawBehind { drawRoundRect( + color = uiColor, cornerRadius = CornerRadius(8.dp.toPx()), - brush = brushDefault, ) if (state !is ConnectivityState.Uninitialized) return@onDrawBehind drawRoundRect( From a190eda5ff7cee07a05db1f6c9c99ee4d746086d Mon Sep 17 00:00:00 2001 From: ComicSANS Date: Sun, 3 Nov 2024 17:14:46 +0300 Subject: [PATCH 2/5] Resolved PR comments & refactored some ui elements --- .../modal/embedding/EmbeddingScreen.kt | 32 ++++++++++++------ .../presentation/modal/extras/ExtrasScreen.kt | 33 ++++++++++++------- .../screen/donate/DonateScreen.kt | 25 ++++++++++---- 3 files changed, 61 insertions(+), 29 deletions(-) diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt index 1486eed1..04d69102 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/embedding/EmbeddingScreen.kt @@ -1,7 +1,5 @@ package com.shifthackz.aisdv1.presentation.modal.embedding -import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -37,6 +35,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource @@ -47,13 +46,13 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.shifthackz.aisdv1.core.extensions.shimmer -import com.shifthackz.android.core.mvi.MviComponent import com.shifthackz.aisdv1.domain.entity.ServerSource import com.shifthackz.aisdv1.presentation.modal.extras.ExtrasEffect import com.shifthackz.aisdv1.presentation.model.ErrorState import com.shifthackz.aisdv1.presentation.widget.error.ErrorComposable import com.shifthackz.aisdv1.presentation.widget.source.getName import com.shifthackz.aisdv1.presentation.widget.toolbar.ModalDialogToolbar +import com.shifthackz.android.core.mvi.MviComponent import org.koin.androidx.compose.koinViewModel import com.shifthackz.aisdv1.core.localization.R as LocalizationR import com.shifthackz.aisdv1.presentation.R as PresentationR @@ -188,7 +187,12 @@ private fun ScreenContent( .fillMaxWidth() .weight(1f) .clip(RoundedCornerShape(16.dp)) - .background(color = if (!state.selector) MaterialTheme.colorScheme.primary else Color.Transparent) + .drawBehind { + drawRoundRect( + color = selectorBgColor, + cornerRadius = CornerRadius(16.dp.toPx()) + ) + } .clickable { processIntent(EmbeddingIntent.ChangeSelector(false)) }, contentAlignment = Alignment.Center, ) { @@ -285,17 +289,25 @@ private fun EmbeddingItemComposable( onItemToggle: (EmbeddingItemUi) -> Unit, ) { val isApplied = (selector && item.isInPrompt) || (!selector && item.isInNegativePrompt) + val bgColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.5f) + val borderColor = MaterialTheme.colorScheme.primary Row( modifier = Modifier .padding(horizontal = 12.dp, vertical = 6.dp) .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) - .background(color = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.5f)) - .border( - width = 2.dp, - color = if (isApplied) MaterialTheme.colorScheme.primary else Color.Transparent, - shape = RoundedCornerShape(16.dp), - ) + .drawBehind { + drawRoundRect( + color = bgColor, + cornerRadius = CornerRadius(16.dp.toPx()), + ) + if (!isApplied) return@drawBehind + drawRoundRect( + color = borderColor, + style = Stroke(2.dp.toPx()), + cornerRadius = CornerRadius(16.dp.toPx()), + ) + } .clickable { onItemToggle(item) } .padding(vertical = 8.dp, horizontal = 12.dp), verticalAlignment = Alignment.CenterVertically, diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/extras/ExtrasScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/extras/ExtrasScreen.kt index b7c8ac65..ffa0c4db 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/extras/ExtrasScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/extras/ExtrasScreen.kt @@ -1,7 +1,5 @@ package com.shifthackz.aisdv1.presentation.modal.extras -import androidx.compose.foundation.background -import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -33,7 +31,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.CornerRadius +import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -42,13 +42,13 @@ import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import com.shifthackz.aisdv1.core.extensions.shimmer -import com.shifthackz.android.core.mvi.MviComponent import com.shifthackz.aisdv1.domain.entity.ServerSource import com.shifthackz.aisdv1.presentation.model.ErrorState import com.shifthackz.aisdv1.presentation.model.ExtraType import com.shifthackz.aisdv1.presentation.widget.error.ErrorComposable import com.shifthackz.aisdv1.presentation.widget.source.getName import com.shifthackz.aisdv1.presentation.widget.toolbar.ModalDialogToolbar +import com.shifthackz.android.core.mvi.MviComponent import org.koin.androidx.compose.koinViewModel import com.shifthackz.aisdv1.core.localization.R as LocalizationR @@ -174,8 +174,8 @@ private fun ScreenContent( ) { index -> ExtrasItemComposable( item = state.loras[index], - onLoraSelected = { - processIntent(ExtrasIntent.ToggleItem(it)) + onLoraSelected = { item -> + processIntent(ExtrasIntent.ToggleItem(item)) }, ) } @@ -204,6 +204,7 @@ private fun ExtrasEmptyState(type: ExtraType, source: ServerSource) { ServerSource.SWARM_UI -> "../Models/Lora" else -> "" } + ExtraType.HyperNet -> when (source) { ServerSource.AUTOMATIC1111 -> "../models/hypernetworks" ServerSource.SWARM_UI -> "" @@ -234,16 +235,24 @@ private fun ExtrasItemComposable( item: ExtraItemUi, onLoraSelected: (ExtraItemUi) -> Unit, ) { + val bgColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.5f) + val borderColor = MaterialTheme.colorScheme.primary Row( modifier = modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) - .background(color = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.5f)) - .border( - width = 2.dp, - color = if (item.isApplied) MaterialTheme.colorScheme.primary else Color.Transparent, - shape = RoundedCornerShape(16.dp), - ) + .drawBehind { + drawRoundRect( + color = bgColor, + cornerRadius = CornerRadius(16.dp.toPx()), + ) + if (!item.isApplied) return@drawBehind + drawRoundRect( + color = borderColor, + style = Stroke(2.dp.toPx()), + cornerRadius = CornerRadius(16.dp.toPx()), + ) + } .clickable { onLoraSelected(item) } .padding(16.dp), verticalAlignment = Alignment.CenterVertically, diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt index 3dccb61b..6a36dec5 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt @@ -5,7 +5,6 @@ package com.shifthackz.aisdv1.presentation.screen.donate import androidx.compose.animation.AnimatedContent import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -37,6 +36,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale @@ -48,9 +49,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.shifthackz.aisdv1.core.common.extensions.openUrl -import com.shifthackz.android.core.mvi.MviComponent import com.shifthackz.aisdv1.domain.entity.Supporter import com.shifthackz.aisdv1.presentation.widget.item.SupporterItem +import com.shifthackz.android.core.mvi.MviComponent import org.koin.androidx.compose.koinViewModel import java.util.Date import com.shifthackz.aisdv1.core.localization.R as LocalizationR @@ -104,12 +105,18 @@ private fun DonateScreenContent( topStart = 24.dp, topEnd = 24.dp, ) + val bottomBgColor = MaterialTheme.colorScheme.surface Column( modifier = Modifier .navigationBarsPadding() .fillMaxWidth() - .background(MaterialTheme.colorScheme.surface, shape) .clip(shape) + .drawBehind { + drawRoundRect( + color = bottomBgColor, + cornerRadius = CornerRadius(24.dp.toPx()), + ) + } .padding(horizontal = 16.dp) ) { Row( @@ -200,12 +207,16 @@ private fun DonateScreenContent( MaterialTheme.colorScheme.surfaceTint.copy(alpha = 0.8f) SupporterItem( modifier = Modifier + .fillMaxWidth() + .clip(shape) + .drawBehind { + drawRoundRect( + color = bgColor, + cornerRadius = CornerRadius(12.dp.toPx()), + ) } .padding(horizontal = 12.dp) .padding(top = if (index == 0) 8.dp else 4.dp) - .padding(bottom = 4.dp) - .fillMaxWidth() - .background(bgColor, shape) - .clip(shape), + .padding(bottom = 4.dp), supporter = supporter, ) } From fb990cce37b99c5e671bb31fe491805ba2d2a780 Mon Sep 17 00:00:00 2001 From: ComicSANS Date: Sun, 17 Nov 2024 12:48:16 +0300 Subject: [PATCH 3/5] Resolved rebase conflicts & updated onboarding animation + donate screen ui --- .../presentation/screen/donate/DonateScreen.kt | 15 +++++++++------ .../screen/onboarding/OnBoardingScreen.kt | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt index 6a36dec5..b1483dd3 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/donate/DonateScreen.kt @@ -208,15 +208,18 @@ private fun DonateScreenContent( SupporterItem( modifier = Modifier .fillMaxWidth() + .padding( + top = if (index == 0) 8.dp else 4.dp, + bottom = 4.dp, + ) + .padding(horizontal = 12.dp) .clip(shape) .drawBehind { drawRoundRect( - color = bgColor, - cornerRadius = CornerRadius(12.dp.toPx()), - ) } - .padding(horizontal = 12.dp) - .padding(top = if (index == 0) 8.dp else 4.dp) - .padding(bottom = 4.dp), + color = bgColor, + cornerRadius = CornerRadius(12.dp.toPx()), + ) + }, supporter = supporter, ) } diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt index c22f2212..cd43156e 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt @@ -77,6 +77,7 @@ private fun OnBoardingScreenContent( fun scrollToPage(page: Int) { if (scrollAnimationJob != null) return + if (pagerState.isScrollInProgress) return scrollAnimationJob = scope.launch { pagerState.animateScrollToPage( page = page, From 0bb0a2425d1d900a62027698b865621acb7431d3 Mon Sep 17 00:00:00 2001 From: ComicSANS Date: Sun, 17 Nov 2024 13:30:26 +0300 Subject: [PATCH 4/5] Updated onboarding animation --- .../aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt index cd43156e..39ff42e8 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt @@ -86,7 +86,7 @@ private fun OnBoardingScreenContent( }.apply { invokeOnCompletion { scrollAnimationJob = null } } } - BackHandler(pagerState.currentPage > 0) { + BackHandler(pagerState.currentPage > 0 || pagerState.isScrollInProgress) { scrollToPage(pagerState.currentPage - 1) } @@ -127,7 +127,7 @@ private fun OnBoardingScreenContent( onClick = { if (pagerState.currentPage > 0) { scrollToPage(pagerState.currentPage - 1) - } else if (pagerState.currentPage == 0 && launchSource == LaunchSource.SETTINGS) { + } else if (pagerState.currentPage == 0 && launchSource == LaunchSource.SETTINGS && !pagerState.isScrollInProgress) { processIntent(OnBoardingIntent.Navigate) } }, From 6e05ced51dc9c8e5f29caaa805fe9540422064e5 Mon Sep 17 00:00:00 2001 From: ComicSANS Date: Sun, 17 Nov 2024 13:33:13 +0300 Subject: [PATCH 5/5] Updated onboarding animation --- .../aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt index 39ff42e8..2352d6bf 100644 --- a/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt +++ b/presentation/src/main/java/com/shifthackz/aisdv1/presentation/screen/onboarding/OnBoardingScreen.kt @@ -163,7 +163,7 @@ private fun OnBoardingScreenContent( shape = RoundedCornerShape(12.dp), contentPadding = PaddingValues(0.dp), onClick = { - if (pagerState.currentPage == OnBoardingPage.entries.size - 1) { + if (pagerState.currentPage == OnBoardingPage.entries.size - 1 && !pagerState.isScrollInProgress) { processIntent(OnBoardingIntent.Navigate) } else { scrollToPage(pagerState.currentPage + 1)