mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2024-10-01 17:30:50 +00:00
save draft when changing options from polls and classifieds
This commit is contained in:
parent
a2316b6ed0
commit
27db2b91ab
@ -34,8 +34,11 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.vitorpamplona.amethyst.R
|
||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@Composable
|
||||
fun NewPollOption(
|
||||
@ -45,7 +48,12 @@ fun NewPollOption(
|
||||
Row {
|
||||
val deleteIcon: @Composable (() -> Unit) = {
|
||||
IconButton(
|
||||
onClick = { pollViewModel.pollOptions.remove(optionIndex) },
|
||||
onClick = {
|
||||
pollViewModel.pollOptions.remove(optionIndex)
|
||||
pollViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
pollViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Delete,
|
||||
@ -57,7 +65,12 @@ fun NewPollOption(
|
||||
OutlinedTextField(
|
||||
modifier = Modifier.weight(1F),
|
||||
value = pollViewModel.pollOptions[optionIndex] ?: "",
|
||||
onValueChange = { pollViewModel.pollOptions[optionIndex] = it },
|
||||
onValueChange = {
|
||||
pollViewModel.pollOptions[optionIndex] = it
|
||||
pollViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
pollViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
label = {
|
||||
Text(
|
||||
text = stringResource(R.string.poll_option_index).format(optionIndex + 1),
|
||||
|
@ -119,6 +119,7 @@ import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.compose.ui.window.DialogProperties
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import coil.compose.AsyncImage
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
@ -596,6 +597,9 @@ private fun BottomRowActions(postViewModel: NewPostViewModel) {
|
||||
|
||||
MarkAsSensitive(postViewModel) {
|
||||
postViewModel.wantsToMarkAsSensitive = !postViewModel.wantsToMarkAsSensitive
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
}
|
||||
|
||||
AddGeoHash(postViewModel) {
|
||||
@ -841,7 +845,12 @@ fun SellProduct(postViewModel: NewPostViewModel) {
|
||||
|
||||
MyTextField(
|
||||
value = postViewModel.title,
|
||||
onValueChange = { postViewModel.title = it },
|
||||
onValueChange = {
|
||||
postViewModel.title = it
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
placeholder = {
|
||||
Text(
|
||||
@ -884,6 +893,9 @@ fun SellProduct(postViewModel: NewPostViewModel) {
|
||||
postViewModel.price = it
|
||||
}
|
||||
}
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
placeholder = {
|
||||
Text(
|
||||
@ -948,7 +960,12 @@ fun SellProduct(postViewModel: NewPostViewModel) {
|
||||
TextSpinner(
|
||||
placeholder = conditionTypes.filter { it.first == postViewModel.condition }.first().second,
|
||||
options = conditionOptions,
|
||||
onSelect = { postViewModel.condition = conditionTypes[it].first },
|
||||
onSelect = {
|
||||
postViewModel.condition = conditionTypes[it].first
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
modifier =
|
||||
Modifier
|
||||
.weight(1f)
|
||||
@ -1012,7 +1029,12 @@ fun SellProduct(postViewModel: NewPostViewModel) {
|
||||
categoryTypes.filter { it.second == postViewModel.category.text }.firstOrNull()?.second
|
||||
?: "",
|
||||
options = categoryOptions,
|
||||
onSelect = { postViewModel.category = TextFieldValue(categoryTypes[it].second) },
|
||||
onSelect = {
|
||||
postViewModel.category = TextFieldValue(categoryTypes[it].second)
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
modifier =
|
||||
Modifier
|
||||
.weight(1f)
|
||||
@ -1047,7 +1069,12 @@ fun SellProduct(postViewModel: NewPostViewModel) {
|
||||
|
||||
MyTextField(
|
||||
value = postViewModel.locationText,
|
||||
onValueChange = { postViewModel.locationText = it },
|
||||
onValueChange = {
|
||||
postViewModel.locationText = it
|
||||
postViewModel.viewModelScope.launch(Dispatchers.IO) {
|
||||
postViewModel.saveDraft()
|
||||
}
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
placeholder = {
|
||||
Text(
|
||||
|
@ -1134,6 +1134,9 @@ open class NewPostViewModel() : ViewModel() {
|
||||
}
|
||||
|
||||
checkMinMax()
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
saveDraft()
|
||||
}
|
||||
}
|
||||
|
||||
fun updateMaxZapAmountForPoll(textMax: String) {
|
||||
@ -1153,6 +1156,9 @@ open class NewPostViewModel() : ViewModel() {
|
||||
}
|
||||
|
||||
checkMinMax()
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
saveDraft()
|
||||
}
|
||||
}
|
||||
|
||||
fun checkMinMax() {
|
||||
|
Loading…
Reference in New Issue
Block a user