move pollOptions list to pollViewModel,

add/delete poll options functionality,
don't allow deleting first 2 poll options
This commit is contained in:
toadlyBroodle 2023-03-16 19:06:00 +09:00
parent 63ad7fd205
commit 107e09aefb
3 changed files with 29 additions and 30 deletions

View File

@ -39,8 +39,6 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n
val scrollState = rememberScrollState()
var pollOptionList = listOf<String>()
LaunchedEffect(Unit) {
pollViewModel.load(account, baseReplyTo, quote)
delay(100)
@ -113,10 +111,11 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n
Text(stringResource(R.string.poll_heading_required))
PollRecipientsField()
PollPrimaryDescription(pollViewModel = pollViewModel)
PollOption(0)
PollOption(1)
pollViewModel.pollOptions.forEachIndexed { index, element ->
PollOption(pollViewModel, index)
}
Button(
onClick = { /*TODO*/ },
onClick = { pollViewModel.pollOptions.add("") },
border = BorderStroke(1.dp, MaterialTheme.colors.onSurface.copy(alpha = 0.32f)),
colors = ButtonDefaults.outlinedButtonColors(
contentColor = MaterialTheme.colors.onSurface.copy(alpha = 0.32f)

View File

@ -1,5 +1,6 @@
package com.vitorpamplona.amethyst.ui.actions
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.ui.text.input.TextFieldValue
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.Note
@ -7,6 +8,8 @@ import com.vitorpamplona.amethyst.model.User
class NewPollViewModel : NewPostViewModel() {
var pollOptions = mutableStateListOf("", "")
override fun load(account: Account, replyingTo: Note?, quote: Note?) {
super.load(account, replyingTo, quote)
}

View File

@ -8,25 +8,20 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.actions.NewPollViewModel
@Composable
fun PollOption(optionIndex: Int) {
var text by rememberSaveable() { mutableStateOf("") }
fun PollOption(pollViewModel: NewPollViewModel, optionIndex: Int) {
Row() {
OutlinedTextField(
value = text,
onValueChange = { text = it },
value = pollViewModel.pollOptions[optionIndex],
onValueChange = { pollViewModel.pollOptions[optionIndex] = it },
label = {
Text(
text = stringResource(R.string.poll_option_index).format(optionIndex),
@ -41,21 +36,23 @@ fun PollOption(optionIndex: Int) {
}
)
Button(
modifier = Modifier
.padding(start = 6.dp, top = 2.dp)
.imePadding(),
onClick = { /*TODO*/ },
border = BorderStroke(1.dp, MaterialTheme.colors.onSurface.copy(alpha = 0.32f)),
colors = ButtonDefaults.outlinedButtonColors(
contentColor = MaterialTheme.colors.onSurface.copy(alpha = 0.32f)
)
) {
Image(
painterResource(id = android.R.drawable.ic_delete),
contentDescription = "Remove poll option button",
modifier = Modifier.size(18.dp)
)
if (optionIndex > 1) {
Button(
modifier = Modifier
.padding(start = 6.dp, top = 2.dp)
.imePadding(),
onClick = { pollViewModel.pollOptions.removeAt(optionIndex) },
border = BorderStroke(1.dp, MaterialTheme.colors.onSurface.copy(alpha = 0.32f)),
colors = ButtonDefaults.outlinedButtonColors(
contentColor = MaterialTheme.colors.onSurface.copy(alpha = 0.32f)
)
) {
Image(
painterResource(id = android.R.drawable.ic_delete),
contentDescription = "Remove poll option button",
modifier = Modifier.size(18.dp)
)
}
}
}
}
@ -63,5 +60,5 @@ fun PollOption(optionIndex: Int) {
@Preview
@Composable
fun PollOptionPreview() {
PollOption(0)
PollOption(NewPollViewModel(), 0)
}