@@ -34,6 +34,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
3434import androidx.compose.runtime.Composable
3535import androidx.compose.runtime.LaunchedEffect
3636import androidx.compose.runtime.remember
37+ import androidx.compose.runtime.rememberCoroutineScope
3738import androidx.compose.ui.Modifier
3839import androidx.compose.ui.focus.FocusRequester
3940import androidx.compose.ui.focus.focusRequester
@@ -63,13 +64,17 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar
6364import io.element.android.libraries.matrix.api.poll.PollKind
6465import io.element.android.libraries.theme.ElementTheme
6566import io.element.android.libraries.ui.strings.CommonStrings
67+ import kotlinx.coroutines.Dispatchers
68+ import kotlinx.coroutines.launch
6669
6770@OptIn(ExperimentalMaterial3Api ::class )
6871@Composable
6972fun CreatePollView (
7073 state : CreatePollState ,
7174 modifier : Modifier = Modifier ,
7275) {
76+ val coroutineScope = rememberCoroutineScope()
77+
7378 val navBack = { state.eventSink(CreatePollEvents .ConfirmNavBack ) }
7479 BackHandler (onBack = navBack)
7580 if (state.showConfirmation) ConfirmationDialog (
@@ -142,7 +147,6 @@ fun CreatePollView(
142147 }
143148 itemsIndexed(state.answers) { index, answer ->
144149 val isLastItem = index == state.answers.size - 1
145- val hasAdditionalOptions = state.answers.size > 2
146150 ListItem (
147151 headlineContent = {
148152 OutlinedTextField (
@@ -170,10 +174,6 @@ fun CreatePollView(
170174 },
171175 style = if (answer.canDelete) ListItemStyle .Destructive else ListItemStyle .Default ,
172176 )
173- LaunchedEffect (isLastItem, hasAdditionalOptions) {
174- lazyListState.animateScrollToItem(state.answers.size + 1 )
175- if (isLastItem && hasAdditionalOptions) answerFocusRequester.requestFocus()
176- }
177177 }
178178 if (state.canAddAnswer) {
179179 item {
@@ -183,7 +183,13 @@ fun CreatePollView(
183183 iconSource = IconSource .Vector (Icons .Default .Add ),
184184 ),
185185 style = ListItemStyle .Primary ,
186- onClick = { state.eventSink(CreatePollEvents .AddAnswer ) },
186+ onClick = {
187+ state.eventSink(CreatePollEvents .AddAnswer )
188+ coroutineScope.launch(Dispatchers .Main ) {
189+ lazyListState.animateScrollToItem(state.answers.size + 1 )
190+ answerFocusRequester.requestFocus()
191+ }
192+ },
187193 )
188194 }
189195 }
0 commit comments