Skip to content

Commit f98fce3

Browse files
committed
Re-integrate TextPrompt workaround from #112.
1 parent 0e1d4ba commit f98fce3

File tree

1 file changed

+27
-14
lines changed
  • feature/creation/src/main/java/com/android/developers/androidify/creation

1 file changed

+27
-14
lines changed

feature/creation/src/main/java/com/android/developers/androidify/creation/PromptTypePager.kt

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import androidx.compose.foundation.layout.padding
3535
import androidx.compose.foundation.layout.width
3636
import androidx.compose.foundation.pager.HorizontalPager
3737
import androidx.compose.foundation.pager.PagerScope
38+
import androidx.compose.foundation.pager.PagerState
3839
import androidx.compose.foundation.pager.rememberPagerState
3940
import androidx.compose.material3.ExperimentalMaterial3Api
4041
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
@@ -46,6 +47,9 @@ import androidx.compose.material3.ToggleButton
4647
import androidx.compose.material3.ToggleButtonDefaults
4748
import androidx.compose.runtime.Composable
4849
import androidx.compose.runtime.LaunchedEffect
50+
import androidx.compose.runtime.derivedStateOf
51+
import androidx.compose.runtime.getValue
52+
import androidx.compose.runtime.remember
4953
import androidx.compose.runtime.snapshotFlow
5054
import androidx.compose.ui.Modifier
5155
import androidx.compose.ui.platform.LocalFocusManager
@@ -68,8 +72,8 @@ fun MainCreationPane(
6872
onSelectedPromptOptionChanged: (PromptType) -> Unit,
6973
onDropCallback: (Uri) -> Unit,
7074
) {
71-
PromptTypePager(modifier, uiState, onSelectedPromptOptionChanged) {
72-
when (it) {
75+
PromptTypePager(modifier, uiState, onSelectedPromptOptionChanged) { promptType, pagerState ->
76+
when (promptType) {
7377
PromptType.PHOTO -> {
7478
PhotoPrompt(
7579
uiState = uiState,
@@ -82,16 +86,25 @@ fun MainCreationPane(
8286
}
8387

8488
PromptType.TEXT -> {
85-
TextPrompt(
86-
textFieldState = uiState.descriptionText,
87-
promptGenerationInProgress = uiState.promptGenerationInProgress,
88-
generatedPrompt = uiState.generatedPrompt,
89-
onPromptGenerationPressed = onPromptGenerationPressed,
90-
modifier = Modifier
91-
.fillMaxSize()
92-
.heightIn(min = 200.dp)
93-
.padding(2.dp),
94-
)
89+
// Workaround for https://issuetracker.google.com/432431393
90+
val showTextPrompt by remember {
91+
derivedStateOf {
92+
pagerState.currentPage == PromptType.TEXT.ordinal
93+
&& pagerState.targetPage == pagerState.currentPage
94+
}
95+
}
96+
if (showTextPrompt) {
97+
TextPrompt(
98+
textFieldState = uiState.descriptionText,
99+
promptGenerationInProgress = uiState.promptGenerationInProgress,
100+
generatedPrompt = uiState.generatedPrompt,
101+
onPromptGenerationPressed = onPromptGenerationPressed,
102+
modifier = Modifier
103+
.fillMaxSize()
104+
.heightIn(min = 200.dp)
105+
.padding(2.dp),
106+
)
107+
}
95108
}
96109
}
97110
}
@@ -102,7 +115,7 @@ private fun PromptTypePager(
102115
modifier: Modifier = Modifier,
103116
uiState: CreationState,
104117
onSelectedPromptOptionChanged: (PromptType) -> Unit,
105-
content: @Composable PagerScope.(PromptType) -> Unit,
118+
content: @Composable PagerScope.(PromptType, PagerState) -> Unit,
106119
) {
107120
Box(
108121
modifier = modifier,
@@ -141,7 +154,7 @@ private fun PromptTypePager(
141154
pageSpacing = 16.dp,
142155
contentPadding = PaddingValues(16.dp),
143156
pageContent = {
144-
content(this, PromptType.entries[it])
157+
content(this, PromptType.entries[it], pagerState)
145158
},
146159
)
147160
}

0 commit comments

Comments
 (0)