From bd37e4a9dfe022918670a2d144181279147d9b43 Mon Sep 17 00:00:00 2001 From: toadlyBroodle Date: Mon, 20 Mar 2023 10:20:39 +0900 Subject: [PATCH] fix add new poll option button onclick, prefix all poll composables with 'New', move all poll composables to actions folder, move jsonToPollOptions parser to PollNoteEvent --- .../amethyst/service/model/PollNoteEvent.kt | 10 ++++++++-- .../PollClosing.kt => actions/NewPollClosing.kt} | 6 +++--- .../NewPollConsensusThreshold.kt} | 6 +++--- .../PollOption.kt => actions/NewPollOption.kt} | 9 ++++----- .../NewPollPrimaryDescription.kt} | 2 +- .../NewPollRecipientsField.kt} | 2 +- .../amethyst/ui/actions/NewPollView.kt | 14 +++++++------- .../amethyst/ui/actions/NewPollViewModel.kt | 10 ---------- .../NewPollVoteValueRange.kt} | 6 +++--- 9 files changed, 30 insertions(+), 35 deletions(-) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollClosing.kt => actions/NewPollClosing.kt} (95%) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollConsensusThreshold.kt => actions/NewPollConsensusThreshold.kt} (94%) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollOption.kt => actions/NewPollOption.kt} (91%) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollPrimaryDescription.kt => actions/NewPollPrimaryDescription.kt} (97%) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollRecipientsField.kt => actions/NewPollRecipientsField.kt} (94%) rename app/src/main/java/com/vitorpamplona/amethyst/ui/{components/PollVoteValueRange.kt => actions/NewPollVoteValueRange.kt} (97%) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt index 91215db12..db0608076 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/model/PollNoteEvent.kt @@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.service.model import com.vitorpamplona.amethyst.model.HexKey import com.vitorpamplona.amethyst.model.toHexKey import nostr.postr.Utils +import org.json.JSONObject import java.util.Date const val POLL_OPTIONS = "poll_options" @@ -73,8 +74,13 @@ class PollNoteEvent( return PollNoteEvent(id.toHexKey(), pubKey, createdAt, tags, msg, sig.toHexKey()) } - fun parseJsonPollOptions(s: String): Map { - return gson.fromJson>(s, MutableMap::class.java) + fun jsonToPollOptions(jsonString: String): Map { + val jsonMap = mutableMapOf() + val jsonObject = JSONObject(jsonString) + jsonObject.keys().forEach { + jsonMap[it.toString().toInt()] = jsonObject.getString(it) + } + return jsonMap } } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollClosing.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollClosing.kt similarity index 95% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollClosing.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollClosing.kt index c35b5faa7..ec4b7d631 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollClosing.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollClosing.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.ui.actions.NewPollViewModel @Composable -fun PollClosing(pollViewModel: NewPollViewModel) { +fun NewPollClosing(pollViewModel: NewPollViewModel) { var text by rememberSaveable { mutableStateOf("") } pollViewModel.isValidClosedAt.value = true @@ -74,6 +74,6 @@ fun PollClosing(pollViewModel: NewPollViewModel) { @Preview @Composable -fun PollClosingPreview() { - PollClosing(NewPollViewModel()) +fun NewPollClosingPreview() { + NewPollClosing(NewPollViewModel()) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollConsensusThreshold.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollConsensusThreshold.kt similarity index 94% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollConsensusThreshold.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollConsensusThreshold.kt index bb8e3d42a..21e346f43 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollConsensusThreshold.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollConsensusThreshold.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.ui.actions.NewPollViewModel @Composable -fun PollConsensusThreshold(pollViewModel: NewPollViewModel) { +fun NewPollConsensusThreshold(pollViewModel: NewPollViewModel) { var text by rememberSaveable { mutableStateOf("") } pollViewModel.isValidConsensusThreshold.value = true @@ -74,6 +74,6 @@ fun PollConsensusThreshold(pollViewModel: NewPollViewModel) { @Preview @Composable -fun PollConsensusThresholdPreview() { - PollConsensusThreshold(NewPollViewModel()) +fun NewPollConsensusThresholdPreview() { + NewPollConsensusThreshold(NewPollViewModel()) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollOption.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt similarity index 91% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollOption.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt index 0e275ecc7..c96af2a23 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollOption.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollOption.kt @@ -1,4 +1,4 @@ -package com.vitorpamplona.amethyst.ui.components +package com.vitorpamplona.amethyst.ui.actions import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image @@ -12,10 +12,9 @@ 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(pollViewModel: NewPollViewModel, optionIndex: Int) { +fun NewPollOption(pollViewModel: NewPollViewModel, optionIndex: Int) { val colorInValid = TextFieldDefaults.outlinedTextFieldColors( focusedBorderColor = MaterialTheme.colors.error, unfocusedBorderColor = Color.Red @@ -68,6 +67,6 @@ fun PollOption(pollViewModel: NewPollViewModel, optionIndex: Int) { @Preview @Composable -fun PollOptionPreview() { - PollOption(NewPollViewModel(), 0) +fun NewPollOptionPreview() { + NewPollOption(NewPollViewModel(), 0) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollPrimaryDescription.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollPrimaryDescription.kt similarity index 97% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollPrimaryDescription.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollPrimaryDescription.kt index e68896f40..1084cf41c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollPrimaryDescription.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollPrimaryDescription.kt @@ -22,7 +22,7 @@ import com.vitorpamplona.amethyst.ui.actions.UrlUserTagTransformation @OptIn(ExperimentalComposeUiApi::class) @Composable -fun PollPrimaryDescription(pollViewModel: NewPollViewModel) { +fun NewPollPrimaryDescription(pollViewModel: NewPollViewModel) { // initialize focus reference to be able to request focus programmatically val focusRequester = remember { FocusRequester() } val keyboardController = LocalSoftwareKeyboardController.current diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollRecipientsField.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollRecipientsField.kt similarity index 94% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollRecipientsField.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollRecipientsField.kt index 4498d2ad6..c8aac5cfc 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollRecipientsField.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollRecipientsField.kt @@ -12,7 +12,7 @@ import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.actions.NewPollViewModel @Composable -fun PollRecipientsField(pollViewModel: NewPollViewModel, account: Account) { +fun NewPollRecipientsField(pollViewModel: NewPollViewModel, account: Account) { // if no recipients, add user's pubkey if (pollViewModel.zapRecipients.isEmpty()) { pollViewModel.zapRecipients.add(account.userProfile().pubkeyHex) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt index ddab2e4fa..275948e69 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollView.kt @@ -114,13 +114,13 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n } Text(stringResource(R.string.poll_heading_required)) - PollRecipientsField(pollViewModel, account) - PollPrimaryDescription(pollViewModel) + NewPollRecipientsField(pollViewModel, account) + NewPollPrimaryDescription(pollViewModel) pollViewModel.pollOptions.values.forEachIndexed { index, element -> - PollOption(pollViewModel, index) + NewPollOption(pollViewModel, index) } Button( - onClick = { pollViewModel.pollOptions.values.add("") }, + onClick = { pollViewModel.pollOptions[pollViewModel.pollOptions.size] = "" }, border = BorderStroke(1.dp, MaterialTheme.colors.onSurface.copy(alpha = 0.32f)), colors = ButtonDefaults.outlinedButtonColors( contentColor = MaterialTheme.colors.onSurface.copy(alpha = 0.32f) @@ -133,9 +133,9 @@ fun NewPollView(onClose: () -> Unit, baseReplyTo: Note? = null, quote: Note? = n ) } Text(stringResource(R.string.poll_heading_optional)) - PollVoteValueRange(pollViewModel) - PollConsensusThreshold(pollViewModel) - PollClosing(pollViewModel) + NewPollVoteValueRange(pollViewModel) + NewPollConsensusThreshold(pollViewModel) + NewPollClosing(pollViewModel) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollViewModel.kt index 2f256b8b3..b4c7f5f4c 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollViewModel.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.text.input.TextFieldValue import com.vitorpamplona.amethyst.model.* import com.vitorpamplona.amethyst.service.nip19.Nip19 -import org.json.JSONObject class NewPollViewModel : NewPostViewModel() { @@ -135,12 +134,3 @@ class NewPollViewModel : NewPostViewModel() { closedAt = null } } - -fun jsonToPollOptions(jsonString: String): Map { - val jsonMap = mutableMapOf() - val jsonObject = JSONObject(jsonString) - jsonObject.keys().forEach { - jsonMap[it.toString().toInt()] = jsonObject.getString(it) - } - return jsonMap -} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollVoteValueRange.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollVoteValueRange.kt similarity index 97% rename from app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollVoteValueRange.kt rename to app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollVoteValueRange.kt index 598290bf7..3c4ec0908 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/PollVoteValueRange.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPollVoteValueRange.kt @@ -24,7 +24,7 @@ import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.ui.actions.NewPollViewModel @Composable -fun PollVoteValueRange(pollViewModel: NewPollViewModel) { +fun NewPollVoteValueRange(pollViewModel: NewPollViewModel) { var textMax by rememberSaveable { mutableStateOf("") } var textMin by rememberSaveable { mutableStateOf("") } @@ -122,6 +122,6 @@ fun PollVoteValueRange(pollViewModel: NewPollViewModel) { @Preview @Composable -fun PollVoteValueRangePreview() { - PollVoteValueRange(NewPollViewModel()) +fun NewPollVoteValueRangePreview() { + NewPollVoteValueRange(NewPollViewModel()) }